aboutsummaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2014-11-06 11:12:36 +0000
committerTorne (Richard Coles) <torne@google.com>2014-11-06 11:12:36 +0000
commitbc218bd8b5a06b381ac7a99e1301bb900076bb34 (patch)
treecf43eb4c48540fcc93cdb1fde1536438b0ece281 /cpp/src
parentc29dd2308a9beb970579e2a38ff1d02f218565a7 (diff)
parent5074e7546d9b6344ece890f6d1a99c3fd9132272 (diff)
downloadsrc-android-m-preview.tar.gz
This commit was generated by merge_to_master.py. Change-Id: I07ba5e568405463b1b643a6e88d60d6d35bba2b7
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/address_ui.cc12
-rw-r--r--cpp/src/region_data_constants.cc59
-rw-r--r--cpp/src/rule.cc50
-rw-r--r--cpp/src/rule.h16
-rw-r--r--cpp/src/util/json.cc2
5 files changed, 109 insertions, 30 deletions
diff --git a/cpp/src/address_ui.cc b/cpp/src/address_ui.cc
index 33f0797..5df8b3d 100644
--- a/cpp/src/address_ui.cc
+++ b/cpp/src/address_ui.cc
@@ -39,7 +39,9 @@ namespace {
std::string GetLabelForField(const Localization& localization,
AddressField field,
int admin_area_name_message_id,
- int postal_code_name_message_id) {
+ int postal_code_name_message_id,
+ int locality_name_message_id,
+ int sublocality_name_message_id) {
int messageId;
switch (field) {
case SORTING_CODE:
@@ -52,10 +54,10 @@ std::string GetLabelForField(const Localization& localization,
messageId = admin_area_name_message_id;
break;
case LOCALITY:
- messageId = IDS_LIBADDRESSINPUT_LOCALITY_LABEL;
+ messageId = locality_name_message_id;
break;
case DEPENDENT_LOCALITY:
- messageId = IDS_LIBADDRESSINPUT_DISTRICT;
+ messageId = sublocality_name_message_id;
break;
case POSTAL_CODE:
messageId = postal_code_name_message_id;
@@ -132,7 +134,9 @@ std::vector<AddressUiComponent> BuildComponents(
component.name = GetLabelForField(localization,
format_it->GetField(),
rule.GetAdminAreaNameMessageId(),
- rule.GetPostalCodeNameMessageId());
+ rule.GetPostalCodeNameMessageId(),
+ rule.GetLocalityNameMessageId(),
+ rule.GetSublocalityNameMessageId());
result.push_back(component);
}
diff --git a/cpp/src/region_data_constants.cc b/cpp/src/region_data_constants.cc
index e21d4b8..c91e6f8 100644
--- a/cpp/src/region_data_constants.cc
+++ b/cpp/src/region_data_constants.cc
@@ -51,8 +51,6 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"ca\""
"}"));
region_data.insert(std::make_pair("AE", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C\","
- "\"require\":\"AC\","
"\"languages\":\"ar\""
"}"));
region_data.insert(std::make_pair("AF", "{"
@@ -199,9 +197,10 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"es~qu~ay\""
"}"));
region_data.insert(std::make_pair("BR", "{"
- "\"fmt\":\"%O%n%N%n%A%n%C-%S%n%Z\","
+ "\"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.correios.com.br/servicos/cep/cep_default.cfm\","
"\"languages\":\"pt\""
@@ -224,7 +223,7 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("BY", "{"
"\"fmt\":\"%S%n%Z %C %X%n%A%n%O%n%N\","
- "\"zipex\":\"20050,223016,225860,220050\","
+ "\"zipex\":\"223016,225860,220050\","
"\"posturl\":\"http://zip.belpost.by\","
"\"languages\":\"be~ru\""
"}"));
@@ -240,6 +239,7 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("CC", "{"
"\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
+ "\"zipex\":\"6799\","
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("CD", "{"
@@ -264,7 +264,6 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"fr\""
"}"));
region_data.insert(std::make_pair("CK", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("CL", "{"
@@ -281,6 +280,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"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.cpdc.com.cn/postcdQueryAction.do\?reqCode=gotoQueryPostAddr\","
"\"languages\":\"zh-Hans\""
@@ -305,6 +305,7 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("CX", "{"
"\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
+ "\"zipex\":\"6798\","
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("CY", "{"
@@ -351,12 +352,12 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("EC", "{"
"\"fmt\":\"%N%n%O%n%A%n%Z%n%C\","
- "\"zipex\":\"EC090112,090105,H0103C,P0133B,P0133A,P0133V\","
+ "\"zipex\":\"090105,EC090112,H0103C,P0133B,P0133A,P0133V\","
"\"languages\":\"es\""
"}"));
region_data.insert(std::make_pair("EE", "{"
"\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"zipex\":\"69501,11212,1001\","
+ "\"zipex\":\"69501,11212\","
"\"posturl\":\"http://www.post.ee/\?op=sihtnumbriotsing\","
"\"languages\":\"et\""
"}"));
@@ -431,7 +432,8 @@ std::map<std::string, std::string> InitRegionData() {
"\"fmt\":\"%N%n%O%n%A%n%C%n%S%n%Z\","
"\"require\":\"ACZ\","
"\"state_name_type\":\"county\","
- "\"zipex\":\"EC1Y 8SY,GIR 0AA,M2 5BQ,M34 4AB,CR0 2YR,DN16 9AA,W1A 4ZZ,EC1A 1HQ,OX14 4PG,BS18 8HF,NR25 7HG,RH6 OHP,BH23 6AA,B6 5BA,RH6 0HP,SO23 9AP,PO1 3AX,BFPO 61\","
+ "\"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\""
"}"));
@@ -462,7 +464,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("GI", "{"
- "\"fmt\":\"%N%n%O%n%A\","
+ "\"fmt\":\"%N%n%O%n%A%nGIBRALTAR%n%Z\","
"\"require\":\"A\","
"\"zipex\":\"GX11 1AA\","
"\"languages\":\"en\""
@@ -527,19 +529,22 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("HK", "{"
- "\"fmt\":\"%S%n%A%n%O%n%N\","
- "\"lfmt\":\"%N%n%O%n%A%n%S\","
+ "\"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\""
"}"));
region_data.insert(std::make_pair("HM", "{"
"\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
+ "\"zipex\":\"7050\","
"\"languages\":\"\""
"}"));
region_data.insert(std::make_pair("HN", "{"
"\"fmt\":\"%N%n%O%n%A%n%C, %S%n%Z\","
"\"require\":\"ACS\","
+ "\"zipex\":\"31301\","
"\"languages\":\"es\""
"}"));
region_data.insert(std::make_pair("HR", "{"
@@ -600,6 +605,7 @@ std::map<std::string, std::string> InitRegionData() {
region_data.insert(std::make_pair("IQ", "{"
"\"fmt\":\"%O%n%N%n%A%n%C, %S%n%Z\","
"\"require\":\"ACS\","
+ "\"zipex\":\"31001\","
"\"languages\":\"ar\""
"}"));
region_data.insert(std::make_pair("IS", "{"
@@ -676,6 +682,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"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\":\"110-110,699-800\","
"\"posturl\":\"http://www.epost.go.kr/search/zipcode/search5.jsp\","
"\"languages\":\"ko\""
@@ -686,7 +693,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"ar\""
"}"));
region_data.insert(std::make_pair("KY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%S\","
+ "\"fmt\":\"%N%n%O%n%A%n%S %Z\","
"\"require\":\"AS\","
"\"state_name_type\":\"island\","
"\"zipex\":\"KY1-1100,KY1-1702,KY2-2101\","
@@ -864,20 +871,21 @@ std::map<std::string, std::string> InitRegionData() {
"\"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\""
"}"));
region_data.insert(std::make_pair("MY", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C, %S\","
+ "\"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/pos/homepage.aspx\","
"\"languages\":\"ms\""
"}"));
region_data.insert(std::make_pair("MZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C\","
"\"zipex\":\"1102,1119,3212\","
"\"languages\":\"pt\""
"}"));
@@ -898,6 +906,7 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("NF", "{"
"\"fmt\":\"%O%n%N%n%A%n%C %S %Z\","
+ "\"zipex\":\"2899\","
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("NG", "{"
@@ -944,7 +953,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"en~niu\""
"}"));
region_data.insert(std::make_pair("NZ", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C %Z\","
+ "\"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/\","
@@ -968,6 +977,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"fmt\":\"%N%n%O%n%A%n%Z %C %S\","
"\"require\":\"ACSZ\","
"\"state_name_type\":\"island\","
+ "\"zipex\":\"98709\","
"\"languages\":\"fr~ty\""
"}"));
region_data.insert(std::make_pair("PG", "{"
@@ -977,7 +987,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"tpi~en~ho\""
"}"));
region_data.insert(std::make_pair("PH", "{"
- "\"fmt\":\"%N%n%O%n%A%n%Z %C%n%S\","
+ "\"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\""
@@ -1217,6 +1227,7 @@ std::map<std::string, std::string> InitRegionData() {
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\""
@@ -1248,7 +1259,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"state_name_type\":\"oblast\","
"\"zipex\":\"15432,01055,01001\","
"\"posturl\":\"http://services.ukrposhta.com/postindex_new/\","
- "\"languages\":\"uk~ru\""
+ "\"languages\":\"uk\""
"}"));
region_data.insert(std::make_pair("UG", "{"
"\"languages\":\"sw~en\""
@@ -1301,6 +1312,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"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\""
@@ -1315,9 +1327,8 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"en\""
"}"));
region_data.insert(std::make_pair("VN", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"lfmt\":\"%N%n%O%n%A%n%C%n%S\","
- "\"require\":\"AC\","
+ "\"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\""
@@ -1340,7 +1351,6 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"sq~sr-Cyrl~sr-Latn\""
"}"));
region_data.insert(std::make_pair("YE", "{"
- "\"require\":\"AC\","
"\"languages\":\"ar\""
"}"));
region_data.insert(std::make_pair("YT", "{"
@@ -1350,7 +1360,7 @@ std::map<std::string, std::string> InitRegionData() {
"\"languages\":\"fr\""
"}"));
region_data.insert(std::make_pair("ZA", "{"
- "\"fmt\":\"%N%n%O%n%A%n%C%n%Z\","
+ "\"fmt\":\"%N%n%O%n%A%n%D%n%C%n%Z\","
"\"require\":\"ACZ\","
"\"zipex\":\"0083,1451,0001\","
"\"posturl\":\"http://www.postoffice.co.za/tools/postalcode.html\","
@@ -1358,7 +1368,6 @@ std::map<std::string, std::string> InitRegionData() {
"}"));
region_data.insert(std::make_pair("ZM", "{"
"\"fmt\":\"%N%n%O%n%A%n%Z %C\","
- "\"require\":\"AC\","
"\"zipex\":\"50100,50101\","
"\"languages\":\"en\""
"}"));
@@ -1377,7 +1386,9 @@ const std::string& RegionDataConstants::GetDefaultRegionData() {
"\"fmt\":\"%N%n%O%n%A%n%C\","
"\"require\":\"AC\","
"\"zip_name_type\":\"postal\","
- "\"state_name_type\":\"province\""
+ "\"state_name_type\":\"province\","
+ "\"locality_name_type\":\"city\","
+ "\"sublocality_name_type\":\"suburb\""
"}");
return kDefaultRegionData;
}
diff --git a/cpp/src/rule.cc b/cpp/src/rule.cc
index 7ab84e5..12d1c78 100644
--- a/cpp/src/rule.cc
+++ b/cpp/src/rule.cc
@@ -91,6 +91,42 @@ const NameMessageIdMap& GetPostalCodeMessageIds() {
return kPostalCodeMessageIds;
}
+NameMessageIdMap InitLocalityMessageIds() {
+ NameMessageIdMap message_ids;
+ message_ids.insert(std::make_pair(
+ "city", IDS_LIBADDRESSINPUT_LOCALITY_LABEL));
+ message_ids.insert(std::make_pair(
+ "post_town", IDS_LIBADDRESSINPUT_POST_TOWN));
+ message_ids.insert(std::make_pair(
+ "district", IDS_LIBADDRESSINPUT_DISTRICT));
+ return message_ids;
+}
+
+const NameMessageIdMap& GetLocalityMessageIds() {
+ static const NameMessageIdMap kLocalityMessageIds(
+ InitLocalityMessageIds());
+ return kLocalityMessageIds;
+}
+
+NameMessageIdMap InitSublocalityMessageIds() {
+ NameMessageIdMap message_ids;
+ message_ids.insert(std::make_pair(
+ "suburb", IDS_LIBADDRESSINPUT_SUBURB));
+ message_ids.insert(std::make_pair(
+ "district", IDS_LIBADDRESSINPUT_DISTRICT));
+ message_ids.insert(std::make_pair(
+ "neighborhood", IDS_LIBADDRESSINPUT_NEIGHBORHOOD));
+ message_ids.insert(std::make_pair(
+ "village_township", IDS_LIBADDRESSINPUT_VILLAGE_TOWNSHIP));
+ return message_ids;
+}
+
+const NameMessageIdMap& GetSublocalityMessageIds() {
+ static const NameMessageIdMap kSublocalityMessageIds(
+ InitSublocalityMessageIds());
+ return kSublocalityMessageIds;
+}
+
int GetMessageIdFromName(const std::string& name,
const NameMessageIdMap& message_ids) {
NameMessageIdMap::const_iterator it = message_ids.find(name);
@@ -118,6 +154,8 @@ Rule::Rule()
sole_postal_code_(),
admin_area_name_message_id_(INVALID_MESSAGE_ID),
postal_code_name_message_id_(INVALID_MESSAGE_ID),
+ locality_name_message_id_(INVALID_MESSAGE_ID),
+ sublocality_name_message_id_(INVALID_MESSAGE_ID),
name_(),
latin_name_(),
postal_code_example_(),
@@ -153,6 +191,8 @@ void Rule::CopyFrom(const Rule& rule) {
sole_postal_code_ = rule.sole_postal_code_;
admin_area_name_message_id_ = rule.admin_area_name_message_id_;
postal_code_name_message_id_ = rule.postal_code_name_message_id_;
+ locality_name_message_id_ = rule.locality_name_message_id_;
+ sublocality_name_message_id_ = rule.sublocality_name_message_id_;
name_ = rule.name_;
latin_name_ = rule.latin_name_;
postal_code_example_ = rule.postal_code_example_;
@@ -233,6 +273,16 @@ void Rule::ParseJsonRule(const Json& json) {
GetMessageIdFromName(value, GetPostalCodeMessageIds());
}
+ if (json.GetStringValueForKey("locality_name_type", &value)) {
+ locality_name_message_id_ =
+ GetMessageIdFromName(value, GetLocalityMessageIds());
+ }
+
+ if (json.GetStringValueForKey("sublocality_name_type", &value)) {
+ sublocality_name_message_id_ =
+ GetMessageIdFromName(value, GetSublocalityMessageIds());
+ }
+
if (json.GetStringValueForKey("name", &value)) {
name_.swap(value);
}
diff --git a/cpp/src/rule.h b/cpp/src/rule.h
index 1286bcb..87948df 100644
--- a/cpp/src/rule.h
+++ b/cpp/src/rule.h
@@ -15,7 +15,7 @@
// An object to store address metadata, describing the addressing rules for
// regions and sub-regions. The address metadata format is documented here:
//
-// https://code.google.com/p/libaddressinput/wiki/AddressValidationMetadata
+// https://github.com/googlei18n/libaddressinput/wiki/AddressValidationMetadata
#ifndef I18N_ADDRESSINPUT_RULE_H_
#define I18N_ADDRESSINPUT_RULE_H_
@@ -110,6 +110,18 @@ class Rule {
return postal_code_name_message_id_;
}
+ // The message string identifier for locality name. If not set, then
+ // INVALID_MESSAGE_ID.
+ int GetLocalityNameMessageId() const {
+ return locality_name_message_id_;
+ }
+
+ // The message string identifier for sublocality name. If not set, then
+ // INVALID_MESSAGE_ID.
+ int GetSublocalityNameMessageId() const {
+ return sublocality_name_message_id_;
+ }
+
// Returns the name for the most specific place described by this rule, if
// there is one. This is typically set when it differs from the key.
const std::string& GetName() const { return name_; }
@@ -137,6 +149,8 @@ class Rule {
std::string sole_postal_code_;
int admin_area_name_message_id_;
int postal_code_name_message_id_;
+ int locality_name_message_id_;
+ int sublocality_name_message_id_;
std::string name_;
std::string latin_name_;
std::string postal_code_example_;
diff --git a/cpp/src/util/json.cc b/cpp/src/util/json.cc
index 730479c..9d30b66 100644
--- a/cpp/src/util/json.cc
+++ b/cpp/src/util/json.cc
@@ -68,7 +68,7 @@ class Json::JsonImpl {
assert(value != NULL);
Value::ConstMemberIterator member = value_->FindMember(key.c_str());
- if (member == NULL || !member->value.IsString()) {
+ if (member == value_->MemberEnd() || !member->value.IsString()) {
return false;
}