Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: third_party/libaddressinput/chromium/cpp/src/rule.cc

Issue 106763007: [rac] Parse postal code formats and required fields in libaddressinput. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (C) 2013 Google Inc. 1 // Copyright (C) 2013 Google Inc.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 21 matching lines...) Expand all
32 namespace addressinput { 32 namespace addressinput {
33 33
34 namespace { 34 namespace {
35 35
36 typedef std::map<std::string, int> NameMessageIdMap; 36 typedef std::map<std::string, int> NameMessageIdMap;
37 37
38 const char kAdminAreaNameTypeKey[] = "state_name_type"; 38 const char kAdminAreaNameTypeKey[] = "state_name_type";
39 const char kFormatKey[] = "fmt"; 39 const char kFormatKey[] = "fmt";
40 const char kLanguageKey[] = "lang"; 40 const char kLanguageKey[] = "lang";
41 const char kLanguagesKey[] = "languages"; 41 const char kLanguagesKey[] = "languages";
42 const char kPostalCodeExamplesKey[] = "zipex";
43 const char kPostalCodeFormatKey[] = "zip";
42 const char kPostalCodeNameTypeKey[] = "zip_name_type"; 44 const char kPostalCodeNameTypeKey[] = "zip_name_type";
45 const char kPostalCodesUrlKey[] = "posturl";
46 const char kRequiredKey[] = "require";
43 const char kSubKeysKey[] = "sub_keys"; 47 const char kSubKeysKey[] = "sub_keys";
44 48
45 // Used as a separator in a list of items. For example, the list of supported 49 // Used as a separator in a list of items. For example, the list of supported
46 // languages can be "de~fr~it". 50 // languages can be "de~fr~it".
47 const char kSeparator = '~'; 51 const char kSeparator = '~';
48 52
49 NameMessageIdMap InitAdminAreaMessageIds() { 53 NameMessageIdMap InitAdminAreaMessageIds() {
50 NameMessageIdMap message_ids; 54 NameMessageIdMap message_ids;
51 message_ids.insert(std::make_pair( 55 message_ids.insert(std::make_pair(
52 "area", IDS_LIBADDRESSINPUT_I18N_AREA)); 56 "area", IDS_LIBADDRESSINPUT_I18N_AREA));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 const Rule& InitDefaultRule() { 109 const Rule& InitDefaultRule() {
106 static Rule rule; 110 static Rule rule;
107 rule.ParseSerializedRule(RegionDataConstants::GetDefaultRegionData()); 111 rule.ParseSerializedRule(RegionDataConstants::GetDefaultRegionData());
108 return rule; 112 return rule;
109 } 113 }
110 114
111 } // namespace 115 } // namespace
112 116
113 Rule::Rule() 117 Rule::Rule()
114 : format_(), 118 : format_(),
119 required_(),
115 sub_keys_(), 120 sub_keys_(),
116 languages_(), 121 languages_(),
117 language_(), 122 language_(),
123 postal_code_examples_(),
124 postal_code_format_(),
125 postal_codes_url_(),
118 admin_area_name_message_id_(INVALID_MESSAGE_ID), 126 admin_area_name_message_id_(INVALID_MESSAGE_ID),
119 postal_code_name_message_id_(INVALID_MESSAGE_ID) {} 127 postal_code_name_message_id_(INVALID_MESSAGE_ID) {}
120 128
121 Rule::~Rule() {} 129 Rule::~Rule() {}
122 130
123 // static 131 // static
124 const Rule& Rule::GetDefault() { 132 const Rule& Rule::GetDefault() {
125 // Returns the constant reference to the Rule object from InitDefaultRule(). 133 // Returns the constant reference to the Rule object from InitDefaultRule().
126 // The static object is in InitDefaultRule(), but this function maintains a 134 // The static object is in InitDefaultRule(), but this function maintains a
127 // constant static reference to it. The constant static reference avoids 135 // constant static reference to it. The constant static reference avoids
128 // re-parsing the default region data. 136 // re-parsing the default region data.
129 static const Rule& kDefaultRule(InitDefaultRule()); 137 static const Rule& kDefaultRule(InitDefaultRule());
130 return kDefaultRule; 138 return kDefaultRule;
131 } 139 }
132 140
133 void Rule::CopyFrom(const Rule& rule) { 141 void Rule::CopyFrom(const Rule& rule) {
134 format_ = rule.format_; 142 format_ = rule.format_;
143 required_ = rule.required_;
135 sub_keys_ = rule.sub_keys_; 144 sub_keys_ = rule.sub_keys_;
136 languages_ = rule.languages_; 145 languages_ = rule.languages_;
137 language_ = rule.language_; 146 language_ = rule.language_;
147 postal_code_examples_ = rule.postal_code_examples_;
148 postal_code_format_ = rule.postal_code_format_;
149 postal_codes_url_ = rule.postal_codes_url_;
138 admin_area_name_message_id_ = rule.admin_area_name_message_id_; 150 admin_area_name_message_id_ = rule.admin_area_name_message_id_;
139 postal_code_name_message_id_ = rule.postal_code_name_message_id_; 151 postal_code_name_message_id_ = rule.postal_code_name_message_id_;
140 } 152 }
141 153
142 bool Rule::ParseSerializedRule(const std::string& serialized_rule) { 154 bool Rule::ParseSerializedRule(const std::string& serialized_rule) {
143 scoped_ptr<Json> json(Json::Build()); 155 scoped_ptr<Json> json(Json::Build());
144 if (!json->ParseObject(serialized_rule)) { 156 if (!json->ParseObject(serialized_rule)) {
145 return false; 157 return false;
146 } 158 }
147 159
148 if (json->HasStringValueForKey(kFormatKey)) { 160 if (json->HasStringValueForKey(kFormatKey)) {
149 ParseAddressFieldsFormat(json->GetStringValueForKey(kFormatKey), &format_); 161 ParseAddressFieldsFormat(json->GetStringValueForKey(kFormatKey), &format_);
150 } 162 }
151 163
164 if (json->HasStringValueForKey(kRequiredKey)) {
165 ParseAddressFieldsRequired(
166 json->GetStringValueForKey(kRequiredKey), &required_);
167 }
168
152 if (json->HasStringValueForKey(kSubKeysKey)) { 169 if (json->HasStringValueForKey(kSubKeysKey)) {
153 SplitString( 170 SplitString(
154 json->GetStringValueForKey(kSubKeysKey), kSeparator, &sub_keys_); 171 json->GetStringValueForKey(kSubKeysKey), kSeparator, &sub_keys_);
155 } 172 }
156 173
157 if (json->HasStringValueForKey(kLanguagesKey)) { 174 if (json->HasStringValueForKey(kLanguagesKey)) {
158 SplitString( 175 SplitString(
159 json->GetStringValueForKey(kLanguagesKey), kSeparator, &languages_); 176 json->GetStringValueForKey(kLanguagesKey), kSeparator, &languages_);
160 } 177 }
161 178
162 if (json->HasStringValueForKey(kLanguageKey)) { 179 if (json->HasStringValueForKey(kLanguageKey)) {
163 language_ = json->GetStringValueForKey(kLanguageKey); 180 language_ = json->GetStringValueForKey(kLanguageKey);
164 } 181 }
165 182
183 if (json->HasStringValueForKey(kPostalCodeExamplesKey)) {
184 postal_code_examples_ = json->GetStringValueForKey(kPostalCodeExamplesKey);
185 }
186
187 if (json->HasStringValueForKey(kPostalCodeFormatKey)) {
188 postal_code_format_ = json->GetStringValueForKey(kPostalCodeFormatKey);
189 }
190
191 if (json->HasStringValueForKey(kPostalCodesUrlKey)) {
192 postal_codes_url_ = json->GetStringValueForKey(kPostalCodesUrlKey);
193 }
194
166 if (json->HasStringValueForKey(kAdminAreaNameTypeKey)) { 195 if (json->HasStringValueForKey(kAdminAreaNameTypeKey)) {
167 admin_area_name_message_id_ = 196 admin_area_name_message_id_ =
168 GetMessageIdFromName(json->GetStringValueForKey(kAdminAreaNameTypeKey), 197 GetMessageIdFromName(json->GetStringValueForKey(kAdminAreaNameTypeKey),
169 GetAdminAreaMessageIds()); 198 GetAdminAreaMessageIds());
170 } 199 }
171 200
172 if (json->HasStringValueForKey(kPostalCodeNameTypeKey)) { 201 if (json->HasStringValueForKey(kPostalCodeNameTypeKey)) {
173 postal_code_name_message_id_ = 202 postal_code_name_message_id_ =
174 GetMessageIdFromName(json->GetStringValueForKey(kPostalCodeNameTypeKey), 203 GetMessageIdFromName(json->GetStringValueForKey(kPostalCodeNameTypeKey),
175 GetPostalCodeMessageIds()); 204 GetPostalCodeMessageIds());
176 } 205 }
177 206
178 return true; 207 return true;
179 } 208 }
180 209
181 } // namespace addressinput 210 } // namespace addressinput
182 } // namespace i18n 211 } // namespace i18n
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698