X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Flibaddressinput%2Fchromium%2Fcpp%2Fsrc%2Frule.cc;h=b3f9feb3776a353a4737b64d8ddb58b592f33dbe;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=9fb5c12a5eb5087ad0938c12e67e427875f30550;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/libaddressinput/chromium/cpp/src/rule.cc b/src/third_party/libaddressinput/chromium/cpp/src/rule.cc index 9fb5c12..b3f9feb 100644 --- a/src/third_party/libaddressinput/chromium/cpp/src/rule.cc +++ b/src/third_party/libaddressinput/chromium/cpp/src/rule.cc @@ -26,6 +26,7 @@ #include "grit/libaddressinput_strings.h" #include "region_data_constants.h" #include "util/json.h" +#include "util/string_compare.h" #include "util/string_split.h" namespace i18n { @@ -276,16 +277,26 @@ void Rule::ParseJsonRule(const Json& json_rule) { SplitString(value, kSeparator, &sub_keys_); } + if (json_rule.GetStringValueForKey("sub_names", &value)) { + SplitString(value, kSeparator, &sub_names_); + assert(sub_names_.size() == sub_keys_.size()); + } + + if (json_rule.GetStringValueForKey("sub_lnames", &value)) { + SplitString(value, kSeparator, &sub_lnames_); + assert(sub_lnames_.size() == sub_keys_.size()); + } + if (json_rule.GetStringValueForKey("languages", &value)) { SplitString(value, kSeparator, &languages_); } if (json_rule.GetStringValueForKey("lang", &value)) { - language_ = value; + language_.swap(value); } if (json_rule.GetStringValueForKey("zip", &value)) { - postal_code_format_ = value; + postal_code_format_.swap(value); } if (json_rule.GetStringValueForKey("state_name_type", &value)) { @@ -314,5 +325,29 @@ int Rule::GetInvalidFieldMessageId(AddressField field) const { } } +bool Rule::CanonicalizeSubKey(const std::string& user_input, + std::string* sub_key) const { + if (sub_keys_.empty()) { + *sub_key = user_input; + return true; + } + + return GetMatchingSubKey(user_input, sub_keys_, sub_key) || + GetMatchingSubKey(user_input, sub_names_, sub_key) || + GetMatchingSubKey(user_input, sub_lnames_, sub_key); +} + +bool Rule::GetMatchingSubKey(const std::string& target, + const std::vector& values, + std::string* sub_key) const { + for (size_t i = 0; i < values.size(); ++i) { + if (LooseStringCompare(values[i], target)) { + *sub_key = sub_keys_[i]; + return true; + } + } + return false; +} + } // namespace addressinput } // namespace i18n