Chromium Code Reviews| Index: third_party/libaddressinput/chromium/cpp/src/rule.cc |
| diff --git a/third_party/libaddressinput/chromium/cpp/src/rule.cc b/third_party/libaddressinput/chromium/cpp/src/rule.cc |
| index 791ac9eca651bbba4d68945ffad93ffaafe454c4..d0af74679ee31b9356be382d70a4459819d10523 100644 |
| --- a/third_party/libaddressinput/chromium/cpp/src/rule.cc |
| +++ b/third_party/libaddressinput/chromium/cpp/src/rule.cc |
| @@ -197,6 +197,25 @@ int GetPostalCodeMessageId(const std::string& postal_code_type, bool error) { |
| return INVALID_MESSAGE_ID; |
| } |
| +// Finds |target| in |values_to_compare| and sets |sub_key| to the associated |
| +// value from |values_to_pick_from|. Returns false if |target| is not in |
| +// |values_to_compare|. |sub_key| should not be NULL. |values_to_compare| should |
| +// not be larger than |values_to_pick_from|. |
| +bool GetMatchingSubKey(const std::string& target, |
| + const std::vector<std::string>& values_to_compare, |
| + const std::vector<std::string>& values_to_pick_from, |
| + std::string* sub_key) { |
|
Evan Stade
2014/04/16 23:32:32
s/SubKey/Value
s/sub_key/output_value or picked_va
please use gerrit instead
2014/04/17 00:40:46
Done.
|
| + assert(sub_key != NULL); |
| + assert(values_to_pick_from.size() >= values_to_compare.size()); |
| + for (size_t i = 0; i < values_to_compare.size(); ++i) { |
| + if (LooseStringCompare(values_to_compare[i], target)) { |
| + *sub_key = values_to_pick_from[i]; |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |
| + |
| } // namespace |
| FormatElement::FormatElement(AddressField field) |
| @@ -376,27 +395,20 @@ int Rule::GetInvalidFieldMessageId(AddressField field) const { |
| } |
| bool Rule::CanonicalizeSubKey(const std::string& user_input, |
| + bool keep_input_latin, |
| std::string* sub_key) const { |
| + assert(sub_key != NULL); |
| + |
| 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<std::string>& 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; |
| + return GetMatchingSubKey(user_input, sub_keys_, sub_keys_, sub_key) || |
| + GetMatchingSubKey(user_input, sub_names_, sub_keys_, sub_key) || |
| + (keep_input_latin && |
| + GetMatchingSubKey(user_input, sub_lnames_, sub_lnames_, sub_key)) || |
| + GetMatchingSubKey(user_input, sub_lnames_, sub_keys_, sub_key); |
| } |
| } // namespace addressinput |