Merge pull request #148 from googlei18n/opensource_update_28853
(AUTOMATIC) opensource update
diff --git a/cpp/include/libaddressinput/localization.h b/cpp/include/libaddressinput/localization.h
index 85b1b76..0fa5244 100644
--- a/cpp/include/libaddressinput/localization.h
+++ b/cpp/include/libaddressinput/localization.h
@@ -79,7 +79,6 @@
// service URL. The problem should only be one of MISSING_REQUIRED_FIELD,
// INVALID_FORMAT, or MISMATCHING_VALUE.
std::string GetErrorMessageForPostalCode(
- const AddressData& address,
AddressProblem problem,
bool uses_postal_code_as_label,
const std::string& postal_code_example,
diff --git a/cpp/include/libaddressinput/null_storage.h b/cpp/include/libaddressinput/null_storage.h
index feb6d5b..9e36c9d 100644
--- a/cpp/include/libaddressinput/null_storage.h
+++ b/cpp/include/libaddressinput/null_storage.h
@@ -32,13 +32,13 @@
NullStorage& operator=(const NullStorage&) = delete;
NullStorage();
- virtual ~NullStorage();
+ ~NullStorage() override;
// No-op.
- virtual void Put(const std::string& key, std::string* data);
+ void Put(const std::string& key, std::string* data) override;
// Always calls the |data_ready| callback function signalling failure.
- virtual void Get(const std::string& key, const Callback& data_ready) const;
+ void Get(const std::string& key, const Callback& data_ready) const override;
};
} // namespace addressinput
diff --git a/cpp/include/libaddressinput/ondemand_supplier.h b/cpp/include/libaddressinput/ondemand_supplier.h
index 763058a..37c2401 100644
--- a/cpp/include/libaddressinput/ondemand_supplier.h
+++ b/cpp/include/libaddressinput/ondemand_supplier.h
@@ -50,10 +50,13 @@
// Takes ownership of |source| and |storage|.
OndemandSupplier(const Source* source, Storage* storage);
- virtual ~OndemandSupplier();
+ ~OndemandSupplier() override;
// Loads the metadata needed for |lookup_key|, then calls |supplied|.
- virtual void Supply(const LookupKey& lookup_key, const Callback& supplied);
+ void Supply(const LookupKey& lookup_key, const Callback& supplied) override;
+ // For now, this is identical to Supply.
+ void SupplyGlobally(const LookupKey& lookup_key,
+ const Callback& supplied) override;
private:
const std::unique_ptr<const Retriever> retriever_;
diff --git a/cpp/include/libaddressinput/preload_supplier.h b/cpp/include/libaddressinput/preload_supplier.h
index e538b6f..50309ae 100644
--- a/cpp/include/libaddressinput/preload_supplier.h
+++ b/cpp/include/libaddressinput/preload_supplier.h
@@ -56,13 +56,19 @@
// Takes ownership of |source| and |storage|.
PreloadSupplier(const Source* source, Storage* storage);
- virtual ~PreloadSupplier();
+ ~PreloadSupplier() override;
// Collects the metadata needed for |lookup_key| from the cache, then calls
// |supplied|. If the metadata needed isn't found in the cache, it will call
// the callback with status false.
- virtual void Supply(const LookupKey& lookup_key,
- const Supplier::Callback& supplied);
+ void Supply(const LookupKey& lookup_key,
+ const Supplier::Callback& supplied) override;
+
+ // Collects the metadata needed for |lookup_key| from the cache, by looking at
+ // all available languages, then calls |supplied|. If the metadata needed
+ // isn't found in the cache, it will call the callback with status false.
+ void SupplyGlobally(const LookupKey& lookup_key,
+ const Supplier::Callback& supplied) override;
// Should be called only when IsLoaded() returns true for the region code of
// the |lookup_key|. Can return nullptr if the |lookup_key| does not
@@ -85,14 +91,15 @@
bool IsPending(const std::string& region_code) const;
private:
- bool GetRuleHierarchy(const LookupKey& lookup_key,
- RuleHierarchy* hierarchy) const;
+ bool GetRuleHierarchy(const LookupKey& lookup_key, RuleHierarchy* hierarchy,
+ const bool search_globally) const;
bool IsLoadedKey(const std::string& key) const;
bool IsPendingKey(const std::string& key) const;
const std::unique_ptr<const Retriever> retriever_;
std::set<std::string> pending_;
const std::unique_ptr<IndexMap> rule_index_;
+ const std::unique_ptr<IndexMap> language_rule_index_;
std::vector<const Rule*> rule_storage_;
std::map<std::string, std::map<std::string, const Rule*> > region_rules_;
};
diff --git a/cpp/include/libaddressinput/supplier.h b/cpp/include/libaddressinput/supplier.h
index 7d079cf..b7d1da2 100644
--- a/cpp/include/libaddressinput/supplier.h
+++ b/cpp/include/libaddressinput/supplier.h
@@ -40,6 +40,13 @@
virtual void Supply(const LookupKey& lookup_key,
const Callback& supplied) = 0;
+ // Aggregates the metadata (in all available languages) needed for
+ // |lookup_key| into a RuleHierarchy object, then calls |supplied|.
+ // Implementations of this interface may either load the necessary data on
+ // demand, or fail if the necessary data hasn't already been loaded.
+ virtual void SupplyGlobally(const LookupKey& lookup_key,
+ const Callback& supplied) = 0;
+
// A RuleHierarchy object encapsulates the hierarchical list of Rule objects
// that corresponds to a particular LookupKey.
struct RuleHierarchy {
diff --git a/cpp/include/libaddressinput/util/template_util.h b/cpp/include/libaddressinput/util/template_util.h
deleted file mode 100644
index 35125e1..0000000
--- a/cpp/include/libaddressinput/util/template_util.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// The original source code is from:
-// https://code.google.com/p/libphonenumber/source/browse/trunk/cpp/src/phonenumbers/base/template_util.h?r=621
-
-#ifndef I18N_ADDRESSINPUT_UTIL_TEMPLATE_UTIL_H_
-#define I18N_ADDRESSINPUT_UTIL_TEMPLATE_UTIL_H_
-
-#include <cstddef> // For size_t.
-
-namespace i18n {
-namespace addressinput {
-
-// template definitions from tr1
-
-template<class T, T v>
-struct integral_constant {
- static const T value = v;
- typedef T value_type;
- typedef integral_constant<T, v> type;
-};
-
-template <class T, T v> const T integral_constant<T, v>::value;
-
-typedef integral_constant<bool, true> true_type;
-typedef integral_constant<bool, false> false_type;
-
-template <class T> struct is_pointer : false_type {};
-template <class T> struct is_pointer<T*> : true_type {};
-
-template <class T, class U> struct is_same : public false_type {};
-template <class T> struct is_same<T,T> : true_type {};
-
-template<class> struct is_array : public false_type {};
-template<class T, size_t n> struct is_array<T[n]> : public true_type {};
-template<class T> struct is_array<T[]> : public true_type {};
-
-template <class T> struct is_non_const_reference : false_type {};
-template <class T> struct is_non_const_reference<T&> : true_type {};
-template <class T> struct is_non_const_reference<const T&> : false_type {};
-
-template <class T> struct is_void : false_type {};
-template <> struct is_void<void> : true_type {};
-
-namespace internal {
-
-// Types YesType and NoType are guaranteed such that sizeof(YesType) <
-// sizeof(NoType).
-typedef char YesType;
-
-struct NoType {
- YesType dummy[2];
-};
-
-// This class is an implementation detail for is_convertible, and you
-// don't need to know how it works to use is_convertible. For those
-// who care: we declare two different functions, one whose argument is
-// of type To and one with a variadic argument list. We give them
-// return types of different size, so we can use sizeof to trick the
-// compiler into telling us which function it would have chosen if we
-// had called it with an argument of type From. See Alexandrescu's
-// _Modern C++ Design_ for more details on this sort of trick.
-
-struct ConvertHelper {
- template <typename To>
- static YesType Test(To);
-
- template <typename To>
- static NoType Test(...);
-
- template <typename From>
- static From& Create();
-};
-
-// Used to determine if a type is a struct/union/class. Inspired by Boost's
-// is_class type_trait implementation.
-struct IsClassHelper {
- template <typename C>
- static YesType Test(void(C::*)(void));
-
- template <typename C>
- static NoType Test(...);
-};
-
-} // namespace internal
-
-// Inherits from true_type if From is convertible to To, false_type otherwise.
-//
-// Note that if the type is convertible, this will be a true_type REGARDLESS
-// of whether or not the conversion would emit a warning.
-template <typename From, typename To>
-struct is_convertible
- : integral_constant<bool,
- sizeof(internal::ConvertHelper::Test<To>(
- internal::ConvertHelper::Create<From>())) ==
- sizeof(internal::YesType)> {
-};
-
-template <typename T>
-struct is_class
- : integral_constant<bool,
- sizeof(internal::IsClassHelper::Test<T>(0)) ==
- sizeof(internal::YesType)> {
-};
-
-} // namespace addressinput
-} // namespace i18n
-
-#endif // I18N_ADDRESSINPUT_UTIL_TEMPLATE_UTIL_H_
diff --git a/cpp/src/address_data.cc b/cpp/src/address_data.cc
index fb5a2a5..80f4d56 100644
--- a/cpp/src/address_data.cc
+++ b/cpp/src/address_data.cc
@@ -65,7 +65,7 @@
// A string is considered to be "empty" not only if it actually is empty, but
// also if it contains nothing but whitespace.
bool IsStringEmpty(const std::string& str) {
- static const RE2 kMatcher("\\S");
+ static const RE2 kMatcher(R"(\S)");
return str.empty() || !RE2::PartialMatch(str, kMatcher);
}
diff --git a/cpp/src/address_formatter.cc b/cpp/src/address_formatter.cc
index 0b613ff..a1f673f 100644
--- a/cpp/src/address_formatter.cc
+++ b/cpp/src/address_formatter.cc
@@ -38,7 +38,7 @@
const char kCommaSeparator[] = ", ";
const char kSpaceSeparator[] = " ";
-const char kArabicCommaSeparator[] = "\xD8\x8C" " "; /* "، " */
+const char kArabicCommaSeparator[] = u8"، ";
const char* kLanguagesThatUseSpace[] = {
"th",
diff --git a/cpp/src/localization.cc b/cpp/src/localization.cc
index baff247..c2a5a41 100644
--- a/cpp/src/localization.cc
+++ b/cpp/src/localization.cc
@@ -91,8 +91,7 @@
bool uses_postal_code_as_label =
rule.GetPostalCodeNameMessageId() ==
IDS_LIBADDRESSINPUT_POSTAL_CODE_LABEL;
- return GetErrorMessageForPostalCode(address, problem,
- uses_postal_code_as_label,
+ return GetErrorMessageForPostalCode(problem, uses_postal_code_as_label,
postal_code_example, post_service_url);
} else {
if (problem == MISSING_REQUIRED_FIELD) {
@@ -125,7 +124,6 @@
}
std::string Localization::GetErrorMessageForPostalCode(
- const AddressData& address,
AddressProblem problem,
bool uses_postal_code_as_label,
const std::string& postal_code_example,
@@ -142,7 +140,7 @@
} else if (!postal_code_example.empty()) {
message_id = uses_postal_code_as_label ?
IDS_LIBADDRESSINPUT_MISSING_REQUIRED_POSTAL_CODE_EXAMPLE :
- IDS_LIBADDRESSINPUT_MISSING_REQUIRED_ZIP_CODE_EXAMPLE ;
+ IDS_LIBADDRESSINPUT_MISSING_REQUIRED_ZIP_CODE_EXAMPLE;
parameters.push_back(postal_code_example);
} else {
message_id = IDS_LIBADDRESSINPUT_MISSING_REQUIRED_FIELD;
diff --git a/cpp/src/ondemand_supplier.cc b/cpp/src/ondemand_supplier.cc
index fa3f88e..b6de593 100644
--- a/cpp/src/ondemand_supplier.cc
+++ b/cpp/src/ondemand_supplier.cc
@@ -39,6 +39,11 @@
}
}
+void OndemandSupplier::SupplyGlobally(const LookupKey& lookup_key,
+ const Callback& supplied) {
+ Supply(lookup_key, supplied);
+}
+
void OndemandSupplier::Supply(const LookupKey& lookup_key,
const Callback& supplied) {
OndemandSupplyTask* task =
diff --git a/cpp/src/post_box_matchers.cc b/cpp/src/post_box_matchers.cc
index f1ad6dd..fcb230a 100644
--- a/cpp/src/post_box_matchers.cc
+++ b/cpp/src/post_box_matchers.cc
@@ -36,56 +36,26 @@
const char* const language;
const RE2ptr ptr;
} kMatchers[] = {
- { "ar",
- /* "صندوق بريد|ص[-. ]ب" */
- new RE2("\xD8\xB5\xD9\x86\xD8\xAF\xD9\x88\xD9\x82 "
- "\xD8\xA8\xD8\xB1\xD9\x8A\xD8\xAF|\xD8\xB5[-. ]\xD8\xA8") },
-
- { "cs", new RE2("(?i)p\\.? ?p\\.? \\d") },
- { "da", new RE2("(?i)Postboks") },
- { "de", new RE2("(?i)Postfach") },
-
- { "el",
- /* "T\\.? ?Θ\\.? \\d{2}" */
- new RE2("(?i)T\\.? ?\xCE\x98\\.? \\d{2}") },
-
- { "en", new RE2("Private Bag|Post(?:al)? Box") },
- { "es", new RE2("(?i)(?:Apartado|Casillas) de correos?") },
- { "fi", new RE2("(?i)Postilokero|P\\.?L\\.? \\d") },
- { "hr", new RE2("(?i)p\\.? ?p\\.? \\d") },
-
- { "hu",
- /* "Postafi(?:[oó]|ó)k|Pf\\.? \\d" */
- new RE2("(?i)Postafi(?:[o\xC3\xB3]|o\xCC\x81)k|Pf\\.? \\d") },
-
- { "fr",
- /* "Bo(?:[iî]|î)te Postale|BP \\d|CEDEX \\d" */
- new RE2("(?i)Bo(?:[i\xC3\xAE]|i\xCC\x82)te Postale|BP \\d|CEDEX \\d") },
-
- { "ja",
- /* "私書箱\\d{1,5}号" */
- new RE2("(?i)\xE7\xA7\x81\xE6\x9B\xB8\xE7\xAE\xB1\\d{1,5}\xE5\x8F\xB7") },
-
- { "nl", new RE2("(?i)Postbus") },
- { "no", new RE2("(?i)Postboks") },
- { "pl", new RE2("(?i)Skr(?:\\.?|ytka) poczt(?:\\.?|owa)") },
- { "pt", new RE2("(?i)Apartado") },
-
- { "ru",
- /* "абонентский ящик|[аa]\\\" */
- new RE2("(?i)\xD0\xB0\xD0\xB1\xD0\xBE\xD0\xBD\xD0\xB5\xD0\xBD\xD1\x82\xD1"
- "\x81\xD0\xBA\xD0\xB8\xD0\xB9 \xD1\x8F\xD1\x89\xD0\xB8\xD0\xBA|"
- "[\xD0\xB0""a]\\\"\xD1\x8F (?:(?:\xE2\x84\x96|#|N) ?)?\\d") },
-
- { "sv", new RE2("(?i)Box \\d") },
-
- { "zh",
- /* "郵政信箱.{1,5}號|郵局第.{1,10}號信箱" */
- new RE2("(?i)\xE9\x83\xB5\xE6\x94\xBF\xE4\xBF\xA1\xE7\xAE\xB1.{1,5}"
- "\xE8\x99\x9F|\xE9\x83\xB5\xE5\xB1\x80\xE7\xAC\xAC.{1,10}"
- "\xE8\x99\x9F\xE4\xBF\xA1\xE7\xAE\xB1") },
-
- { "und", new RE2("P\\.? ?O\\.? Box") }
+ {"ar", new RE2(u8R"(صندوق بريد|ص[-. ]ب)")},
+ {"cs", new RE2(u8R"((?i)p\.? ?p\.? \d)")},
+ {"da", new RE2(u8R"((?i)Postboks)")},
+ {"de", new RE2(u8R"((?i)Postfach)")},
+ {"el", new RE2(u8R"((?i)T\.? ?Θ\.? \d{2})")},
+ {"en", new RE2(u8R"(Private Bag|Post(?:al)? Box)")},
+ {"es", new RE2(u8R"((?i)(?:Apartado|Casillas) de correos?)")},
+ {"fi", new RE2(u8R"((?i)Postilokero|P\.?L\.? \d)")},
+ {"hr", new RE2(u8R"((?i)p\.? ?p\.? \d)")},
+ {"hu", new RE2(u8R"((?i)Postafi(?:[oó]|ó)k|Pf\.? \d)")},
+ {"fr", new RE2(u8R"((?i)Bo(?:[iî]|î)te Postale|BP \d|CEDEX \d)")},
+ {"ja", new RE2(u8R"(私書箱\d{1,5}号)")},
+ {"nl", new RE2(u8R"((?i)Postbus)")},
+ {"no", new RE2(u8R"((?i)Postboks)")},
+ {"pl", new RE2(u8R"((?i)Skr(?:\.?|ytka) poczt(?:\.?|owa))")},
+ {"pt", new RE2(u8R"((?i)Apartado)")},
+ {"ru", new RE2(u8R"((?i)абонентский ящик|[аa]"я (?:(?:№|#|N) ?)?\d)")},
+ {"sv", new RE2(u8R"((?i)Box \d)")},
+ {"zh", new RE2(u8R"(郵政信箱.{1,5}號|郵局第.{1,10}號信箱)")},
+ {"und", new RE2(u8R"(P\.? ?O\.? Box)")},
};
std::map<std::string, const RE2ptr*> matchers;
diff --git a/cpp/src/preload_supplier.cc b/cpp/src/preload_supplier.cc
index a0f3710..da943b0 100644
--- a/cpp/src/preload_supplier.cc
+++ b/cpp/src/preload_supplier.cc
@@ -75,12 +75,14 @@
const Retriever& retriever,
std::set<std::string>* pending,
IndexMap* rule_index,
+ IndexMap* language_rule_index,
std::vector<const Rule*>* rule_storage,
std::map<std::string, const Rule*>* region_rules)
: region_code_(region_code),
loaded_(loaded),
pending_(pending),
rule_index_(rule_index),
+ language_rule_index_(language_rule_index),
rule_storage_(rule_storage),
region_rules_(region_rules),
retrieved_(BuildCallback(this, &Helper::OnRetrieved)) {
@@ -111,6 +113,7 @@
IndexMap::iterator last_index_it = rule_index_->end();
IndexMap::iterator last_latin_it = rule_index_->end();
+ IndexMap::iterator language_index_it = language_rule_index_->end();
std::map<std::string, const Rule*>::iterator last_region_it =
region_rules_->end();
@@ -168,19 +171,19 @@
++rule_count;
}
- /*
- * Normally the address metadata server takes care of mapping from natural
- * language names to metadata IDs (eg. "São Paulo" -> "SP") and from Latin
- * script names to local script names (eg. "Tokushima" -> "徳島県").
- *
- * As the PreloadSupplier doesn't contact the metadata server upon each
- * Supply() request, it instead has an internal lookup table (rule_index_)
- * that contains such mappings.
- *
- * This lookup table is populated by iterating over all sub rules and for
- * each of them construct ID strings using human readable names (eg. "São
- * Paulo") and using Latin script names (eg. "Tokushima").
- */
+ //
+ // Normally the address metadata server takes care of mapping from natural
+ // language names to metadata IDs (eg. "São Paulo" -> "SP") and from Latin
+ // script names to local script names (eg. "Tokushima" -> "徳島県").
+ //
+ // As the PreloadSupplier doesn't contact the metadata server upon each
+ // Supply() request, it instead has an internal lookup table (rule_index_)
+ // that contains such mappings.
+ //
+ // This lookup table is populated by iterating over all sub rules and for
+ // each of them construct ID strings using human readable names (eg. "São
+ // Paulo") and using Latin script names (eg. "Tokushima").
+ //
for (std::vector<const Rule*>::const_iterator
it = sub_rules.begin(); it != sub_rules.end(); ++it) {
std::stack<const Rule*> hierarchy;
@@ -232,6 +235,8 @@
const std::string& id = (*it)->GetId();
std::string::size_type pos = id.rfind("--");
if (pos != std::string::npos) {
+ language_index_it = language_rule_index_->insert(
+ language_index_it, std::make_pair(human_id, *it));
human_id.append(id, pos, id.size() - pos);
}
}
@@ -257,6 +262,7 @@
const PreloadSupplier::Callback& loaded_;
std::set<std::string>* const pending_;
IndexMap* const rule_index_;
+ IndexMap* const language_rule_index_;
std::vector<const Rule*>* const rule_storage_;
std::map<std::string, const Rule*>* const region_rules_;
const std::unique_ptr<const Retriever::Callback> retrieved_;
@@ -276,6 +282,7 @@
: retriever_(new Retriever(source, storage)),
pending_(),
rule_index_(new IndexMap),
+ language_rule_index_(new IndexMap),
rule_storage_(),
region_rules_() {}
@@ -289,14 +296,21 @@
void PreloadSupplier::Supply(const LookupKey& lookup_key,
const Supplier::Callback& supplied) {
Supplier::RuleHierarchy hierarchy;
- bool success = GetRuleHierarchy(lookup_key, &hierarchy);
+ bool success = GetRuleHierarchy(lookup_key, &hierarchy, false);
+ supplied(success, lookup_key, hierarchy);
+}
+
+void PreloadSupplier::SupplyGlobally(const LookupKey& lookup_key,
+ const Supplier::Callback& supplied) {
+ Supplier::RuleHierarchy hierarchy;
+ bool success = GetRuleHierarchy(lookup_key, &hierarchy, true);
supplied(success, lookup_key, hierarchy);
}
const Rule* PreloadSupplier::GetRule(const LookupKey& lookup_key) const {
assert(IsLoaded(lookup_key.GetRegionCode()));
Supplier::RuleHierarchy hierarchy;
- if (!GetRuleHierarchy(lookup_key, &hierarchy)) {
+ if (!GetRuleHierarchy(lookup_key, &hierarchy, false)) {
return nullptr;
}
return hierarchy.rule[lookup_key.GetDepth()];
@@ -322,6 +336,7 @@
*retriever_,
&pending_,
rule_index_.get(),
+ language_rule_index_.get(),
&rule_storage_,
®ion_rules_[region_code]);
}
@@ -341,7 +356,8 @@
}
bool PreloadSupplier::GetRuleHierarchy(const LookupKey& lookup_key,
- RuleHierarchy* hierarchy) const {
+ RuleHierarchy* hierarchy,
+ const bool search_globally) const {
assert(hierarchy != nullptr);
if (RegionDataConstants::IsSupported(lookup_key.GetRegionCode())) {
@@ -352,7 +368,11 @@
for (size_t depth = 0; depth <= max_depth; ++depth) {
const std::string& key = lookup_key.ToKeyString(depth);
IndexMap::const_iterator it = rule_index_->find(key);
- if (it == rule_index_->end()) {
+ if (it == rule_index_->end() && search_globally && depth > 0 &&
+ !hierarchy->rule[0]->GetLanguages().empty()) {
+ it = language_rule_index_->find(key);
+ }
+ if (it == rule_index_->end() || it == language_rule_index_->end()) {
return depth > 0; // No data on COUNTRY level is failure.
}
hierarchy->rule[depth] = it->second;
diff --git a/cpp/src/region_data_constants.cc b/cpp/src/region_data_constants.cc
index 0b45308..9ee5334 100644
--- a/cpp/src/region_data_constants.cc
+++ b/cpp/src/region_data_constants.cc
@@ -38,1380 +38,1380 @@
std::map<std::string, std::string> InitRegionData() {
std::map<std::string, std::string> region_data;
region_data.insert(std::make_pair("AC", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"ASCN 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"ASCN 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("AD", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"AD100,AD501,AD700\","
- "\"posturl\":\"http://www.correos.es/comun/CodigosPostales/1010_s-CodPostal.asp\?Provincia=\","
- "\"languages\":\"ca\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"AD100,AD501,AD700",)"
+ u8R"("posturl":"http://www.correos.es/comun/CodigosPostales/1010_s-CodPostal.asp?Provincia=",)"
+ u8R"("languages":"ca")"
"}"));
region_data.insert(std::make_pair("AE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S\","
- "\"lfmt\":\"%N%n%O%n%A%n%S\","
- "\"require\":\"AS\","
- "\"state_name_type\":\"emirate\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%S",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%S",)"
+ u8R"("require":"AS",)"
+ u8R"("state_name_type":"emirate",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("AF", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"1001,2601,3801\","
- "\"languages\":\"fa~ps~uz-Arab~tk~bal\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"1001,2601,3801",)"
+ u8R"("languages":"fa~ps~uz-Arab~tk~bal")"
"}"));
region_data.insert(std::make_pair("AG", "{"
- "\"require\":\"A\","
- "\"languages\":\"en\""
+ u8R"("require":"A",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("AI", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"2640\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"2640",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("AL", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C\","
- "\"zipex\":\"1001,1017,3501\","
- "\"languages\":\"sq\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
+ u8R"("zipex":"1001,1017,3501",)"
+ u8R"("languages":"sq")"
"}"));
region_data.insert(std::make_pair("AM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C%n%S\","
- "\"lfmt\":\"%N%n%O%n%A%n%Z%n%C%n%S\","
- "\"zipex\":\"375010,0002,0010\","
- "\"languages\":\"hy\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C%n%S",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%Z%n%C%n%S",)"
+ u8R"("zipex":"375010,0002,0010",)"
+ u8R"("languages":"hy")"
"}"));
region_data.insert(std::make_pair("AO", "{"
- "\"languages\":\"pt\""
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("AQ", "{"
"}"));
region_data.insert(std::make_pair("AR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C%n%S\","
- "\"zipex\":\"C1070AAM,C1000WAM,B1000TBU,X5187XAB\","
- "\"posturl\":\"http://www.correoargentino.com.ar/formularios/cpa\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
+ u8R"("zipex":"C1070AAM,C1000WAM,B1000TBU,X5187XAB",)"
+ u8R"("posturl":"http://www.correoargentino.com.ar/formularios/cpa",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("AS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96799\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"sm~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96799",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"sm~en")"
"}"));
region_data.insert(std::make_pair("AT", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"1010,3741\","
- "\"posturl\":\"http://www.post.at/post_subsite_postleitzahlfinder.php\","
- "\"languages\":\"de~hr~sl~hu\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"1010,3741",)"
+ u8R"("posturl":"http://www.post.at/post_subsite_postleitzahlfinder.php",)"
+ u8R"("languages":"de~hr~sl~hu")"
"}"));
region_data.insert(std::make_pair("AU", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"state\","
- "\"locality_name_type\":\"suburb\","
- "\"zipex\":\"2060,3171,6430,4000,4006,3001\","
- "\"posturl\":\"http://www1.auspost.com.au/postcodes/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("locality_name_type":"suburb",)"
+ u8R"("zipex":"2060,3171,6430,4000,4006,3001",)"
+ u8R"("posturl":"http://www1.auspost.com.au/postcodes/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("AW", "{"
- "\"languages\":\"nl~pap\""
+ u8R"("languages":"nl~pap")"
"}"));
region_data.insert(std::make_pair("AX", "{"
- "\"fmt\":\"%O%n%N%n%A%nAX-%Z %C%n\\u00c5LAND\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"22150,22550,22240,22710,22270,22730,22430\","
- "\"posturl\":\"http://www.posten.ax/department.con\?iPage=123\","
- "\"languages\":\"sv\""
+ u8R"("fmt":"%O%n%N%n%A%nAX-%Z %C%nÅLAND",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"22150,22550,22240,22710,22270,22730,22430",)"
+ u8R"("posturl":"http://www.posten.ax/department.con?iPage=123",)"
+ u8R"("languages":"sv")"
"}"));
region_data.insert(std::make_pair("AZ", "{"
- "\"fmt\":\"%N%n%O%n%A%nAZ %Z %C\","
- "\"zipex\":\"1000\","
- "\"languages\":\"az~az-Cyrl\""
+ u8R"("fmt":"%N%n%O%n%A%nAZ %Z %C",)"
+ u8R"("zipex":"1000",)"
+ u8R"("languages":"az~az-Cyrl")"
"}"));
region_data.insert(std::make_pair("BA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"71000\","
- "\"languages\":\"bs~bs-Cyrl~hr~sr~sr-Latn\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"71000",)"
+ u8R"("languages":"bs~bs-Cyrl~hr~sr~sr-Latn")"
"}"));
region_data.insert(std::make_pair("BB", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S %Z\","
- "\"state_name_type\":\"parish\","
- "\"zipex\":\"BB23026,BB22025\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
+ u8R"("state_name_type":"parish",)"
+ u8R"("zipex":"BB23026,BB22025",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("BD", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C - %Z\","
- "\"zipex\":\"1340,1000\","
- "\"posturl\":\"http://www.bangladeshpost.gov.bd/PostCode.asp\","
- "\"languages\":\"bn\""
+ u8R"("fmt":"%N%n%O%n%A%n%C - %Z",)"
+ u8R"("zipex":"1340,1000",)"
+ u8R"("posturl":"http://www.bangladeshpost.gov.bd/PostCode.asp",)"
+ u8R"("languages":"bn")"
"}"));
region_data.insert(std::make_pair("BE", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"4000,1000\","
- "\"posturl\":\"http://www.post.be/site/nl/residential/customerservice/search/postal_codes.html\","
- "\"languages\":\"nl~fr~de\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"4000,1000",)"
+ u8R"("posturl":"http://www.post.be/site/nl/residential/customerservice/search/postal_codes.html",)"
+ u8R"("languages":"nl~fr~de")"
"}"));
region_data.insert(std::make_pair("BF", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %X\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %X",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("BG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1000,1700\","
- "\"posturl\":\"http://www.bgpost.bg/\?cid=5\","
- "\"languages\":\"bg\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1000,1700",)"
+ u8R"("posturl":"http://www.bgpost.bg/?cid=5",)"
+ u8R"("languages":"bg")"
"}"));
region_data.insert(std::make_pair("BH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"317\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"317",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("BI", "{"
- "\"languages\":\"rn~fr~en\""
+ u8R"("languages":"rn~fr~en")"
"}"));
region_data.insert(std::make_pair("BJ", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("BL", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97100\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97100",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("BM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"FL 07,HM GX,HM 12\","
- "\"posturl\":\"http://www.landvaluation.bm/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"FL 07,HM GX,HM 12",)"
+ u8R"("posturl":"http://www.landvaluation.bm/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("BN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"BT2328,KA1131,BA1511\","
- "\"posturl\":\"http://www.post.gov.bn/SitePages/postcodes.aspx\","
- "\"languages\":\"ms~ms-Arab\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"BT2328,KA1131,BA1511",)"
+ u8R"("posturl":"http://www.post.gov.bn/SitePages/postcodes.aspx",)"
+ u8R"("languages":"ms~ms-Arab")"
"}"));
region_data.insert(std::make_pair("BO", "{"
- "\"languages\":\"es~qu~ay\""
+ u8R"("languages":"es~qu~ay")"
"}"));
region_data.insert(std::make_pair("BQ", "{"
- "\"languages\":\"nl\""
+ u8R"("languages":"nl")"
"}"));
region_data.insert(std::make_pair("BR", "{"
- "\"fmt\":\"%O%n%N%n%A%n%D%n%C-%S%n%Z\","
- "\"require\":\"ASCZ\","
- "\"state_name_type\":\"state\","
- "\"sublocality_name_type\":\"neighborhood\","
- "\"zipex\":\"40301-110,70002-900\","
- "\"posturl\":\"http://www.buscacep.correios.com.br/\","
- "\"languages\":\"pt\""
+ u8R"("fmt":"%O%n%N%n%A%n%D%n%C-%S%n%Z",)"
+ u8R"("require":"ASCZ",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("sublocality_name_type":"neighborhood",)"
+ u8R"("zipex":"40301-110,70002-900",)"
+ u8R"("posturl":"http://www.buscacep.correios.com.br/",)"
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("BS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S\","
- "\"state_name_type\":\"island\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("BT", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"11001,31101,35003\","
- "\"posturl\":\"http://www.bhutanpost.bt/searchpostcode.php\","
- "\"languages\":\"dz\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"11001,31101,35003",)"
+ u8R"("posturl":"http://www.bhutanpost.bt/searchpostcode.php",)"
+ u8R"("languages":"dz")"
"}"));
region_data.insert(std::make_pair("BV", "{"
"}"));
region_data.insert(std::make_pair("BW", "{"
- "\"languages\":\"en~tn\""
+ u8R"("languages":"en~tn")"
"}"));
region_data.insert(std::make_pair("BY", "{"
- "\"fmt\":\"%S%n%Z %C%n%A%n%O%n%N\","
- "\"zipex\":\"223016,225860,220050\","
- "\"posturl\":\"http://ex.belpost.by/addressbook/\","
- "\"languages\":\"be~ru\""
+ u8R"("fmt":"%S%n%Z %C%n%A%n%O%n%N",)"
+ u8R"("zipex":"223016,225860,220050",)"
+ u8R"("posturl":"http://ex.belpost.by/addressbook/",)"
+ u8R"("languages":"be~ru")"
"}"));
region_data.insert(std::make_pair("BZ", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("CA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zipex\":\"H3Z 2Y7,V8X 3X4,T0L 1K0,T0H 1A0,K1A 0B1\","
- "\"posturl\":\"https://www.canadapost.ca/cpo/mc/personal/postalcode/fpc.jsf\","
- "\"languages\":\"en~fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zipex":"H3Z 2Y7,V8X 3X4,T0L 1K0,T0H 1A0,K1A 0B1",)"
+ u8R"("posturl":"https://www.canadapost.ca/cpo/mc/personal/postalcode/fpc.jsf",)"
+ u8R"("languages":"en~fr")"
"}"));
region_data.insert(std::make_pair("CC", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
- "\"zipex\":\"6799\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
+ u8R"("zipex":"6799",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("CD", "{"
- "\"languages\":\"sw~lua~fr~ln~kg\""
+ u8R"("languages":"sw~lua~fr~ln~kg")"
"}"));
region_data.insert(std::make_pair("CF", "{"
- "\"languages\":\"fr~sg\""
+ u8R"("languages":"fr~sg")"
"}"));
region_data.insert(std::make_pair("CG", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("CH", "{"
- "\"fmt\":\"%O%n%N%n%A%nCH-%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"2544,1211,1556,3030\","
- "\"posturl\":\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\","
- "\"languages\":\"de~gsw~fr~it~rm\""
+ u8R"("fmt":"%O%n%N%n%A%nCH-%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"2544,1211,1556,3030",)"
+ u8R"("posturl":"http://www.post.ch/db/owa/pv_plz_pack/pr_main",)"
+ u8R"("languages":"de~gsw~fr~it~rm")"
"}"));
region_data.insert(std::make_pair("CI", "{"
- "\"fmt\":\"%N%n%O%n%X %A %C %X\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%N%n%O%n%X %A %C %X",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("CK", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("CL", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C%n%S\","
- "\"zipex\":\"8340457,8720019,1230000,8329100\","
- "\"posturl\":\"http://www.correos.cl/SitePages/home.aspx\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
+ u8R"("zipex":"8340457,8720019,1230000,8329100",)"
+ u8R"("posturl":"http://www.correos.cl/SitePages/home.aspx",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("CM", "{"
- "\"languages\":\"fr~en\""
+ u8R"("languages":"fr~en")"
"}"));
region_data.insert(std::make_pair("CN", "{"
- "\"fmt\":\"%Z%n%S%C%D%n%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A%n%D%n%C%n%S, %Z\","
- "\"require\":\"ACSZ\","
- "\"sublocality_name_type\":\"district\","
- "\"zipex\":\"266033,317204,100096,100808\","
- "\"posturl\":\"http://www.ems.com.cn/serviceguide/you_bian_cha_xun.html\","
- "\"languages\":\"zh\""
+ u8R"("fmt":"%Z%n%S%C%D%n%A%n%O%n%N",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%D%n%C%n%S, %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("sublocality_name_type":"district",)"
+ u8R"("zipex":"266033,317204,100096,100808",)"
+ u8R"("posturl":"http://www.ems.com.cn/serviceguide/you_bian_cha_xun.html",)"
+ u8R"("languages":"zh")"
"}"));
region_data.insert(std::make_pair("CO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S, %Z\","
- "\"require\":\"AS\","
- "\"state_name_type\":\"department\","
- "\"zipex\":\"111221,130001,760011\","
- "\"posturl\":\"http://www.codigopostal.gov.co/\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S, %Z",)"
+ u8R"("require":"AS",)"
+ u8R"("state_name_type":"department",)"
+ u8R"("zipex":"111221,130001,760011",)"
+ u8R"("posturl":"http://www.codigopostal.gov.co/",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("CR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S, %C%n%Z\","
- "\"require\":\"ACS\","
- "\"zipex\":\"1000,2010,1001\","
- "\"posturl\":\"https://www.correos.go.cr/nosotros/codigopostal/busqueda.html\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%S, %C%n%Z",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"1000,2010,1001",)"
+ u8R"("posturl":"https://www.correos.go.cr/nosotros/codigopostal/busqueda.html",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("CV", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C%n%S\","
- "\"state_name_type\":\"island\","
- "\"zipex\":\"7600\","
- "\"languages\":\"pt\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("zipex":"7600",)"
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("CW", "{"
- "\"languages\":\"pap~nl\""
+ u8R"("languages":"pap~nl")"
"}"));
region_data.insert(std::make_pair("CX", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
- "\"zipex\":\"6798\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
+ u8R"("zipex":"6798",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("CY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"2008,3304,1900\","
- "\"languages\":\"el~tr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"2008,3304,1900",)"
+ u8R"("languages":"el~tr")"
"}"));
region_data.insert(std::make_pair("CZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"100 00,251 66,530 87,110 00,225 99\","
- "\"posturl\":\"http://psc.ceskaposta.cz/CleanForm.action\","
- "\"languages\":\"cs\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"100 00,251 66,530 87,110 00,225 99",)"
+ u8R"("posturl":"http://psc.ceskaposta.cz/CleanForm.action",)"
+ u8R"("languages":"cs")"
"}"));
region_data.insert(std::make_pair("DE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"26133,53225\","
- "\"posturl\":\"http://www.postdirekt.de/plzserver/\","
- "\"languages\":\"de\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"26133,53225",)"
+ u8R"("posturl":"http://www.postdirekt.de/plzserver/",)"
+ u8R"("languages":"de")"
"}"));
region_data.insert(std::make_pair("DJ", "{"
- "\"languages\":\"ar~fr\""
+ u8R"("languages":"ar~fr")"
"}"));
region_data.insert(std::make_pair("DK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"8660,1566\","
- "\"posturl\":\"http://www.postdanmark.dk/da/Privat/Kundeservice/postnummerkort/Sider/Find-postnummer.aspx\","
- "\"languages\":\"da~de~kl\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"8660,1566",)"
+ u8R"("posturl":"http://www.postdanmark.dk/da/Privat/Kundeservice/postnummerkort/Sider/Find-postnummer.aspx",)"
+ u8R"("languages":"da~de~kl")"
"}"));
region_data.insert(std::make_pair("DM", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("DO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"11903,10101\","
- "\"posturl\":\"http://inposdom.gob.do/codigo-postal/\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"11903,10101",)"
+ u8R"("posturl":"http://inposdom.gob.do/codigo-postal/",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("DZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"40304,16027\","
- "\"languages\":\"ar~fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"40304,16027",)"
+ u8R"("languages":"ar~fr")"
"}"));
region_data.insert(std::make_pair("EC", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C\","
- "\"zipex\":\"090105,092301\","
- "\"posturl\":\"http://www.codigopostal.gob.ec/\","
- "\"languages\":\"es~qu\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
+ u8R"("zipex":"090105,092301",)"
+ u8R"("posturl":"http://www.codigopostal.gob.ec/",)"
+ u8R"("languages":"es~qu")"
"}"));
region_data.insert(std::make_pair("EE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"69501,11212\","
- "\"posturl\":\"https://www.omniva.ee/era/sihtnumbrite_otsing\","
- "\"languages\":\"et\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"69501,11212",)"
+ u8R"("posturl":"https://www.omniva.ee/era/sihtnumbrite_otsing",)"
+ u8R"("languages":"et")"
"}"));
region_data.insert(std::make_pair("EG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"zipex\":\"12411,11599\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("zipex":"12411,11599",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("EH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"70000,72000\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"70000,72000",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("ER", "{"
- "\"languages\":\"ti~en~ar\""
+ u8R"("languages":"ti~en~ar")"
"}"));
region_data.insert(std::make_pair("ES", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C %S\","
- "\"require\":\"ACSZ\","
- "\"zipex\":\"28039,28300,28070\","
- "\"posturl\":\"http://www.correos.es/contenido/13-MenuRec2/04-MenuRec24/1010_s-CodPostal.asp\","
- "\"languages\":\"es~ca~gl~eu\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zipex":"28039,28300,28070",)"
+ u8R"("posturl":"http://www.correos.es/contenido/13-MenuRec2/04-MenuRec24/1010_s-CodPostal.asp",)"
+ u8R"("languages":"es~ca~gl~eu")"
"}"));
region_data.insert(std::make_pair("ET", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1000\","
- "\"languages\":\"am\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1000",)"
+ u8R"("languages":"am")"
"}"));
region_data.insert(std::make_pair("FI", "{"
- "\"fmt\":\"%O%n%N%n%A%nFI-%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"00550,00011\","
- "\"posturl\":\"http://www.verkkoposti.com/e3/postinumeroluettelo\","
- "\"languages\":\"fi~sv\""
+ u8R"("fmt":"%O%n%N%n%A%nFI-%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"00550,00011",)"
+ u8R"("posturl":"http://www.verkkoposti.com/e3/postinumeroluettelo",)"
+ u8R"("languages":"fi~sv")"
"}"));
region_data.insert(std::make_pair("FJ", "{"
- "\"languages\":\"en~hif~fj\""
+ u8R"("languages":"en~hif~fj")"
"}"));
region_data.insert(std::make_pair("FK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"FIQQ 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"FIQQ 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("FM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96941,96944\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96941,96944",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("FO", "{"
- "\"fmt\":\"%N%n%O%n%A%nFO%Z %C\","
- "\"zipex\":\"100\","
- "\"posturl\":\"http://www.postur.fo/\","
- "\"languages\":\"fo\""
+ u8R"("fmt":"%N%n%O%n%A%nFO%Z %C",)"
+ u8R"("zipex":"100",)"
+ u8R"("posturl":"http://www.postur.fo/",)"
+ u8R"("languages":"fo")"
"}"));
region_data.insert(std::make_pair("FR", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"33380,34092,33506\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"33380,34092,33506",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("GA", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("GB", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"locality_name_type\":\"post_town\","
- "\"zipex\":\"EC1Y 8SY,GIR 0AA,M2 5BQ,M34 4AB,CR0 2YR,DN16 9AA,W1A 4ZZ,EC1A 1HQ,OX14 4PG,BS18 8HF,NR25 7HG,RH6 0NP,BH23 6AA,B6 5BA,SO23 9AP,PO1 3AX,BFPO 61\","
- "\"posturl\":\"http://www.royalmail.com/postcode-finder\","
- "\"languages\":\"en~cy~gd~ga\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("locality_name_type":"post_town",)"
+ u8R"("zipex":"EC1Y 8SY,GIR 0AA,M2 5BQ,M34 4AB,CR0 2YR,DN16 9AA,W1A 4ZZ,EC1A 1HQ,OX14 4PG,BS18 8HF,NR25 7HG,RH6 0NP,BH23 6AA,B6 5BA,SO23 9AP,PO1 3AX,BFPO 61",)"
+ u8R"("posturl":"http://www.royalmail.com/postcode-finder",)"
+ u8R"("languages":"en~cy~gd~ga")"
"}"));
region_data.insert(std::make_pair("GD", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("GE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"0101\","
- "\"posturl\":\"http://www.georgianpost.ge/index.php\?page=10\","
- "\"languages\":\"ka~ab~os\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"0101",)"
+ u8R"("posturl":"http://www.georgianpost.ge/index.php?page=10",)"
+ u8R"("languages":"ka~ab~os")"
"}"));
region_data.insert(std::make_pair("GF", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97300\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97300",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("GG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%nGUERNSEY%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"GY1 1AA,GY2 2BT\","
- "\"posturl\":\"http://www.guernseypost.com/postcode_finder/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%nGUERNSEY%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"GY1 1AA,GY2 2BT",)"
+ u8R"("posturl":"http://www.guernseypost.com/postcode_finder/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("GH", "{"
- "\"languages\":\"ak~en~ee~gaa\""
+ u8R"("languages":"ak~en~ee~gaa")"
"}"));
region_data.insert(std::make_pair("GI", "{"
- "\"fmt\":\"%N%n%O%n%A%nGIBRALTAR%n%Z\","
- "\"require\":\"A\","
- "\"zipex\":\"GX11 1AA\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%nGIBRALTAR%n%Z",)"
+ u8R"("require":"A",)"
+ u8R"("zipex":"GX11 1AA",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("GL", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"3900,3950,3911\","
- "\"languages\":\"kl\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"3900,3950,3911",)"
+ u8R"("languages":"kl")"
"}"));
region_data.insert(std::make_pair("GM", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("GN", "{"
- "\"fmt\":\"%N%n%O%n%Z %A %C\","
- "\"zipex\":\"001,200,100\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%N%n%O%n%Z %A %C",)"
+ u8R"("zipex":"001,200,100",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("GP", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97100\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97100",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("GQ", "{"
- "\"languages\":\"es~fr~pt\""
+ u8R"("languages":"es~fr~pt")"
"}"));
region_data.insert(std::make_pair("GR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"151 24,151 10,101 88\","
- "\"posturl\":\"http://www.elta.gr/findapostcode.aspx\","
- "\"languages\":\"el\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"151 24,151 10,101 88",)"
+ u8R"("posturl":"http://www.elta.gr/findapostcode.aspx",)"
+ u8R"("languages":"el")"
"}"));
region_data.insert(std::make_pair("GS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"SIQQ 1ZZ\""
+ u8R"("fmt":"%N%n%O%n%A%n%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"SIQQ 1ZZ")"
"}"));
region_data.insert(std::make_pair("GT", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z- %C\","
- "\"zipex\":\"09001,01501\","
- "\"languages\":\"es~quc\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z- %C",)"
+ u8R"("zipex":"09001,01501",)"
+ u8R"("languages":"es~quc")"
"}"));
region_data.insert(std::make_pair("GU", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"require\":\"ACZ\","
- "\"zip_name_type\":\"zip\","
- "\"zipex\":\"96910,96931\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en~ch\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("zipex":"96910,96931",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en~ch")"
"}"));
region_data.insert(std::make_pair("GW", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1000,1011\","
- "\"languages\":\"pt\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1000,1011",)"
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("GY", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("HK", "{"
- "\"fmt\":\"%S%n%C%n%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"require\":\"AS\","
- "\"state_name_type\":\"area\","
- "\"locality_name_type\":\"district\","
- "\"languages\":\"zh-Hant~en\""
+ u8R"("fmt":"%S%n%C%n%A%n%O%n%N",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C%n%S",)"
+ u8R"("require":"AS",)"
+ u8R"("state_name_type":"area",)"
+ u8R"("locality_name_type":"district",)"
+ u8R"("languages":"zh-Hant~en")"
"}"));
region_data.insert(std::make_pair("HM", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
- "\"zipex\":\"7050\""
+ u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
+ u8R"("zipex":"7050")"
"}"));
region_data.insert(std::make_pair("HN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S%n%Z\","
- "\"require\":\"ACS\","
- "\"zipex\":\"31301\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S%n%Z",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"31301",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("HR", "{"
- "\"fmt\":\"%N%n%O%n%A%nHR-%Z %C\","
- "\"zipex\":\"10000,21001,10002\","
- "\"posturl\":\"http://www.posta.hr/default.aspx\?pretpum\","
- "\"languages\":\"hr~it\""
+ u8R"("fmt":"%N%n%O%n%A%nHR-%Z %C",)"
+ u8R"("zipex":"10000,21001,10002",)"
+ u8R"("posturl":"http://www.posta.hr/default.aspx?pretpum",)"
+ u8R"("languages":"hr~it")"
"}"));
region_data.insert(std::make_pair("HT", "{"
- "\"fmt\":\"%N%n%O%n%A%nHT%Z %C\","
- "\"zipex\":\"6120,5310,6110,8510\","
- "\"languages\":\"ht~fr\""
+ u8R"("fmt":"%N%n%O%n%A%nHT%Z %C",)"
+ u8R"("zipex":"6120,5310,6110,8510",)"
+ u8R"("languages":"ht~fr")"
"}"));
region_data.insert(std::make_pair("HU", "{"
- "\"fmt\":\"%N%n%O%n%C%n%A%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"1037,2380,1540\","
- "\"posturl\":\"http://posta.hu/ugyfelszolgalat/iranyitoszam_kereso\","
- "\"languages\":\"hu\""
+ u8R"("fmt":"%N%n%O%n%C%n%A%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"1037,2380,1540",)"
+ u8R"("posturl":"http://posta.hu/ugyfelszolgalat/iranyitoszam_kereso",)"
+ u8R"("languages":"hu")"
"}"));
region_data.insert(std::make_pair("ID", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S %Z\","
- "\"require\":\"AS\","
- "\"zipex\":\"40115\","
- "\"languages\":\"id\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
+ u8R"("require":"AS",)"
+ u8R"("zipex":"40115",)"
+ u8R"("languages":"id")"
"}"));
region_data.insert(std::make_pair("IE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%C%n%S %Z\","
- "\"zip_name_type\":\"eircode\","
- "\"state_name_type\":\"county\","
- "\"sublocality_name_type\":\"townland\","
- "\"zipex\":\"A65 F4E2\","
- "\"posturl\":\"https://finder.eircode.ie\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%C%n%S %Z",)"
+ u8R"("zip_name_type":"eircode",)"
+ u8R"("state_name_type":"county",)"
+ u8R"("sublocality_name_type":"townland",)"
+ u8R"("zipex":"A65 F4E2",)"
+ u8R"("posturl":"https://finder.eircode.ie",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("IL", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"9614303\","
- "\"posturl\":\"http://www.israelpost.co.il/zipcode.nsf/demozip\?openform\","
- "\"languages\":\"iw~ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"9614303",)"
+ u8R"("posturl":"http://www.israelpost.co.il/zipcode.nsf/demozip?openform",)"
+ u8R"("languages":"iw~ar")"
"}"));
region_data.insert(std::make_pair("IM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"IM2 1AA,IM99 1PS\","
- "\"posturl\":\"http://www.gov.im/post/postal/fr_main.asp\","
- "\"languages\":\"en~gv\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"IM2 1AA,IM99 1PS",)"
+ u8R"("posturl":"http://www.gov.im/post/postal/fr_main.asp",)"
+ u8R"("languages":"en~gv")"
"}"));
region_data.insert(std::make_pair("IN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z%n%S\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"pin\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"110034,110001\","
- "\"posturl\":\"https://www.indiapost.gov.in/vas/pages/FindPinCode.aspx\","
- "\"languages\":\"en~hi\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z%n%S",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"pin",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"110034,110001",)"
+ u8R"("posturl":"https://www.indiapost.gov.in/vas/pages/FindPinCode.aspx",)"
+ u8R"("languages":"en~hi")"
"}"));
region_data.insert(std::make_pair("IO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"BBND 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"BBND 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("IQ", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C, %S%n%Z\","
- "\"require\":\"ACS\","
- "\"zipex\":\"31001\","
- "\"languages\":\"ar~ckb~az-Arab\""
+ u8R"("fmt":"%O%n%N%n%A%n%C, %S%n%Z",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"31001",)"
+ u8R"("languages":"ar~ckb~az-Arab")"
"}"));
region_data.insert(std::make_pair("IR", "{"
- "\"fmt\":\"%O%n%N%n%S%n%C, %D%n%A%n%Z\","
- "\"sublocality_name_type\":\"neighborhood\","
- "\"zipex\":\"11936-12345\","
- "\"languages\":\"fa\""
+ u8R"("fmt":"%O%n%N%n%S%n%C, %D%n%A%n%Z",)"
+ u8R"("sublocality_name_type":"neighborhood",)"
+ u8R"("zipex":"11936-12345",)"
+ u8R"("languages":"fa")"
"}"));
region_data.insert(std::make_pair("IS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"320,121,220,110\","
- "\"posturl\":\"http://www.postur.is/einstaklingar/posthus/postnumer/\","
- "\"languages\":\"is\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"320,121,220,110",)"
+ u8R"("posturl":"http://www.postur.is/einstaklingar/posthus/postnumer/",)"
+ u8R"("languages":"is")"
"}"));
region_data.insert(std::make_pair("IT", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C %S\","
- "\"require\":\"ACSZ\","
- "\"zipex\":\"00144,47037,39049\","
- "\"posturl\":\"http://www.poste.it/online/cercacap/\","
- "\"languages\":\"it\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zipex":"00144,47037,39049",)"
+ u8R"("posturl":"http://www.poste.it/online/cercacap/",)"
+ u8R"("languages":"it")"
"}"));
region_data.insert(std::make_pair("JE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%nJERSEY%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"JE1 1AA,JE2 2BT\","
- "\"posturl\":\"http://www.jerseypost.com/tools/postcode-address-finder/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%nJERSEY%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"JE1 1AA,JE2 2BT",)"
+ u8R"("posturl":"http://www.jerseypost.com/tools/postcode-address-finder/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("JM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S %X\","
- "\"require\":\"ACS\","
- "\"state_name_type\":\"parish\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S %X",)"
+ u8R"("require":"ACS",)"
+ u8R"("state_name_type":"parish",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("JO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"11937,11190\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"11937,11190",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("JP", "{"
- "\"fmt\":\"\\u3012%Z%n%S%C%n%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A%n%C, %S%n%Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"prefecture\","
- "\"zipex\":\"154-0023,350-1106,951-8073,112-0001,208-0032,231-0012\","
- "\"posturl\":\"http://search.post.japanpost.jp/zipcode/\","
- "\"languages\":\"ja\""
+ u8R"("fmt":"〒%Z%n%S%C%n%A%n%O%n%N",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C, %S%n%Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"prefecture",)"
+ u8R"("zipex":"154-0023,350-1106,951-8073,112-0001,208-0032,231-0012",)"
+ u8R"("posturl":"http://search.post.japanpost.jp/zipcode/",)"
+ u8R"("languages":"ja")"
"}"));
region_data.insert(std::make_pair("KE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"20100,00100\","
- "\"languages\":\"sw~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"20100,00100",)"
+ u8R"("languages":"sw~en")"
"}"));
region_data.insert(std::make_pair("KG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"720001\","
- "\"languages\":\"ky~ru\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"720001",)"
+ u8R"("languages":"ky~ru")"
"}"));
region_data.insert(std::make_pair("KH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"12203,14206,12000\","
- "\"languages\":\"km\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"12203,14206,12000",)"
+ u8R"("languages":"km")"
"}"));
region_data.insert(std::make_pair("KI", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S%n%C\","
- "\"state_name_type\":\"island\","
- "\"languages\":\"en~gil\""
+ u8R"("fmt":"%N%n%O%n%A%n%S%n%C",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("languages":"en~gil")"
"}"));
region_data.insert(std::make_pair("KM", "{"
- "\"languages\":\"ar~fr~zdj~wni\""
+ u8R"("languages":"ar~fr~zdj~wni")"
"}"));
region_data.insert(std::make_pair("KN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S\","
- "\"require\":\"ACS\","
- "\"state_name_type\":\"island\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S",)"
+ u8R"("require":"ACS",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("KR", "{"
- "\"fmt\":\"%S %C%D%n%A%n%O%n%N%n%Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%D%n%C%n%S%n%Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"do_si\","
- "\"sublocality_name_type\":\"district\","
- "\"zipex\":\"03051\","
- "\"posturl\":\"http://www.epost.go.kr/search/zipcode/search5.jsp\","
- "\"languages\":\"ko\""
+ u8R"("fmt":"%S %C%D%n%A%n%O%n%N%n%Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%D%n%C%n%S%n%Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"do_si",)"
+ u8R"("sublocality_name_type":"district",)"
+ u8R"("zipex":"03051",)"
+ u8R"("posturl":"http://www.epost.go.kr/search/zipcode/search5.jsp",)"
+ u8R"("languages":"ko")"
"}"));
region_data.insert(std::make_pair("KW", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"54541,54551,54404,13009\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"54541,54551,54404,13009",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("KY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S %Z\","
- "\"require\":\"AS\","
- "\"state_name_type\":\"island\","
- "\"zipex\":\"KY1-1100,KY1-1702,KY2-2101\","
- "\"posturl\":\"http://www.caymanpost.gov.ky/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%S %Z",)"
+ u8R"("require":"AS",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("zipex":"KY1-1100,KY1-1702,KY2-2101",)"
+ u8R"("posturl":"http://www.caymanpost.gov.ky/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("KZ", "{"
- "\"fmt\":\"%Z%n%S%n%C%n%A%n%O%n%N\","
- "\"zipex\":\"040900,050012\","
- "\"languages\":\"ru~kk\""
+ u8R"("fmt":"%Z%n%S%n%C%n%A%n%O%n%N",)"
+ u8R"("zipex":"040900,050012",)"
+ u8R"("languages":"ru~kk")"
"}"));
region_data.insert(std::make_pair("LA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"01160,01000\","
- "\"languages\":\"lo\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"01160,01000",)"
+ u8R"("languages":"lo")"
"}"));
region_data.insert(std::make_pair("LB", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"2038 3054,1107 2810,1000\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"2038 3054,1107 2810,1000",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("LC", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("LI", "{"
- "\"fmt\":\"%O%n%N%n%A%nFL-%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"9496,9491,9490,9485\","
- "\"posturl\":\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\","
- "\"languages\":\"de~gsw\""
+ u8R"("fmt":"%O%n%N%n%A%nFL-%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"9496,9491,9490,9485",)"
+ u8R"("posturl":"http://www.post.ch/db/owa/pv_plz_pack/pr_main",)"
+ u8R"("languages":"de~gsw")"
"}"));
region_data.insert(std::make_pair("LK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"20000,00100\","
- "\"posturl\":\"http://www.slpost.gov.lk/\","
- "\"languages\":\"si~ta\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"20000,00100",)"
+ u8R"("posturl":"http://www.slpost.gov.lk/",)"
+ u8R"("languages":"si~ta")"
"}"));
region_data.insert(std::make_pair("LR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1000\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1000",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("LS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"100\","
- "\"languages\":\"st~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"100",)"
+ u8R"("languages":"st~en")"
"}"));
region_data.insert(std::make_pair("LT", "{"
- "\"fmt\":\"%O%n%N%n%A%nLT-%Z %C\","
- "\"zipex\":\"04340,03500\","
- "\"posturl\":\"http://www.post.lt/lt/\?id=316\","
- "\"languages\":\"lt\""
+ u8R"("fmt":"%O%n%N%n%A%nLT-%Z %C",)"
+ u8R"("zipex":"04340,03500",)"
+ u8R"("posturl":"http://www.post.lt/lt/?id=316",)"
+ u8R"("languages":"lt")"
"}"));
region_data.insert(std::make_pair("LU", "{"
- "\"fmt\":\"%O%n%N%n%A%nL-%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"4750,2998\","
- "\"posturl\":\"https://www.post.lu/fr/grandes-entreprises/solutions-postales/rechercher-un-code-postal\","
- "\"languages\":\"fr~lb~de\""
+ u8R"("fmt":"%O%n%N%n%A%nL-%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"4750,2998",)"
+ u8R"("posturl":"https://www.post.lu/fr/grandes-entreprises/solutions-postales/rechercher-un-code-postal",)"
+ u8R"("languages":"fr~lb~de")"
"}"));
region_data.insert(std::make_pair("LV", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %Z\","
- "\"zipex\":\"LV-1073,LV-1000\","
- "\"posturl\":\"http://www.pasts.lv/lv/uzzinas/nodalas/\","
- "\"languages\":\"lv\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %Z",)"
+ u8R"("zipex":"LV-1073,LV-1000",)"
+ u8R"("posturl":"http://www.pasts.lv/lv/uzzinas/nodalas/",)"
+ u8R"("languages":"lv")"
"}"));
region_data.insert(std::make_pair("LY", "{"
- "\"languages\":\"ar\""
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("MA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"53000,10000,20050,16052\","
- "\"languages\":\"ar~fr~tzm\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"53000,10000,20050,16052",)"
+ u8R"("languages":"ar~fr~tzm")"
"}"));
region_data.insert(std::make_pair("MC", "{"
- "\"fmt\":\"%N%n%O%n%A%nMC-%Z %C %X\","
- "\"zipex\":\"98000,98020,98011,98001\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%N%n%O%n%A%nMC-%Z %C %X",)"
+ u8R"("zipex":"98000,98020,98011,98001",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("MD", "{"
- "\"fmt\":\"%N%n%O%n%A%nMD-%Z %C\","
- "\"zipex\":\"2012,2019\","
- "\"languages\":\"ro\""
+ u8R"("fmt":"%N%n%O%n%A%nMD-%Z %C",)"
+ u8R"("zipex":"2012,2019",)"
+ u8R"("languages":"ro")"
"}"));
region_data.insert(std::make_pair("ME", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"81257,81258,81217,84314,85366\","
- "\"languages\":\"sr-Latn\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"81257,81258,81217,84314,85366",)"
+ u8R"("languages":"sr-Latn")"
"}"));
region_data.insert(std::make_pair("MF", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97100\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97100",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("MG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"501,101\","
- "\"languages\":\"mg~fr~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"501,101",)"
+ u8R"("languages":"mg~fr~en")"
"}"));
region_data.insert(std::make_pair("MH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96960,96970\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en~mh\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96960,96970",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en~mh")"
"}"));
region_data.insert(std::make_pair("MK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1314,1321,1443,1062\","
- "\"languages\":\"mk~sq\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1314,1321,1443,1062",)"
+ u8R"("languages":"mk~sq")"
"}"));
region_data.insert(std::make_pair("ML", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("MM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %Z\","
- "\"zipex\":\"11181\","
- "\"languages\":\"my\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %Z",)"
+ u8R"("zipex":"11181",)"
+ u8R"("languages":"my")"
"}"));
region_data.insert(std::make_pair("MN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S %Z\","
- "\"zipex\":\"65030,65270\","
- "\"posturl\":\"http://www.zipcode.mn/\","
- "\"languages\":\"mn\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
+ u8R"("zipex":"65030,65270",)"
+ u8R"("posturl":"http://www.zipcode.mn/",)"
+ u8R"("languages":"mn")"
"}"));
region_data.insert(std::make_pair("MO", "{"
- "\"fmt\":\"%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A\","
- "\"require\":\"A\","
- "\"languages\":\"zh-Hant~pt\""
+ u8R"("fmt":"%A%n%O%n%N",)"
+ u8R"("lfmt":"%N%n%O%n%A",)"
+ u8R"("require":"A",)"
+ u8R"("languages":"zh-Hant~pt")"
"}"));
region_data.insert(std::make_pair("MP", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96950,96951,96952\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96950,96951,96952",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("MQ", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97220\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97220",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("MR", "{"
- "\"languages\":\"ar\""
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("MS", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("MT", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"NXR 01,ZTN 05,GPO 01,BZN 1130,SPB 6031,VCT 1753\","
- "\"posturl\":\"http://postcodes.maltapost.com/\","
- "\"languages\":\"mt~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"NXR 01,ZTN 05,GPO 01,BZN 1130,SPB 6031,VCT 1753",)"
+ u8R"("posturl":"http://postcodes.maltapost.com/",)"
+ u8R"("languages":"mt~en")"
"}"));
region_data.insert(std::make_pair("MU", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C\","
- "\"zipex\":\"42602\","
- "\"languages\":\"en~fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
+ u8R"("zipex":"42602",)"
+ u8R"("languages":"en~fr")"
"}"));
region_data.insert(std::make_pair("MV", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"20026\","
- "\"posturl\":\"http://www.maldivespost.com/\?lid=10\","
- "\"languages\":\"dv\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"20026",)"
+ u8R"("posturl":"http://www.maldivespost.com/?lid=10",)"
+ u8R"("languages":"dv")"
"}"));
region_data.insert(std::make_pair("MW", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %X\","
- "\"languages\":\"en~ny\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %X",)"
+ u8R"("languages":"en~ny")"
"}"));
region_data.insert(std::make_pair("MX", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%Z %C, %S\","
- "\"require\":\"ACZ\","
- "\"state_name_type\":\"state\","
- "\"sublocality_name_type\":\"neighborhood\","
- "\"zipex\":\"02860,77520,06082\","
- "\"posturl\":\"http://www.correosdemexico.gob.mx/ServiciosLinea/Paginas/ccpostales.aspx\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%Z %C, %S",)"
+ u8R"("require":"ACZ",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("sublocality_name_type":"neighborhood",)"
+ u8R"("zipex":"02860,77520,06082",)"
+ u8R"("posturl":"http://www.correosdemexico.gob.mx/ServiciosLinea/Paginas/ccpostales.aspx",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("MY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%Z %C%n%S\","
- "\"require\":\"ACZ\","
- "\"state_name_type\":\"state\","
- "\"sublocality_name_type\":\"village_township\","
- "\"zipex\":\"43000,50754,88990,50670\","
- "\"posturl\":\"http://www.pos.com.my\","
- "\"languages\":\"ms\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%Z %C%n%S",)"
+ u8R"("require":"ACZ",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("sublocality_name_type":"village_township",)"
+ u8R"("zipex":"43000,50754,88990,50670",)"
+ u8R"("posturl":"http://www.pos.com.my",)"
+ u8R"("languages":"ms")"
"}"));
region_data.insert(std::make_pair("MZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1102,1119,3212\","
- "\"languages\":\"pt\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1102,1119,3212",)"
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("NA", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("NC", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"98814,98800,98810\","
- "\"posturl\":\"http://poste.opt.nc/index.php\?option=com_content&view=article&id=80&Itemid=131\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"98814,98800,98810",)"
+ u8R"("posturl":"http://poste.opt.nc/index.php?option=com_content&view=article&id=80&Itemid=131",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("NE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"8001\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"8001",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("NF", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
- "\"zipex\":\"2899\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
+ u8R"("zipex":"2899",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("NG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%C %Z%n%S\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"930283,300001,931104\","
- "\"posturl\":\"http://www.nigeriapostcodes.com/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%C %Z%n%S",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"930283,300001,931104",)"
+ u8R"("posturl":"http://www.nigeriapostcodes.com/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("NI", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C, %S\","
- "\"state_name_type\":\"department\","
- "\"zipex\":\"52000\","
- "\"posturl\":\"http://www.correos.gob.ni/index.php/codigo-postal-2\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C, %S",)"
+ u8R"("state_name_type":"department",)"
+ u8R"("zipex":"52000",)"
+ u8R"("posturl":"http://www.correos.gob.ni/index.php/codigo-postal-2",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("NL", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"1234 AB,2490 AA\","
- "\"posturl\":\"http://www.postnl.nl/voorthuis/\","
- "\"languages\":\"nl~fy\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"1234 AB,2490 AA",)"
+ u8R"("posturl":"http://www.postnl.nl/voorthuis/",)"
+ u8R"("languages":"nl~fy")"
"}"));
region_data.insert(std::make_pair("NO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"locality_name_type\":\"post_town\","
- "\"zipex\":\"0025,0107,6631\","
- "\"posturl\":\"http://adressesok.posten.no/nb/postal_codes/search\","
- "\"languages\":\"no~nn~se\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("locality_name_type":"post_town",)"
+ u8R"("zipex":"0025,0107,6631",)"
+ u8R"("posturl":"http://adressesok.posten.no/nb/postal_codes/search",)"
+ u8R"("languages":"no~nn~se")"
"}"));
region_data.insert(std::make_pair("NP", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"44601\","
- "\"posturl\":\"http://www.gpo.gov.np/postalcode.aspx\","
- "\"languages\":\"ne\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"44601",)"
+ u8R"("posturl":"http://www.gpo.gov.np/postalcode.aspx",)"
+ u8R"("languages":"ne")"
"}"));
region_data.insert(std::make_pair("NR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S\","
- "\"require\":\"AS\","
- "\"state_name_type\":\"district\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%S",)"
+ u8R"("require":"AS",)"
+ u8R"("state_name_type":"district",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("NU", "{"
- "\"languages\":\"en~niu\""
+ u8R"("languages":"en~niu")"
"}"));
region_data.insert(std::make_pair("NZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%C %Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"6001,6015,6332,8252,1030\","
- "\"posturl\":\"http://www.nzpost.co.nz/Cultures/en-NZ/OnlineTools/PostCodeFinder/\","
- "\"languages\":\"en~mi\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%C %Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"6001,6015,6332,8252,1030",)"
+ u8R"("posturl":"http://www.nzpost.co.nz/Cultures/en-NZ/OnlineTools/PostCodeFinder/",)"
+ u8R"("languages":"en~mi")"
"}"));
region_data.insert(std::make_pair("OM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z%n%C\","
- "\"zipex\":\"133,112,111\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
+ u8R"("zipex":"133,112,111",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("PA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("PE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z%n%S\","
- "\"zipex\":\"LIMA 23,LIMA 42,CALLAO 2,02001\","
- "\"posturl\":\"http://www.serpost.com.pe/cpostal/codigo\","
- "\"languages\":\"es~qu\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z%n%S",)"
+ u8R"("zipex":"LIMA 23,LIMA 42,CALLAO 2,02001",)"
+ u8R"("posturl":"http://www.serpost.com.pe/cpostal/codigo",)"
+ u8R"("languages":"es~qu")"
"}"));
region_data.insert(std::make_pair("PF", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C %S\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"island\","
- "\"zipex\":\"98709\","
- "\"languages\":\"fr~ty\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("zipex":"98709",)"
+ u8R"("languages":"fr~ty")"
"}"));
region_data.insert(std::make_pair("PG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z %S\","
- "\"require\":\"ACS\","
- "\"zipex\":\"111\","
- "\"languages\":\"tpi~en~ho\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z %S",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"111",)"
+ u8R"("languages":"tpi~en~ho")"
"}"));
region_data.insert(std::make_pair("PH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D, %C%n%Z %S\","
- "\"zipex\":\"1008,1050,1135,1207,2000,1000\","
- "\"posturl\":\"http://www.philpost.gov.ph/\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%D, %C%n%Z %S",)"
+ u8R"("zipex":"1008,1050,1135,1207,2000,1000",)"
+ u8R"("posturl":"http://www.philpost.gov.ph/",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("PK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C-%Z\","
- "\"zipex\":\"44000\","
- "\"posturl\":\"http://www.pakpost.gov.pk/postcode/postcode.html\","
- "\"languages\":\"ur~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C-%Z",)"
+ u8R"("zipex":"44000",)"
+ u8R"("posturl":"http://www.pakpost.gov.pk/postcode/postcode.html",)"
+ u8R"("languages":"ur~en")"
"}"));
region_data.insert(std::make_pair("PL", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"00-950,05-470,48-300,32-015,00-940\","
- "\"posturl\":\"http://kody.poczta-polska.pl/\","
- "\"languages\":\"pl~de~csb~lt\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"00-950,05-470,48-300,32-015,00-940",)"
+ u8R"("posturl":"http://kody.poczta-polska.pl/",)"
+ u8R"("languages":"pl~de~csb~lt")"
"}"));
region_data.insert(std::make_pair("PM", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97500\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97500",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("PN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"PCRN 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"PCRN 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("PR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C PR %Z\","
- "\"require\":\"ACZ\","
- "\"zip_name_type\":\"zip\","
- "\"zipex\":\"00930\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"es~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C PR %Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("zipex":"00930",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"es~en")"
"}"));
region_data.insert(std::make_pair("PS", "{"
- "\"languages\":\"ar\""
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("PT", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"2725-079,1250-096,1201-950,2860-571,1208-148\","
- "\"posturl\":\"http://www.ctt.pt/feapl_2/app/open/tools.jspx\?tool=1\","
- "\"languages\":\"pt\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"2725-079,1250-096,1201-950,2860-571,1208-148",)"
+ u8R"("posturl":"http://www.ctt.pt/feapl_2/app/open/tools.jspx?tool=1",)"
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("PW", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96940\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"pau~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96940",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"pau~en")"
"}"));
region_data.insert(std::make_pair("PY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1536,1538,1209\","
- "\"languages\":\"gn~es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1536,1538,1209",)"
+ u8R"("languages":"gn~es")"
"}"));
region_data.insert(std::make_pair("QA", "{"
- "\"languages\":\"ar\""
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("RE", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97400\","
- "\"posturl\":\"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97400",)"
+ u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("RO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"060274,061357,200716\","
- "\"posturl\":\"http://www.posta-romana.ro/zip_codes\","
- "\"languages\":\"ro\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"060274,061357,200716",)"
+ u8R"("posturl":"http://www.posta-romana.ro/zip_codes",)"
+ u8R"("languages":"ro")"
"}"));
region_data.insert(std::make_pair("RS", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"106314\","
- "\"posturl\":\"http://www.posta.rs/struktura/lat/aplikacije/pronadji/nadji-postu.asp\","
- "\"languages\":\"sr~sr-Latn~hu~ro~hr~sk~uk\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"106314",)"
+ u8R"("posturl":"http://www.posta.rs/struktura/lat/aplikacije/pronadji/nadji-postu.asp",)"
+ u8R"("languages":"sr~sr-Latn~hu~ro~hr~sk~uk")"
"}"));
region_data.insert(std::make_pair("RU", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"oblast\","
- "\"zipex\":\"247112,103375,188300\","
- "\"posturl\":\"http://info.russianpost.ru/servlet/department\","
- "\"languages\":\"ru\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"oblast",)"
+ u8R"("zipex":"247112,103375,188300",)"
+ u8R"("posturl":"http://info.russianpost.ru/servlet/department",)"
+ u8R"("languages":"ru")"
"}"));
region_data.insert(std::make_pair("RW", "{"
- "\"languages\":\"rw~en~fr\""
+ u8R"("languages":"rw~en~fr")"
"}"));
region_data.insert(std::make_pair("SA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"11564,11187,11142\","
- "\"languages\":\"ar\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"11564,11187,11142",)"
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("SB", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("SC", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"state_name_type\":\"island\","
- "\"languages\":\"fr~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("languages":"fr~en")"
"}"));
region_data.insert(std::make_pair("SE", "{"
- "\"fmt\":\"%O%n%N%n%A%nSE-%Z %C\","
- "\"require\":\"ACZ\","
- "\"locality_name_type\":\"post_town\","
- "\"zipex\":\"11455,12345,10500\","
- "\"posturl\":\"http://www.posten.se/sv/Kundservice/Sidor/Sok-postnummer-resultat.aspx\","
- "\"languages\":\"sv~fi\""
+ u8R"("fmt":"%O%n%N%n%A%nSE-%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("locality_name_type":"post_town",)"
+ u8R"("zipex":"11455,12345,10500",)"
+ u8R"("posturl":"http://www.posten.se/sv/Kundservice/Sidor/Sok-postnummer-resultat.aspx",)"
+ u8R"("languages":"sv~fi")"
"}"));
region_data.insert(std::make_pair("SG", "{"
- "\"fmt\":\"%N%n%O%n%A%nSINGAPORE %Z\","
- "\"require\":\"AZ\","
- "\"zipex\":\"546080,308125,408600\","
- "\"posturl\":\"https://www.singpost.com/find-postal-code\","
- "\"languages\":\"en~zh~ms~ta\""
+ u8R"("fmt":"%N%n%O%n%A%nSINGAPORE %Z",)"
+ u8R"("require":"AZ",)"
+ u8R"("zipex":"546080,308125,408600",)"
+ u8R"("posturl":"https://www.singpost.com/find-postal-code",)"
+ u8R"("languages":"en~zh~ms~ta")"
"}"));
region_data.insert(std::make_pair("SH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"STHL 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"STHL 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("SI", "{"
- "\"fmt\":\"%N%n%O%n%A%nSI- %Z %C\","
- "\"zipex\":\"4000,1001,2500\","
- "\"languages\":\"sl\""
+ u8R"("fmt":"%N%n%O%n%A%nSI- %Z %C",)"
+ u8R"("zipex":"4000,1001,2500",)"
+ u8R"("languages":"sl")"
"}"));
region_data.insert(std::make_pair("SJ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"ACZ\","
- "\"locality_name_type\":\"post_town\","
- "\"zipex\":\"9170\","
- "\"posturl\":\"http://epab.posten.no/\","
- "\"languages\":\"no\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"ACZ",)"
+ u8R"("locality_name_type":"post_town",)"
+ u8R"("zipex":"9170",)"
+ u8R"("posturl":"http://epab.posten.no/",)"
+ u8R"("languages":"no")"
"}"));
region_data.insert(std::make_pair("SK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"010 01,023 14,972 48,921 01,975 99\","
- "\"posturl\":\"http://psc.posta.sk\","
- "\"languages\":\"sk\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"010 01,023 14,972 48,921 01,975 99",)"
+ u8R"("posturl":"http://psc.posta.sk",)"
+ u8R"("languages":"sk")"
"}"));
region_data.insert(std::make_pair("SL", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("SM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"AZ\","
- "\"zipex\":\"47890,47891,47895,47899\","
- "\"posturl\":\"http://www.poste.it/online/cercacap/\","
- "\"languages\":\"it\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("require":"AZ",)"
+ u8R"("zipex":"47890,47891,47895,47899",)"
+ u8R"("posturl":"http://www.poste.it/online/cercacap/",)"
+ u8R"("languages":"it")"
"}"));
region_data.insert(std::make_pair("SN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"12500,46024,16556,10000\","
- "\"languages\":\"wo~fr~ff~srr~dyo~sav~mfv~bjt~snf~knf~bsc~mey~tnr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"12500,46024,16556,10000",)"
+ u8R"("languages":"wo~fr~ff~srr~dyo~sav~mfv~bjt~snf~knf~bsc~mey~tnr")"
"}"));
region_data.insert(std::make_pair("SO", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S %Z\","
- "\"require\":\"ACS\","
- "\"zipex\":\"JH 09010,AD 11010\","
- "\"languages\":\"so\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"JH 09010,AD 11010",)"
+ u8R"("languages":"so")"
"}"));
region_data.insert(std::make_pair("SR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"languages\":\"nl\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
+ u8R"("languages":"nl")"
"}"));
region_data.insert(std::make_pair("SS", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("ST", "{"
- "\"languages\":\"pt\""
+ u8R"("languages":"pt")"
"}"));
region_data.insert(std::make_pair("SV", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z-%C%n%S\","
- "\"require\":\"ACS\","
- "\"zipex\":\"CP 1101\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z-%C%n%S",)"
+ u8R"("require":"ACS",)"
+ u8R"("zipex":"CP 1101",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("SX", "{"
- "\"languages\":\"en~nl\""
+ u8R"("languages":"en~nl")"
"}"));
region_data.insert(std::make_pair("SZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"H100\","
- "\"posturl\":\"http://www.sptc.co.sz/swazipost/codes/index.php\","
- "\"languages\":\"en~ss\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"H100",)"
+ u8R"("posturl":"http://www.sptc.co.sz/swazipost/codes/index.php",)"
+ u8R"("languages":"en~ss")"
"}"));
region_data.insert(std::make_pair("TA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"zipex\":\"TDCU 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("zipex":"TDCU 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("TC", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"TKCA 1ZZ\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"TKCA 1ZZ",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("TD", "{"
- "\"languages\":\"fr~ar\""
+ u8R"("languages":"fr~ar")"
"}"));
region_data.insert(std::make_pair("TF", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("TG", "{"
- "\"languages\":\"fr\""
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("TH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D %C%n%S %Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%D, %C%n%S %Z\","
- "\"zipex\":\"10150,10210\","
- "\"languages\":\"th\""
+ u8R"("fmt":"%N%n%O%n%A%n%D %C%n%S %Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%D, %C%n%S %Z",)"
+ u8R"("zipex":"10150,10210",)"
+ u8R"("languages":"th")"
"}"));
region_data.insert(std::make_pair("TJ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"735450,734025\","
- "\"languages\":\"tg\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"735450,734025",)"
+ u8R"("languages":"tg")"
"}"));
region_data.insert(std::make_pair("TK", "{"
- "\"languages\":\"en~tkl\""
+ u8R"("languages":"en~tkl")"
"}"));
region_data.insert(std::make_pair("TL", "{"
- "\"languages\":\"pt~tet\""
+ u8R"("languages":"pt~tet")"
"}"));
region_data.insert(std::make_pair("TM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"744000\","
- "\"languages\":\"tk\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"744000",)"
+ u8R"("languages":"tk")"
"}"));
region_data.insert(std::make_pair("TN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"1002,8129,3100,1030\","
- "\"posturl\":\"http://www.poste.tn/codes.php\","
- "\"languages\":\"ar~fr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"1002,8129,3100,1030",)"
+ u8R"("posturl":"http://www.poste.tn/codes.php",)"
+ u8R"("languages":"ar~fr")"
"}"));
region_data.insert(std::make_pair("TO", "{"
- "\"languages\":\"to~en\""
+ u8R"("languages":"to~en")"
"}"));
region_data.insert(std::make_pair("TR", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C/%S\","
- "\"require\":\"ACZ\","
- "\"locality_name_type\":\"district\","
- "\"zipex\":\"01960,06101\","
- "\"posturl\":\"http://postakodu.ptt.gov.tr/\","
- "\"languages\":\"tr\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C/%S",)"
+ u8R"("require":"ACZ",)"
+ u8R"("locality_name_type":"district",)"
+ u8R"("zipex":"01960,06101",)"
+ u8R"("posturl":"http://postakodu.ptt.gov.tr/",)"
+ u8R"("languages":"tr")"
"}"));
region_data.insert(std::make_pair("TT", "{"
- "\"languages\":\"en\""
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("TV", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"state_name_type\":\"island\","
- "\"languages\":\"tyv\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
+ u8R"("state_name_type":"island",)"
+ u8R"("languages":"tyv")"
"}"));
region_data.insert(std::make_pair("TW", "{"
- "\"fmt\":\"%Z%n%S%C%n%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A%n%C, %S %Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"county\","
- "\"zipex\":\"104,106,10603,40867\","
- "\"posturl\":\"http://www.post.gov.tw/post/internet/f_searchzone/index.jsp\?ID=190102\","
- "\"languages\":\"zh-Hant\""
+ u8R"("fmt":"%Z%n%S%C%n%A%n%O%n%N",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C, %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"county",)"
+ u8R"("zipex":"104,106,10603,40867",)"
+ u8R"("posturl":"http://www.post.gov.tw/post/internet/f_searchzone/index.jsp?ID=190102",)"
+ u8R"("languages":"zh-Hant")"
"}"));
region_data.insert(std::make_pair("TZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"6090,34413\","
- "\"languages\":\"sw~en\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"6090,34413",)"
+ u8R"("languages":"sw~en")"
"}"));
region_data.insert(std::make_pair("UA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
- "\"require\":\"ACSZ\","
- "\"state_name_type\":\"oblast\","
- "\"zipex\":\"15432,01055,01001\","
- "\"posturl\":\"http://services.ukrposhta.com/postindex_new/\","
- "\"languages\":\"uk\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("state_name_type":"oblast",)"
+ u8R"("zipex":"15432,01055,01001",)"
+ u8R"("posturl":"http://services.ukrposhta.com/postindex_new/",)"
+ u8R"("languages":"uk")"
"}"));
region_data.insert(std::make_pair("UG", "{"
- "\"languages\":\"sw~en\""
+ u8R"("languages":"sw~en")"
"}"));
region_data.insert(std::make_pair("UM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACS\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"96898\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACS",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"96898",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("US", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C, %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"95014,22162-1010\","
- "\"posturl\":\"https://tools.usps.com/go/ZipLookupAction!input.action\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"95014,22162-1010",)"
+ u8R"("posturl":"https://tools.usps.com/go/ZipLookupAction!input.action",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("UY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C %S\","
- "\"zipex\":\"11600\","
- "\"posturl\":\"http://www.correo.com.uy/index.asp\?codPag=codPost&switchMapa=codPost\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
+ u8R"("zipex":"11600",)"
+ u8R"("posturl":"http://www.correo.com.uy/index.asp?codPag=codPost&switchMapa=codPost",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("UZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C%n%S\","
- "\"zipex\":\"702100,700000\","
- "\"posturl\":\"http://www.pochta.uz/ru/uslugi/indexsearch.html\","
- "\"languages\":\"uz~uz-Cyrl\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
+ u8R"("zipex":"702100,700000",)"
+ u8R"("posturl":"http://www.pochta.uz/ru/uslugi/indexsearch.html",)"
+ u8R"("languages":"uz~uz-Cyrl")"
"}"));
region_data.insert(std::make_pair("VA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"00120\","
- "\"languages\":\"it\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"00120",)"
+ u8R"("languages":"it")"
"}"));
region_data.insert(std::make_pair("VC", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
- "\"zipex\":\"VC0100,VC0110,VC0400\","
- "\"posturl\":\"http://www.svgpost.gov.vc/\?option=com_content&view=article&id=3&Itemid=16\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
+ u8R"("zipex":"VC0100,VC0110,VC0400",)"
+ u8R"("posturl":"http://www.svgpost.gov.vc/?option=com_content&view=article&id=3&Itemid=16",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("VE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z, %S\","
- "\"require\":\"ACS\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"1010,3001,8011,1020\","
- "\"posturl\":\"http://www.ipostel.gob.ve/index.php/oficinas-postales\","
- "\"languages\":\"es\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %Z, %S",)"
+ u8R"("require":"ACS",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"1010,3001,8011,1020",)"
+ u8R"("posturl":"http://www.ipostel.gob.ve/index.php/oficinas-postales",)"
+ u8R"("languages":"es")"
"}"));
region_data.insert(std::make_pair("VG", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
- "\"require\":\"A\","
- "\"zipex\":\"VG1110,VG1150,VG1160\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
+ u8R"("require":"A",)"
+ u8R"("zipex":"VG1110,VG1150,VG1160",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("VI", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %S %Z\","
- "\"require\":\"ACSZ\","
- "\"zip_name_type\":\"zip\","
- "\"state_name_type\":\"state\","
- "\"zipex\":\"00802-1222,00850-9802\","
- "\"posturl\":\"http://zip4.usps.com/zip4/welcome.jsp\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
+ u8R"("require":"ACSZ",)"
+ u8R"("zip_name_type":"zip",)"
+ u8R"("state_name_type":"state",)"
+ u8R"("zipex":"00802-1222,00850-9802",)"
+ u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("VN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S %Z\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S %Z\","
- "\"zipex\":\"119415,136065,720344\","
- "\"posturl\":\"http://postcode.vnpost.vn/services/search.aspx\","
- "\"languages\":\"vi\""
+ u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
+ u8R"("lfmt":"%N%n%O%n%A%n%C%n%S %Z",)"
+ u8R"("zipex":"119415,136065,720344",)"
+ u8R"("posturl":"http://postcode.vnpost.vn/services/search.aspx",)"
+ u8R"("languages":"vi")"
"}"));
region_data.insert(std::make_pair("VU", "{"
- "\"languages\":\"bi~en~fr\""
+ u8R"("languages":"bi~en~fr")"
"}"));
region_data.insert(std::make_pair("WF", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"98600\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"98600",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("WS", "{"
- "\"languages\":\"sm~en\""
+ u8R"("languages":"sm~en")"
"}"));
region_data.insert(std::make_pair("XK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"10000\","
- "\"languages\":\"sq~sr~sr-Latn\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"10000",)"
+ u8R"("languages":"sq~sr~sr-Latn")"
"}"));
region_data.insert(std::make_pair("YE", "{"
- "\"languages\":\"ar\""
+ u8R"("languages":"ar")"
"}"));
region_data.insert(std::make_pair("YT", "{"
- "\"fmt\":\"%O%n%N%n%A%n%Z %C %X\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"97600\","
- "\"languages\":\"fr\""
+ u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"97600",)"
+ u8R"("languages":"fr")"
"}"));
region_data.insert(std::make_pair("ZA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%D%n%C%n%Z\","
- "\"require\":\"ACZ\","
- "\"zipex\":\"0083,1451,0001\","
- "\"posturl\":\"https://www.postoffice.co.za/contactus/postalcode.html\","
- "\"languages\":\"en~zu~xh~af~nso~tn~st~ts~ss~ve~nr\""
+ u8R"("fmt":"%N%n%O%n%A%n%D%n%C%n%Z",)"
+ u8R"("require":"ACZ",)"
+ u8R"("zipex":"0083,1451,0001",)"
+ u8R"("posturl":"https://www.postoffice.co.za/contactus/postalcode.html",)"
+ u8R"("languages":"en~zu~xh~af~nso~tn~st~ts~ss~ve~nr")"
"}"));
region_data.insert(std::make_pair("ZM", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"50100,50101\","
- "\"languages\":\"en\""
+ u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
+ u8R"("zipex":"50100,50101",)"
+ u8R"("languages":"en")"
"}"));
region_data.insert(std::make_pair("ZW", "{"
- "\"languages\":\"sn~en~nd\""
+ u8R"("languages":"sn~en~nd")"
"}"));
return region_data;
}
@@ -1422,12 +1422,12 @@
const std::string& RegionDataConstants::GetDefaultRegionData() {
static const std::string kDefaultRegionData(
"{"
- "\"fmt\":\"%N%n%O%n%A%n%C\","
- "\"require\":\"AC\","
- "\"zip_name_type\":\"postal\","
- "\"state_name_type\":\"province\","
- "\"locality_name_type\":\"city\","
- "\"sublocality_name_type\":\"suburb\""
+ u8R"("fmt":"%N%n%O%n%A%n%C",)"
+ u8R"("require":"AC",)"
+ u8R"("zip_name_type":"postal",)"
+ u8R"("state_name_type":"province",)"
+ u8R"("locality_name_type":"city",)"
+ u8R"("sublocality_name_type":"suburb")"
"}");
return kDefaultRegionData;
}
diff --git a/cpp/src/rule.cc b/cpp/src/rule.cc
index 0d9a02d..5ee1d09 100644
--- a/cpp/src/rule.cc
+++ b/cpp/src/rule.cc
@@ -160,7 +160,7 @@
// in regular expressions - (, [, \, {, ?. These special characters are all the
// ones that appear in the postal code regular expressions.
bool ContainsRegExSpecialCharacters(const std::string& input) {
- return input.find_first_of("([\\{?") != std::string::npos;
+ return input.find_first_of(R"(([\{?)") != std::string::npos;
}
} // namespace
diff --git a/cpp/src/validating_storage.h b/cpp/src/validating_storage.h
index f1e22f1..c4d24f3 100644
--- a/cpp/src/validating_storage.h
+++ b/cpp/src/validating_storage.h
@@ -41,17 +41,17 @@
// Takes ownership of |storage|.
explicit ValidatingStorage(Storage* storage);
- virtual ~ValidatingStorage();
+ ~ValidatingStorage() override;
// Storage implementation.
- virtual void Put(const std::string& key, std::string* data);
+ void Put(const std::string& key, std::string* data) override;
// Storage implementation.
// If the data is invalid, then |data_ready| will be called with (false, key,
// empty-string). If the data is valid, but stale, then |data_ready| will be
// called with (false, key, stale-data). If the data is valid and fresh, then
// |data_ready| will be called with (true, key, fresh-data).
- virtual void Get(const std::string& key, const Callback& data_ready) const;
+ void Get(const std::string& key, const Callback& data_ready) const override;
private:
// The storage being wrapped.
diff --git a/cpp/src/validation_task.cc b/cpp/src/validation_task.cc
index 9f0911a..9bdff45 100644
--- a/cpp/src/validation_task.cc
+++ b/cpp/src/validation_task.cc
@@ -66,7 +66,7 @@
assert(supplier != nullptr);
problems_->clear();
lookup_key_->FromAddress(address_);
- supplier->Supply(*lookup_key_, *supplied_);
+ supplier->SupplyGlobally(*lookup_key_, *supplied_);
}
void ValidationTask::Validate(bool success,
diff --git a/cpp/test/address_field_util_test.cc b/cpp/test/address_field_util_test.cc
index 0cde367..f545df4 100644
--- a/cpp/test/address_field_util_test.cc
+++ b/cpp/test/address_field_util_test.cc
@@ -38,7 +38,7 @@
TEST(AddressFieldUtilTest, FormatParseNewline) {
std::vector<FormatElement> actual;
- ParseFormatRule("%O%n%N%n%A%nAX-%Z %C%n\xC3\x85LAND", &actual); /* "ÅLAND" */
+ ParseFormatRule(u8"%O%n%N%n%A%nAX-%Z %C%nÅLAND", &actual);
std::vector<FormatElement> expected;
expected.push_back(FormatElement(ORGANIZATION));
@@ -52,7 +52,7 @@
expected.push_back(FormatElement(" "));
expected.push_back(FormatElement(LOCALITY));
expected.push_back(FormatElement());
- expected.push_back(FormatElement("\xC3\x85LAND")); /* "ÅLAND" */
+ expected.push_back(FormatElement(u8"ÅLAND"));
EXPECT_EQ(expected, actual);
}
diff --git a/cpp/test/address_formatter_test.cc b/cpp/test/address_formatter_test.cc
index c656ec8..fe6092a 100644
--- a/cpp/test/address_formatter_test.cc
+++ b/cpp/test/address_formatter_test.cc
@@ -80,7 +80,7 @@
address.language_code = "ar";
GetStreetAddressLinesAsSingleLine(address, &result);
- EXPECT_EQ("Line 1\xD8\x8C" " Line 2", result); // Arabic comma.
+ EXPECT_EQ(u8"Line 1، Line 2", result);
}
TEST(AddressFormatterTest, GetStreetAddressLinesAsSingleLine_5Lines) {
@@ -129,13 +129,9 @@
}
TEST(AddressFormatterTest, GetFormattedNationalAddressLatinFormat) {
- /* 大安區 */
- static const char kTaiwanCity[] = "\xE5\xA4\xA7\xE5\xAE\x89\xE5\x8D\x80";
- /* 台北市 */
- static const char kTaiwanAdmin[] = "\xE5\x8F\xB0\xE5\x8C\x97\xE5\xB8\x82";
- /* 台灣信義路三段33號 */
- static const char kTaiwanStreetLine[]= "\xE5\x8F\xB0\xE7\x81\xA3\xE4\xBF\xA1"
- "\xE7\xBE\xA9\xE8\xB7\xAF\xE4\xB8\x89\xE6\xAE\xB5" "33" "\xE8\x99\x9F";
+ static const char kTaiwanCity[] = u8"大安區";
+ static const char kTaiwanAdmin[] = u8"台北市";
+ static const char kTaiwanStreetLine[] = u8"台灣信義路三段33號";
static const char kPostalCode[] = "106";
AddressData address;
@@ -286,7 +282,7 @@
AddressData address;
address.region_code = "AX";
std::vector<std::string> expected;
- expected.push_back("\xC3\x85LAND"); /* ÅLAND */
+ expected.push_back(u8"ÅLAND");
std::vector<std::string> lines;
GetFormattedNationalAddress(address, &lines);
EXPECT_EQ(expected, lines);
@@ -313,7 +309,7 @@
EXPECT_EQ(expected, lines);
address.postal_code = "123";
- expected.push_back("\xE3\x80\x92" "123"); /* 〒123 */
+ expected.push_back(u8"〒123");
GetFormattedNationalAddress(address, &lines);
EXPECT_EQ(expected, lines);
diff --git a/cpp/test/address_input_helper_test.cc b/cpp/test/address_input_helper_test.cc
index 614047f..e8e4fef 100644
--- a/cpp/test/address_input_helper_test.cc
+++ b/cpp/test/address_input_helper_test.cc
@@ -107,11 +107,11 @@
address.region_code = "TW";
address.postal_code = "53012";
- /* This matches 二水鄉 - Ershuei Township. */
+ // This matches 二水鄉 - Ershuei Township.
AddressData expected = address;
- /* This locality is in 彰化縣 - Changhua County. */
- expected.administrative_area = "\xE5\xBD\xB0\xE5\x8C\x96\xE7\xB8\xA3";
- expected.locality = "\xE4\xBA\x8C\xE6\xB0\xB4\xE9\x84\x89";
+ // This locality is in 彰化縣 - Changhua County.
+ expected.administrative_area = u8"彰化縣";
+ expected.locality = u8"二水鄉";
FillAddress(&address);
EXPECT_EQ(expected, address);
@@ -130,9 +130,9 @@
address.postal_code = "53012";
address.language_code = "zh-Latn";
- /* This matches 二水鄉 - Ershuei Township. */
+ // This matches 二水鄉 - Ershuei Township.
AddressData expected = address;
- /* This locality is in 彰化縣 - Changhua County. */
+ // This locality is in 彰化縣 - Changhua County.
expected.locality = "Ershuei Township";
expected.administrative_area = "Changhua County";
FillAddress(&address);
@@ -154,12 +154,12 @@
address.postal_code = "425-111";
AddressData expected = address;
- /* The province is Gyeonggi - 경기도. */
- expected.administrative_area = "\xEA\xB2\xBD\xEA\xB8\xB0\xEB\x8F\x84";
- /* The city is Ansan-si - 안산시. */
- expected.locality = "\xEC\x95\x88\xEC\x82\xB0\xEC\x8B\x9C";
- /* The district is Danwon-gu - 단원구 */
- expected.dependent_locality = "\xEB\x8B\xA8\xEC\x9B\x90\xEA\xB5\xAC";
+ // The province is Gyeonggi - 경기도.
+ expected.administrative_area = u8"경기도";
+ // The city is Ansan-si - 안산시.
+ expected.locality = u8"안산시";
+ // The district is Danwon-gu - 단원구
+ expected.dependent_locality = u8"단원구";
FillAddress(&address);
EXPECT_EQ(expected, address);
@@ -170,11 +170,11 @@
address_ko_latn.language_code = "ko-latn";
expected = address_ko_latn;
- /* The province is Gyeonggi - 경기도. */
+ // The province is Gyeonggi - 경기도.
expected.administrative_area = "Gyeonggi";
- /* The city is Ansan-si - 안산시. */
+ // The city is Ansan-si - 안산시.
expected.locality = "Ansan-si";
- /* The district is Danwon-gu - 단원구 */
+ // The district is Danwon-gu - 단원구
expected.dependent_locality = "Danwon-gu";
FillAddress(&address_ko_latn);
@@ -188,10 +188,9 @@
address.postal_code = "527-111";
AddressData expected = address;
- /* The province, Jeonnam - 전라남도 - is known, but we have several locality
- * matches so none of them are populated. */
- expected.administrative_area =
- "\xEC\xA0\x84\xEB\x9D\xBC\xEB\x82\xA8\xEB\x8F\x84";
+ // The province, Jeonnam - 전라남도 - is known, but we have several locality
+ // matches so none of them are populated.
+ expected.administrative_area = u8"전라남도";
FillAddress(&address);
EXPECT_EQ(expected, address);
}
@@ -295,18 +294,18 @@
// We use KR since we need a country where we format all fields down to
// dependent locality, or the hierarchy won't be loaded.
"data/KR",
- "{\"data/KR\": "
+ R"({"data/KR": )"
// The top-level ZIP expression must be present for sub-key matches to be
// evaluated.
- "{\"id\":\"data/KR\", \"sub_keys\":\"A~B\", \"zip\":\"\\\\d{5}\"}, "
- "\"data/KR/A\": "
- "{\"id\":\"data/KR/A\", \"sub_keys\":\"A1\"}, "
- "\"data/KR/A/A1\": "
- "{\"id\":\"data/KR/A/A1\", \"zip\":\"1\"}, "
- "\"data/KR/B\": "
- "{\"id\":\"data/KR/B\", \"sub_keys\":\"B1\"}, "
- "\"data/KR/B/B1\": "
- "{\"id\":\"data/KR/B/B1\", \"zip\":\"12\"}}"));
+ R"({"id":"data/KR", "sub_keys":"A~B", "zip":"\\d{5}"}, )"
+ R"("data/KR/A": )"
+ R"({"id":"data/KR/A", "sub_keys":"A1"}, )"
+ R"("data/KR/A/A1": )"
+ R"({"id":"data/KR/A/A1", "zip":"1"}, )"
+ R"("data/KR/B": )"
+ R"({"id":"data/KR/B", "sub_keys":"B1"}, )"
+ R"("data/KR/B/B1": )"
+ R"({"id":"data/KR/B/B1", "zip":"12"}})"));
AddressData address;
address.region_code = "KR";
@@ -329,25 +328,25 @@
// We use KR since we need a country where we format all fields down to
// dependent locality, or the hierarchy won't be loaded.
"data/KR",
- "{\"data/KR\": "
+ R"({"data/KR": )"
// The top-level ZIP expression must be present for sub-key matches to be
// evaluated.
- "{\"id\":\"data/KR\", \"sub_keys\":\"A~B\", \"zip\":\"\\\\d{5}\"}, "
- "\"data/KR/A\": "
- "{\"id\":\"data/KR/A\", \"sub_keys\":\"A1~A2\"}, "
- "\"data/KR/A/A1\": "
- "{\"id\":\"data/KR/A/A1\", \"sub_keys\":\"A1a\", \"zip\":\"1\"}, "
+ R"({"id":"data/KR", "sub_keys":"A~B", "zip":"\\d{5}"}, )"
+ R"("data/KR/A": )"
+ R"({"id":"data/KR/A", "sub_keys":"A1~A2"}, )"
+ R"("data/KR/A/A1": )"
+ R"({"id":"data/KR/A/A1", "sub_keys":"A1a", "zip":"1"}, )"
// This key matches the ZIP code.
- "\"data/KR/A/A1/A1a\": "
- "{\"id\":\"data/KR/A/A1/A1a\", \"zip\":\"12\"}, "
- "\"data/KR/A/A2\": "
- "{\"id\":\"data/KR/A/A2\", \"sub_keys\":\"A2a\", \"zip\":\"1\"}, "
+ R"("data/KR/A/A1/A1a": )"
+ R"({"id":"data/KR/A/A1/A1a", "zip":"12"}, )"
+ R"("data/KR/A/A2": )"
+ R"({"id":"data/KR/A/A2", "sub_keys":"A2a", "zip":"1"}, )"
// This key, also in state A, but in city A2, matches the ZIP code.
- "\"data/KR/A/A2/A2a\": "
- "{\"id\":\"data/KR/A/A2/A2a\", \"zip\":\"123\"}, "
+ R"("data/KR/A/A2/A2a": )"
+ R"({"id":"data/KR/A/A2/A2a", "zip":"123"}, )"
// This key, in state B, does not match the ZIP code.
- "\"data/KR/B\": "
- "{\"id\":\"data/KR/B\", \"zip\":\"2\"}}"));
+ R"("data/KR/B": )"
+ R"({"id":"data/KR/B", "zip":"2"}})"));
AddressData address;
address.region_code = "KR";
diff --git a/cpp/test/address_normalizer_test.cc b/cpp/test/address_normalizer_test.cc
index 2794b0f..d678e06 100644
--- a/cpp/test/address_normalizer_test.cc
+++ b/cpp/test/address_normalizer_test.cc
@@ -150,11 +150,9 @@
AddressData address;
address.language_code = "ko-KR";
address.region_code = "KR";
- address.administrative_area = "\xEA\xB0\x95\xEC\x9B\x90"; /* "강원" */
+ address.administrative_area = u8"강원";
normalizer_.Normalize(&address);
- EXPECT_EQ(
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- address.administrative_area);
+ EXPECT_EQ(u8"강원도", address.administrative_area);
}
TEST_F(AddressNormalizerTest, DontSwitchLatinScriptForUnknownLanguage) {
@@ -170,11 +168,9 @@
supplier_.LoadRules("KR", *loaded_);
AddressData address;
address.region_code = "KR";
- address.administrative_area = "\xEA\xB0\x95\xEC\x9B\x90"; /* "강원" */
+ address.administrative_area = u8"강원";
normalizer_.Normalize(&address);
- EXPECT_EQ(
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- address.administrative_area);
+ EXPECT_EQ(u8"강원도", address.administrative_area);
}
} // namespace
diff --git a/cpp/test/address_ui_test.cc b/cpp/test/address_ui_test.cc
index d609e88..1f7d080 100644
--- a/cpp/test/address_ui_test.cc
+++ b/cpp/test/address_ui_test.cc
@@ -150,7 +150,8 @@
: public testing::TestWithParam<LanguageTestCase> {
public:
BestAddressLanguageTagTest(const BestAddressLanguageTagTest&) = delete;
- BestAddressLanguageTagTest& operator=(const BestAddressLanguageTagTest&) = delete;
+ BestAddressLanguageTagTest& operator=(const BestAddressLanguageTagTest&) =
+ delete;
protected:
BestAddressLanguageTagTest() {}
diff --git a/cpp/test/address_validator_test.cc b/cpp/test/address_validator_test.cc
index 466e3c8..b19b6e4 100644
--- a/cpp/test/address_validator_test.cc
+++ b/cpp/test/address_validator_test.cc
@@ -71,12 +71,10 @@
static ValidatorWrapper* Build() { return new OndemandValidatorWrapper; }
- virtual void Validate(const AddressData& address,
- bool allow_postal,
- bool require_name,
- const FieldProblemMap* filter,
- FieldProblemMap* problems,
- const AddressValidator::Callback& validated) {
+ void Validate(const AddressData& address, bool allow_postal,
+ bool require_name, const FieldProblemMap* filter,
+ FieldProblemMap* problems,
+ const AddressValidator::Callback& validated) override {
validator_.Validate(
address,
allow_postal,
@@ -102,12 +100,10 @@
static ValidatorWrapper* Build() { return new PreloadValidatorWrapper; }
- virtual void Validate(const AddressData& address,
- bool allow_postal,
- bool require_name,
- const FieldProblemMap* filter,
- FieldProblemMap* problems,
- const AddressValidator::Callback& validated) {
+ void Validate(const AddressData& address, bool allow_postal,
+ bool require_name, const FieldProblemMap* filter,
+ FieldProblemMap* problems,
+ const AddressValidator::Callback& validated) override {
const std::string& region_code = address.region_code;
if (!region_code.empty() && !supplier_.IsLoaded(region_code)) {
supplier_.LoadRules(region_code, *loaded_);
@@ -239,7 +235,7 @@
TEST_P(AddressValidatorTest, ValidAddressCH) {
address_.region_code = "CH";
- address_.locality = "ZH"; /* Zürich */
+ address_.locality = "ZH"; // Zürich
address_.postal_code = "8002";
address_.address_line.push_back("Brandschenkestrasse 110");
address_.language_code = "de";
@@ -267,9 +263,7 @@
address_.locality = "Villahermosa";
address_.administrative_area = "TAB"; // Tabasco
address_.postal_code = "86070";
- address_.address_line.push_back(
- /* Av Gregorio Méndez Magaña 1400 */
- "Av Gregorio M\xC3\xA9ndez Maga\xC3\xB1""a 1400");
+ address_.address_line.push_back(u8"Av Gregorio Méndez Magaña 1400");
address_.language_code = "es";
ASSERT_NO_FATAL_FAILURE(Validate());
@@ -282,9 +276,7 @@
address_.locality = "Villahermosa";
address_.administrative_area = "TAB"; // Tabasco
address_.postal_code = "80000";
- address_.address_line.push_back(
- /* Av Gregorio Méndez Magaña 1400 */
- "Av Gregorio M\xC3\xA9ndez Maga\xC3\xB1""a 1400");
+ address_.address_line.push_back(u8"Av Gregorio Méndez Magaña 1400");
address_.language_code = "es";
expected_.insert(std::make_pair(POSTAL_CODE, MISMATCHING_VALUE));
@@ -309,7 +301,7 @@
TEST_P(AddressValidatorTest, ValidateClearsProblems) {
address_.region_code = "CH";
- address_.locality = "ZH"; /* Zürich */
+ address_.locality = "ZH"; // Zürich
address_.postal_code = "123";
address_.address_line.push_back("Brandschenkestrasse 110");
address_.language_code = "de";
@@ -327,10 +319,8 @@
TEST_P(AddressValidatorTest, ValidKanjiAddressJP) {
address_.region_code = "JP";
- address_.administrative_area =
- "\xE5\xBE\xB3\xE5\xB3\xB6\xE7\x9C\x8C"; /* 徳島県 */
- address_.locality =
- "\xE5\xBE\xB3\xE5\xB3\xB6\xE5\xB8\x82"; /* 徳島市 */
+ address_.administrative_area = u8"徳島県";
+ address_.locality = u8"徳島市";
address_.postal_code = "770-0847";
address_.address_line.push_back("...");
address_.language_code = "ja";
@@ -363,7 +353,7 @@
if (GetParam() == &OndemandValidatorWrapper::Build) return;
address_.region_code = "BR";
- address_.administrative_area = "S\xC3\xA3o Paulo"; /* São Paulo */
+ address_.administrative_area = u8"São Paulo";
address_.locality = "Presidente Prudente";
address_.postal_code = "19063-008";
address_.address_line.push_back("Rodovia Raposo Tavares, 6388-6682");
@@ -398,7 +388,7 @@
address_.region_code = "CA";
address_.administrative_area = "Nouveau-Brunswick";
- address_.locality = "Comt\xC3\xA9 de Saint-Jean"; /* Comté de Saint-Jean */
+ address_.locality = u8"Comté de Saint-Jean";
address_.postal_code = "E2L 4Z6";
address_.address_line.push_back("...");
address_.language_code = "fr";
diff --git a/cpp/test/fake_storage.h b/cpp/test/fake_storage.h
index bd30438..605b72a 100644
--- a/cpp/test/fake_storage.h
+++ b/cpp/test/fake_storage.h
@@ -62,11 +62,11 @@
FakeStorage& operator=(const FakeStorage&) = delete;
FakeStorage();
- virtual ~FakeStorage();
+ ~FakeStorage() override;
// Storage implementation.
- virtual void Put(const std::string& key, std::string* data);
- virtual void Get(const std::string& key, const Callback& data_ready) const;
+ void Put(const std::string& key, std::string* data) override;
+ void Get(const std::string& key, const Callback& data_ready) const override;
private:
std::map<std::string, std::string*> data_;
diff --git a/cpp/test/mock_source.h b/cpp/test/mock_source.h
index 6d5c8c8..ed503f9 100644
--- a/cpp/test/mock_source.h
+++ b/cpp/test/mock_source.h
@@ -60,10 +60,10 @@
MockSource& operator=(const MockSource&) = delete;
MockSource();
- virtual ~MockSource();
+ ~MockSource() override;
// Source implementation.
- virtual void Get(const std::string& key, const Callback& data_ready) const;
+ void Get(const std::string& key, const Callback& data_ready) const override;
std::map<std::string, std::string> data_;
};
diff --git a/cpp/test/ondemand_supply_task_test.cc b/cpp/test/ondemand_supply_task_test.cc
index 9a95259..d510960 100644
--- a/cpp/test/ondemand_supply_task_test.cc
+++ b/cpp/test/ondemand_supply_task_test.cc
@@ -61,7 +61,7 @@
supplied_(BuildCallback(this, &OndemandSupplyTaskTest::Supplied)),
task_(new OndemandSupplyTask(lookup_key_, &rule_cache_, *supplied_)) {}
- virtual ~OndemandSupplyTaskTest() {
+ ~OndemandSupplyTaskTest() override {
for (std::map<std::string, const Rule*>::const_iterator
it = rule_cache_.begin(); it != rule_cache_.end(); ++it) {
delete it->second;
@@ -114,7 +114,7 @@
}
TEST_F(OndemandSupplyTaskTest, Valid) {
- source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}"));
+ source_->data_.insert(std::make_pair("data/XA", R"({"id":"data/XA"})"));
Queue("data/XA");
@@ -135,13 +135,13 @@
TEST_F(OndemandSupplyTaskTest, ValidHierarchy) {
source_->data_.insert(
- std::make_pair("data/XA", "{\"id\":\"data/XA\"}"));
+ std::make_pair("data/XA", R"({"id":"data/XA"})"));
source_->data_.insert(
- std::make_pair("data/XA/aa", "{\"id\":\"data/XA/aa\"}"));
+ std::make_pair("data/XA/aa", R"({"id":"data/XA/aa"})"));
source_->data_.insert(
- std::make_pair("data/XA/aa/bb", "{\"id\":\"data/XA/aa/bb\"}"));
+ std::make_pair("data/XA/aa/bb", R"({"id":"data/XA/aa/bb"})"));
source_->data_.insert(
- std::make_pair("data/XA/aa/bb/cc", "{\"id\":\"data/XA/aa/bb/cc\"}"));
+ std::make_pair("data/XA/aa/bb/cc", R"({"id":"data/XA/aa/bb/cc"})"));
Queue("data/XA");
Queue("data/XA/aa");
@@ -185,7 +185,7 @@
}
TEST_F(OndemandSupplyTaskTest, InvalidJson2) {
- source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}"));
+ source_->data_.insert(std::make_pair("data/XA", R"({"id":"data/XA"})"));
source_->data_.insert(std::make_pair("data/XA/aa", ":"));
success_ = false;
@@ -198,7 +198,7 @@
}
TEST_F(OndemandSupplyTaskTest, EmptyJsonJustMeansServerKnowsNothingAboutKey) {
- source_->data_.insert(std::make_pair("data/XA", "{\"id\":\"data/XA\"}"));
+ source_->data_.insert(std::make_pair("data/XA", R"({"id":"data/XA"})"));
source_->data_.insert(std::make_pair("data/XA/aa", "{}"));
Queue("data/XA");
@@ -215,8 +215,7 @@
}
TEST_F(OndemandSupplyTaskTest, IfCountryFailsAllFails) {
- source_->data_.insert(
- std::make_pair("data/XA/aa", "{\"id\":\"data/XA/aa\"}"));
+ source_->data_.insert(std::make_pair("data/XA/aa", R"({"id":"data/XA/aa"})"));
success_ = false;
diff --git a/cpp/test/preload_supplier_test.cc b/cpp/test/preload_supplier_test.cc
index 1747bdf..bef399e 100644
--- a/cpp/test/preload_supplier_test.cc
+++ b/cpp/test/preload_supplier_test.cc
@@ -36,6 +36,7 @@
using i18n::addressinput::NullStorage;
using i18n::addressinput::PreloadSupplier;
using i18n::addressinput::Rule;
+using i18n::addressinput::Supplier;
using i18n::addressinput::TestdataSource;
class PreloadSupplierTest : public testing::Test {
@@ -46,10 +47,14 @@
protected:
PreloadSupplierTest()
: supplier_(new TestdataSource(true), new NullStorage),
- loaded_callback_(BuildCallback(this, &PreloadSupplierTest::OnLoaded)) {}
+ loaded_callback_(BuildCallback(this, &PreloadSupplierTest::OnLoaded)),
+ supplied_callback_(
+ BuildCallback(this, &PreloadSupplierTest::OnSupplied)) {}
PreloadSupplier supplier_;
const std::unique_ptr<const PreloadSupplier::Callback> loaded_callback_;
+ const std::unique_ptr<const Supplier::Callback> supplied_callback_;
+ bool state_rule_found_, city_rule_found_, neighbourhood_rule_found_;
private:
void OnLoaded(bool success, const std::string& region_code, int num_rules) {
@@ -58,6 +63,16 @@
ASSERT_LT(0, num_rules);
ASSERT_TRUE(supplier_.IsLoaded(region_code));
}
+
+ void OnSupplied(bool success, const LookupKey& lookup_key,
+ const Supplier::RuleHierarchy& hierarchy) {
+ EXPECT_TRUE(success);
+
+ EXPECT_TRUE(hierarchy.rule[0] != nullptr); // Country rule is never null.
+ EXPECT_EQ(hierarchy.rule[1] != nullptr, state_rule_found_);
+ EXPECT_EQ(hierarchy.rule[2] != nullptr, city_rule_found_);
+ EXPECT_EQ(hierarchy.rule[3] != nullptr, neighbourhood_rule_found_);
+ }
};
TEST_F(PreloadSupplierTest, GetUsRule) {
@@ -83,6 +98,18 @@
EXPECT_EQ("data/US/CA", rule->GetId());
}
+TEST_F(PreloadSupplierTest, GetUsCaliforniaRule) {
+ supplier_.LoadRules("US", *loaded_callback_);
+ LookupKey ca_key;
+ AddressData ca_address;
+ ca_address.region_code = "US";
+ ca_address.administrative_area = "California";
+ ca_key.FromAddress(ca_address);
+ const Rule* rule = supplier_.GetRule(ca_key);
+ ASSERT_TRUE(rule != nullptr);
+ EXPECT_EQ("data/US/CA", rule->GetId());
+}
+
TEST_F(PreloadSupplierTest, GetZwRule) {
supplier_.LoadRules("ZW", *loaded_callback_);
LookupKey zw_key;
@@ -125,4 +152,107 @@
EXPECT_LT(1U, rules.size());
}
+TEST_F(PreloadSupplierTest, SupplyRegionCode) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "NB";
+ key.FromAddress(address);
+
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.Supply(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyGloballyRegionCode) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "NB";
+ key.FromAddress(address);
+
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.SupplyGlobally(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyRegionName) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "New Brunswick";
+ key.FromAddress(address);
+
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.Supply(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyGloballyRegionName) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "New Brunswick";
+ key.FromAddress(address);
+
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.SupplyGlobally(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyRegionNameLanguage) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "Nouveau-Brunswick";
+ key.FromAddress(address);
+
+ // If the language is not set, supply only looks for the region name in the
+ // default language.
+ state_rule_found_ = false;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.Supply(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyRegionNameLanguageSet) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "Nouveau-Brunswick";
+ address.language_code = "fr";
+ key.FromAddress(address);
+
+ // If the language is set, supply will look for the names in that language.
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.Supply(key, *supplied_callback_);
+}
+
+TEST_F(PreloadSupplierTest, SupplyGloballyRegionNameLanguage) {
+ supplier_.LoadRules("CA", *loaded_callback_);
+ LookupKey key;
+ AddressData address;
+ address.region_code = "CA";
+ address.administrative_area = "Nouveau-Brunswick";
+ key.FromAddress(address);
+
+ // SupplyGlobally looks for the region name in all available languages.
+ state_rule_found_ = true;
+ city_rule_found_ = false;
+ neighbourhood_rule_found_ = false;
+ supplier_.SupplyGlobally(key, *supplied_callback_);
+}
+
} // namespace
diff --git a/cpp/test/region_data_builder_test.cc b/cpp/test/region_data_builder_test.cc
index 20fea47..4b63a94 100644
--- a/cpp/test/region_data_builder_test.cc
+++ b/cpp/test/region_data_builder_test.cc
@@ -105,9 +105,7 @@
const RegionData& tree = builder_.Build("KR", "ko-Latn", &best_language_);
EXPECT_EQ("ko-Latn", best_language_);
ASSERT_FALSE(tree.sub_regions().empty());
- EXPECT_EQ(
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- tree.sub_regions().front()->key());
+ EXPECT_EQ(u8"강원도", tree.sub_regions().front()->key());
EXPECT_EQ("Gangwon", tree.sub_regions().front()->name());
}
@@ -116,12 +114,8 @@
const RegionData& tree = builder_.Build("KR", "ko-KR", &best_language_);
EXPECT_EQ("ko", best_language_);
ASSERT_FALSE(tree.sub_regions().empty());
- EXPECT_EQ(
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- tree.sub_regions().front()->key());
- EXPECT_EQ(
- "\xEA\xB0\x95\xEC\x9B\x90", /* "강원" */
- tree.sub_regions().front()->name());
+ EXPECT_EQ(u8"강원도", tree.sub_regions().front()->key());
+ EXPECT_EQ(u8"강원", tree.sub_regions().front()->name());
}
} // namespace
diff --git a/cpp/test/retriever_test.cc b/cpp/test/retriever_test.cc
index be8688a..66f1f1e 100644
--- a/cpp/test/retriever_test.cc
+++ b/cpp/test/retriever_test.cc
@@ -130,14 +130,14 @@
StaleStorage& operator=(const StaleStorage&) = delete;
StaleStorage() : data_updated_(false) {}
- virtual ~StaleStorage() {}
+ ~StaleStorage() override {}
// Storage implementation.
- virtual void Get(const std::string& key, const Callback& data_ready) const {
+ void Get(const std::string& key, const Callback& data_ready) const override {
data_ready(true, key, new std::string(kStaleWrappedData));
}
- virtual void Put(const std::string& key, std::string* value) {
+ void Put(const std::string& key, std::string* value) override {
ASSERT_TRUE(value != nullptr);
data_updated_ = true;
delete value;
diff --git a/cpp/test/rule_test.cc b/cpp/test/rule_test.cc
index 5982935..0f5c2e1 100644
--- a/cpp/test/rule_test.cc
+++ b/cpp/test/rule_test.cc
@@ -46,23 +46,23 @@
TEST(RuleTest, CopyOverwritesRule) {
Rule rule;
ASSERT_TRUE(rule.ParseSerializedRule(
- "{"
- "\"fmt\":\"%S%Z\","
- "\"lfmt\":\"%Z%S\","
- "\"id\":\"data/XA\","
- "\"name\":\"Le Test\","
- "\"lname\":\"Testistan\","
- "\"require\":\"AC\","
- "\"sub_keys\":\"aa~bb~cc\","
- "\"languages\":\"en~fr\","
- "\"zip\":\"\\\\d{3}\","
- "\"state_name_type\":\"area\","
- "\"locality_name_type\":\"post_town\","
- "\"sublocality_name_type\":\"neighborhood\","
- "\"zip_name_type\":\"postal\","
- "\"zipex\":\"1234\","
- "\"posturl\":\"http://www.testpost.com\""
- "}"));
+ R"({)"
+ R"("fmt":"%S%Z",)"
+ R"("lfmt":"%Z%S",)"
+ R"("id":"data/XA",)"
+ R"("name":"Le Test",)"
+ R"("lname":"Testistan",)"
+ R"("require":"AC",)"
+ R"("sub_keys":"aa~bb~cc",)"
+ R"("languages":"en~fr",)"
+ R"("zip":"\\d{3}",)"
+ R"("state_name_type":"area",)"
+ R"("locality_name_type":"post_town",)"
+ R"("sublocality_name_type":"neighborhood",)"
+ R"("zip_name_type":"postal",)"
+ R"("zipex":"1234",)"
+ R"("posturl":"http://www.testpost.com")"
+ R"(})"));
Rule copy;
EXPECT_NE(rule.GetFormat(), copy.GetFormat());
@@ -220,19 +220,19 @@
TEST(RuleTest, PostalCodeMatcher) {
Rule rule;
- ASSERT_TRUE(rule.ParseSerializedRule("{\"zip\":\"\\\\d{3}\"}"));
+ ASSERT_TRUE(rule.ParseSerializedRule(R"({"zip":"\\d{3}"})"));
EXPECT_TRUE(rule.GetPostalCodeMatcher() != nullptr);
}
TEST(RuleTest, PostalCodeMatcherInvalidRegExp) {
Rule rule;
- ASSERT_TRUE(rule.ParseSerializedRule("{\"zip\":\"(\"}"));
+ ASSERT_TRUE(rule.ParseSerializedRule(R"({"zip":"("})"));
EXPECT_TRUE(rule.GetPostalCodeMatcher() == nullptr);
}
TEST(RuleTest, ParsesJsonRuleCorrectly) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"zip\":\"\\\\d{3}\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"zip":"\\d{3}"})"));
Rule rule;
rule.ParseJsonRule(json);
EXPECT_TRUE(rule.GetPostalCodeMatcher() != nullptr);
@@ -459,7 +459,7 @@
Rule rule;
ASSERT_TRUE(rule.ParseSerializedRule("{\"zip\":\"1234\"}"));
EXPECT_TRUE(rule.GetPostalCodeMatcher() != nullptr);
- EXPECT_TRUE(rule.GetSolePostalCode() == "1234");
+ EXPECT_EQ(rule.GetSolePostalCode(), "1234");
Rule copy;
EXPECT_TRUE(copy.GetPostalCodeMatcher() == nullptr);
diff --git a/cpp/test/supplier_test.cc b/cpp/test/supplier_test.cc
index 945882e..39f4355 100644
--- a/cpp/test/supplier_test.cc
+++ b/cpp/test/supplier_test.cc
@@ -34,25 +34,6 @@
namespace {
-// For compatibility with legacy compilers, that can't handle UTF-8 string
-// literals in source code (please let them disappear from common use soon),
-// Chinese strings required in the test code are here provided as string
-// constants in hex escaped UTF-8 encoding.
-
-/* "九龍" */
-const char kKowloon[] = "\xE4\xB9\x9D\xE9\xBE\x8D";
-
-/* "新疆维吾尔自治区" */
-const char kXinJiang[] =
- "\xE6\x96\xB0\xE7\x96\x86\xE7\xBB\xB4\xE5\x90\xBE\xE5\xB0\x94"
- "\xE8\x87\xAA\xE6\xB2\xBB\xE5\x8C\xBA";
-
-/* "喀什地区" */
-const char kKashiDiqu[] = "\xE5\x96\x80\xE4\xBB\x80\xE5\x9C\xB0\xE5\x8C\xBA";
-
-/* "喀什市" */
-const char kKashiShi[] = "\xE5\x96\x80\xE4\xBB\x80\xE5\xB8\x82";
-
using i18n::addressinput::AddressData;
using i18n::addressinput::BuildCallback;
using i18n::addressinput::LookupKey;
@@ -77,8 +58,8 @@
static SupplierWrapper* Build() { return new OndemandSupplierWrapper; }
- virtual void Supply(const LookupKey& lookup_key,
- const Supplier::Callback& supplied) {
+ void Supply(const LookupKey& lookup_key,
+ const Supplier::Callback& supplied) override {
ondemand_supplier_.Supply(lookup_key, supplied);
}
@@ -96,8 +77,8 @@
static SupplierWrapper* Build() { return new PreloadSupplierWrapper; }
- virtual void Supply(const LookupKey& lookup_key,
- const Supplier::Callback& supplied) {
+ void Supply(const LookupKey& lookup_key,
+ const Supplier::Callback& supplied) override {
const std::string& region_code = lookup_key.GetRegionCode();
if (!region_code.empty() && !preload_supplier_.IsLoaded(region_code)) {
preload_supplier_.LoadRules(region_code, *loaded_);
@@ -190,7 +171,7 @@
TEST_P(SupplierTest, KeyDepthEqualsMaxDepth) {
address_.region_code = "HK";
- address_.administrative_area = kKowloon;
+ address_.administrative_area = u8"九龍";
ASSERT_NO_FATAL_FAILURE(Supply());
ASSERT_TRUE(called_);
@@ -202,7 +183,7 @@
TEST_P(SupplierTest, KeyDepthLargerThanMaxDepth) {
address_.region_code = "HK";
- address_.administrative_area = kKowloon;
+ address_.administrative_area = u8"九龍";
address_.locality = "bbb"; // Ignored!
ASSERT_NO_FATAL_FAILURE(Supply());
@@ -237,7 +218,7 @@
TEST_P(SupplierTest, KeyDepth1) {
address_.region_code = "CN";
- address_.administrative_area = kXinJiang;
+ address_.administrative_area = u8"新疆维吾尔自治区";
ASSERT_NO_FATAL_FAILURE(Supply());
ASSERT_TRUE(called_);
@@ -249,8 +230,8 @@
TEST_P(SupplierTest, KeyDepth2) {
address_.region_code = "CN";
- address_.administrative_area = kXinJiang;
- address_.locality = kKashiDiqu;
+ address_.administrative_area = u8"新疆维吾尔自治区";
+ address_.locality = u8"喀什地区";
ASSERT_NO_FATAL_FAILURE(Supply());
ASSERT_TRUE(called_);
@@ -262,9 +243,9 @@
TEST_P(SupplierTest, KeyDepth3) {
address_.region_code = "CN";
- address_.administrative_area = kXinJiang;
- address_.locality = kKashiDiqu;
- address_.dependent_locality = kKashiShi;
+ address_.administrative_area = u8"新疆维吾尔自治区";
+ address_.locality = u8"喀什地区";
+ address_.dependent_locality = u8"喀什市";
ASSERT_NO_FATAL_FAILURE(Supply());
ASSERT_TRUE(called_);
diff --git a/cpp/test/testdata_source.h b/cpp/test/testdata_source.h
index 3c8e76b..f5203e2 100644
--- a/cpp/test/testdata_source.h
+++ b/cpp/test/testdata_source.h
@@ -67,10 +67,10 @@
// |src_path| is a path to the test data file.
TestdataSource(bool aggregate, const std::string& src_path);
- virtual ~TestdataSource();
+ ~TestdataSource() override;
// Source implementation.
- virtual void Get(const std::string& key, const Callback& data_ready) const;
+ void Get(const std::string& key, const Callback& data_ready) const override;
private:
const bool aggregate_;
diff --git a/cpp/test/testdata_source_test.cc b/cpp/test/testdata_source_test.cc
index dfaf965..304d192 100644
--- a/cpp/test/testdata_source_test.cc
+++ b/cpp/test/testdata_source_test.cc
@@ -79,7 +79,7 @@
return testing::AssertionFailure() << "empty data";
}
- std::string expected_data_begin = "{\"id\":\"" + key + "\"";
+ std::string expected_data_begin = R"({"id":")" + key + R"(")";
if (data.compare(0, expected_data_begin.length(), expected_data_begin) != 0) {
return testing::AssertionFailure() << data << " does not begin with "
<< expected_data_begin;
diff --git a/cpp/test/util/json_test.cc b/cpp/test/util/json_test.cc
index 594c341..7ead26a 100644
--- a/cpp/test/util/json_test.cc
+++ b/cpp/test/util/json_test.cc
@@ -43,7 +43,7 @@
TEST(JsonTest, OneKeyIsValid) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\": \"value\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key": "value"})"));
std::string value;
EXPECT_TRUE(json.GetStringValueForKey("key", &value));
EXPECT_EQ("value", value);
@@ -51,14 +51,14 @@
TEST(JsonTest, EmptyStringKeyIsNotInObject) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\": \"value\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key": "value"})"));
std::string not_checked;
EXPECT_FALSE(json.GetStringValueForKey(std::string(), ¬_checked));
}
TEST(JsonTest, EmptyKeyIsValid) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"\": \"value\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"": "value"})"));
std::string value;
EXPECT_TRUE(json.GetStringValueForKey(std::string(), &value));
EXPECT_EQ("value", value);
@@ -66,7 +66,7 @@
TEST(JsonTest, EmptyValueIsValid) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\": \"\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key": ""})"));
std::string value;
EXPECT_TRUE(json.GetStringValueForKey("key", &value));
EXPECT_TRUE(value.empty());
@@ -74,10 +74,10 @@
TEST(JsonTest, Utf8EncodingIsValid) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\": \"\xC3\x9C\"}")); /* "Ü" */
+ ASSERT_TRUE(json.ParseObject(u8R"({"key": "Ü"})"));
std::string value;
EXPECT_TRUE(json.GetStringValueForKey("key", &value));
- EXPECT_EQ("\xC3\x9C", value); /* "Ü" */
+ EXPECT_EQ(u8"Ü", value);
}
TEST(JsonTest, InvalidUtf8IsNotValid) {
@@ -93,7 +93,7 @@
TEST(JsonTest, TwoKeysAreValid) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key1\": \"value1\", \"key2\": \"value2\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key1": "value1", "key2": "value2"})"));
std::string value;
EXPECT_TRUE(json.GetStringValueForKey("key1", &value));
EXPECT_EQ("value1", value);
@@ -109,7 +109,7 @@
TEST(JsonTest, StringIsNotValid) {
Json json;
- EXPECT_FALSE(json.ParseObject("\"value\""));
+ EXPECT_FALSE(json.ParseObject(R"("value")"));
}
TEST(JsonTest, NumberIsNotValid) {
@@ -119,13 +119,13 @@
TEST(JsonTest, NoDictionaryFound) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\":\"value\"}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key":"value"})"));
EXPECT_TRUE(json.GetSubDictionaries().empty());
}
TEST(JsonTest, DictionaryFound) {
Json json;
- ASSERT_TRUE(json.ParseObject("{\"key\":{\"inner_key\":\"value\"}}"));
+ ASSERT_TRUE(json.ParseObject(R"({"key":{"inner_key":"value"}})"));
const std::vector<const Json*>& sub_dicts = json.GetSubDictionaries();
ASSERT_EQ(1U, sub_dicts.size());
@@ -137,7 +137,7 @@
TEST(JsonTest, DictionariesHaveSubDictionaries) {
Json json;
ASSERT_TRUE(json.ParseObject(
- "{\"key\":{\"inner_key\":{\"inner_inner_key\":\"value\"}}}"));
+ R"({"key":{"inner_key":{"inner_inner_key":"value"}}})"));
const std::vector<const Json*>& sub_dicts = json.GetSubDictionaries();
ASSERT_EQ(1U, sub_dicts.size());
diff --git a/cpp/test/util/string_compare_test.cc b/cpp/test/util/string_compare_test.cc
index 7b932b6..e2a636b 100644
--- a/cpp/test/util/string_compare_test.cc
+++ b/cpp/test/util/string_compare_test.cc
@@ -72,35 +72,12 @@
TestCase("foo", "foo", true, false),
TestCase("foo", "FOO", true, false),
TestCase("bar", "foo", false, true),
- TestCase(
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84", /* "강원도" */
- true, false),
- TestCase(
- /* "강원도" */
- "\xEA\xB0\x95\xEC\x9B\x90\xEB\x8F\x84",
- /* "대구광역시" */
- "\xEB\x8C\x80\xEA\xB5\xAC\xEA\xB4\x91\xEC\x97\xAD\xEC\x8B\x9C",
- false, true),
- TestCase(
- "Z\xC3\x9CRICH", /* "ZÜRICH" */
- "z\xC3\xBCrich", /* "zürich" */
- true, false),
- TestCase(
- "\xD0\xB0\xD0\xB1\xD0\xB2", /* "абв" */
- "\xD0\xB3\xD0\xB4\xD0\xB5", /* "где" */
- false, true),
- TestCase(
- "\xD0\xB0\xD0\xB1\xD0\xB2", /* "абв" */
- "\xD0\x93\xD0\x94\xD0\x95", /* "ГДЕ" */
- false, true),
- TestCase(
- "\xD0\xB3\xD0\xB4\xD0\xB5", /* "где" */
- "\xD0\xB0\xD0\xB1\xD0\xB2", /* "абв" */
- false, false),
- TestCase(
- "\xD0\xB3\xD0\xB4\xD0\xB5", /* "где" */
- "\xD0\x90\xD0\x91\xD0\x92", /* "АБВ" */
- false, false)));
+ TestCase(u8"강원도", u8"강원도", true, false),
+ TestCase(u8"강원도", u8"대구광역시", false, true),
+ TestCase(u8"ZÜRICH", u8"zürich", true, false),
+ TestCase(u8"абв", u8"где", false, true),
+ TestCase(u8"абв", u8"ГДЕ", false, true),
+ TestCase(u8"где", u8"абв", false, false),
+ TestCase(u8"где", u8"АБВ", false, false)));
} // namespace
diff --git a/cpp/test/validation_task_test.cc b/cpp/test/validation_task_test.cc
index ba7819a..fdde7cc 100644
--- a/cpp/test/validation_task_test.cc
+++ b/cpp/test/validation_task_test.cc
@@ -260,7 +260,7 @@
}
TEST_F(ValidationTaskTest, UnknownValueRuleNull) {
- json_[0] = "{\"fmt\":\"%R%S\",\"require\":\"RS\",\"sub_keys\":\"aa~bb\"}";
+ json_[0] = R"({"fmt":"%R%S","require":"RS","sub_keys":"aa~bb"})";
address_.region_code = "rrr";
address_.administrative_area = "sss";
@@ -273,7 +273,7 @@
}
TEST_F(ValidationTaskTest, NoUnknownValueRuleNotNull) {
- json_[0] = "{\"fmt\":\"%R%S\",\"require\":\"RS\",\"sub_keys\":\"aa~bb\"}";
+ json_[0] = R"({"fmt":"%R%S","require":"RS","sub_keys":"aa~bb"})";
json_[1] = "{}";
address_.region_code = "rrr";
@@ -285,7 +285,7 @@
}
TEST_F(ValidationTaskTest, PostalCodeUnrecognizedFormatTooShort) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
address_.region_code = "rrr";
address_.postal_code = "12";
@@ -298,7 +298,7 @@
}
TEST_F(ValidationTaskTest, PostalCodeUnrecognizedFormatTooLong) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
address_.region_code = "rrr";
address_.postal_code = "1234";
@@ -311,7 +311,7 @@
}
TEST_F(ValidationTaskTest, PostalCodeRecognizedFormat) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
address_.region_code = "rrr";
address_.postal_code = "123";
@@ -322,8 +322,8 @@
}
TEST_F(ValidationTaskTest, PostalCodeMismatchingValue1) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
- json_[1] = "{\"zip\":\"1\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
+ json_[1] = R"({"zip":"1"})";
address_.region_code = "rrr";
address_.postal_code = "000";
@@ -336,9 +336,9 @@
}
TEST_F(ValidationTaskTest, PostalCodeMismatchingValue2) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
- json_[1] = "{\"zip\":\"1\"}";
- json_[2] = "{\"zip\":\"12\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
+ json_[1] = R"({"zip":"1"})";
+ json_[2] = R"({"zip":"12"})";
address_.region_code = "rrr";
address_.postal_code = "100";
@@ -351,10 +351,10 @@
}
TEST_F(ValidationTaskTest, PostalCodeMismatchingValue3) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
- json_[1] = "{\"zip\":\"1\"}";
- json_[2] = "{\"zip\":\"12\"}";
- json_[3] = "{\"zip\":\"123\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
+ json_[1] = R"({"zip":"1"})";
+ json_[2] = R"({"zip":"12"})";
+ json_[3] = R"({"zip":"123"})";
address_.region_code = "rrr";
address_.postal_code = "120";
@@ -367,10 +367,10 @@
}
TEST_F(ValidationTaskTest, PostalCodeMatchingValue) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{3}\"}";
- json_[1] = "{\"zip\":\"1\"}";
- json_[2] = "{\"zip\":\"12\"}";
- json_[3] = "{\"zip\":\"123\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{3}"})";
+ json_[1] = R"({"zip":"1"})";
+ json_[2] = R"({"zip":"12"})";
+ json_[3] = R"({"zip":"123"})";
address_.region_code = "rrr";
address_.postal_code = "123";
@@ -381,8 +381,8 @@
}
TEST_F(ValidationTaskTest, PostalCodePrefixMismatchingValue) {
- json_[0] = "{\"fmt\":\"%Z\",\"zip\":\"\\\\d{5}\"}";
- json_[1] = "{\"zip\":\"9[0-5]|96[01]\"}";
+ json_[0] = R"({"fmt":"%Z","zip":"\\d{5}"})";
+ json_[1] = R"({"zip":"9[0-5]|96[01]"})";
address_.region_code = "rrr";
address_.postal_code = "10960";
@@ -395,8 +395,8 @@
}
TEST_F(ValidationTaskTest, PostalCodeFilterIgnoresMismatching) {
- json_[0] = "{\"zip\":\"\\\\d{3}\"}";
- json_[1] = "{\"zip\":\"1\"}";
+ json_[0] = R"({"zip":"\\d{3}"})";
+ json_[1] = R"({"zip":"1"})";
address_.region_code = "rrr";
address_.postal_code = "000";
@@ -412,7 +412,7 @@
}
TEST_F(ValidationTaskTest, UsesPoBoxLanguageUnd) {
- json_[0] = "{\"fmt\":\"%A\"}";
+ json_[0] = R"({"fmt":"%A"})";
address_.region_code = "rrr";
address_.address_line.push_back("aaa");
@@ -427,7 +427,7 @@
}
TEST_F(ValidationTaskTest, UsesPoBoxLanguageDa) {
- json_[0] = "{\"fmt\":\"%A\",\"languages\":\"da\"}";
+ json_[0] = R"({"fmt":"%A","languages":"da"})";
address_.region_code = "rrr";
address_.address_line.push_back("aaa");
@@ -442,7 +442,7 @@
}
TEST_F(ValidationTaskTest, UsesPoBoxLanguageDaNotMatchDe) {
- json_[0] = "{\"fmt\":\"%A\",\"languages\":\"da\"}";
+ json_[0] = R"({"fmt":"%A","languages":"da"})";
address_.region_code = "rrr";
address_.address_line.push_back("aaa");
@@ -455,7 +455,7 @@
}
TEST_F(ValidationTaskTest, UsesPoBoxAllowPostal) {
- json_[0] = "{\"fmt\":\"%A\"}";
+ json_[0] = R"({"fmt":"%A"})";
address_.region_code = "rrr";
address_.address_line.push_back("aaa");