Index: third_party/libaddressinput/chromium/cpp/src/address_formatter.cc |
diff --git a/third_party/libaddressinput/chromium/cpp/src/address_formatter.cc b/third_party/libaddressinput/chromium/cpp/src/address_formatter.cc |
deleted file mode 100644 |
index f28d633bbd8cf56776715204c5b9090af22919e6..0000000000000000000000000000000000000000 |
--- a/third_party/libaddressinput/chromium/cpp/src/address_formatter.cc |
+++ /dev/null |
@@ -1,190 +0,0 @@ |
-// Copyright (C) 2014 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-#include <libaddressinput/address_formatter.h> |
- |
-#include <libaddressinput/address_data.h> |
-#include <libaddressinput/address_field.h> |
- |
-#include <algorithm> |
-#include <cassert> |
-#include <cstddef> |
-#include <functional> |
-#include <string> |
-#include <vector> |
- |
-#include "language.h" |
-#include "region_data_constants.h" |
-#include "rule.h" |
-#include "util/cctype_tolower_equal.h" |
- |
-namespace i18n { |
-namespace addressinput { |
- |
-namespace { |
- |
-const char kCommaSeparator[] = ", "; |
-const char kSpaceSeparator[] = " "; |
-const char kArabicCommaSeparator[] = "\xD8\x8C" " "; /* "، " */ |
- |
-const char* kLanguagesThatUseSpace[] = { |
- "th", |
- "ko" |
-}; |
- |
-const char* kLanguagesThatHaveNoSeparator[] = { |
- "ja", |
- "zh" // All Chinese variants. |
-}; |
- |
-// This data is based on CLDR, for languages that are in official use in some |
-// country, where Arabic is the most likely script tag. |
-// TODO: Consider supporting variants such as tr-Arab by detecting the script |
-// code. |
-const char* kLanguagesThatUseAnArabicComma[] = { |
- "ar", |
- "az", |
- "fa", |
- "kk", |
- "ku", |
- "ky", |
- "ps", |
- "tg", |
- "tk", |
- "ur", |
- "uz" |
-}; |
- |
-std::string GetLineSeparatorForLanguage(const std::string& language_tag) { |
- Language address_language(language_tag); |
- |
- // First deal with explicit script tags. |
- if (address_language.has_latin_script) { |
- return kCommaSeparator; |
- } |
- |
- // Now guess something appropriate based on the base language. |
- const std::string& base_language = address_language.base; |
- if (std::find_if(kLanguagesThatUseSpace, |
- kLanguagesThatUseSpace + arraysize(kLanguagesThatUseSpace), |
- std::bind2nd(EqualToTolowerString(), base_language)) != |
- kLanguagesThatUseSpace + arraysize(kLanguagesThatUseSpace)) { |
- return kSpaceSeparator; |
- } else if (std::find_if( |
- kLanguagesThatHaveNoSeparator, |
- kLanguagesThatHaveNoSeparator + |
- arraysize(kLanguagesThatHaveNoSeparator), |
- std::bind2nd(EqualToTolowerString(), base_language)) != |
- kLanguagesThatHaveNoSeparator + |
- arraysize(kLanguagesThatHaveNoSeparator)) { |
- return ""; |
- } else if (std::find_if( |
- kLanguagesThatUseAnArabicComma, |
- kLanguagesThatUseAnArabicComma + |
- arraysize(kLanguagesThatUseAnArabicComma), |
- std::bind2nd(EqualToTolowerString(), base_language)) != |
- kLanguagesThatUseAnArabicComma + |
- arraysize(kLanguagesThatUseAnArabicComma)) { |
- return kArabicCommaSeparator; |
- } |
- // Either the language is a latin-script language, or no language was |
- // specified. In the latter case we still return ", " as the most common |
- // separator in use. In countries that don't use this, e.g. Thailand, |
- // addresses are often written in latin script where this would still be |
- // appropriate, so this is a reasonable default in the absence of information. |
- return kCommaSeparator; |
-} |
- |
-void CombineLinesForLanguage( |
- const std::vector<std::string>& lines, const std::string& language_tag, |
- std::string *line) { |
- if (lines.size() > 0) { |
- line->assign(lines[0]); |
- } |
- std::string separator = GetLineSeparatorForLanguage(language_tag); |
- for (std::vector<std::string>::const_iterator it = lines.begin() + 1; |
- it < lines.end(); ++it) { |
- line->append(separator); |
- line->append(*it); |
- } |
-} |
- |
-} // namespace |
- |
-void GetFormattedNationalAddress( |
- const AddressData& address_data, std::vector<std::string>* lines) { |
- assert(lines != NULL); |
- lines->clear(); |
- |
- Rule rule; |
- rule.CopyFrom(Rule::GetDefault()); |
- // TODO: Eventually, we should get the best rule for this country and |
- // language, rather than just for the country. |
- rule.ParseSerializedRule(RegionDataConstants::GetRegionData( |
- address_data.region_code)); |
- |
- Language language(address_data.language_code); |
- |
- // If latinized rules are available and the |language_code| of this address is |
- // explicitly tagged as being Latin, then use the latinized formatting rules. |
- const std::vector<std::vector<FormatElement> >& format = |
- language.has_latin_script && !rule.GetLatinFormat().empty() |
- ? rule.GetLatinFormat() : rule.GetFormat(); |
- |
- lines->push_back(std::string()); |
- for (size_t i = 0; i < format.size(); ++i) { |
- if (!lines->back().empty()) { |
- lines->push_back(std::string()); |
- } |
- for (size_t j = 0; j < format[i].size(); ++j) { |
- const FormatElement& element = format[i][j]; |
- if (element.IsField()) { |
- if (element.field == STREET_ADDRESS) { |
- // The field "street address" represents the street address lines of |
- // an address, so there can be multiple values. |
- if (lines->back().empty()) { |
- lines->pop_back(); |
- } |
- lines->insert(lines->end(), |
- address_data.address_line.begin(), |
- address_data.address_line.end()); |
- } else { |
- lines->back().append(address_data.GetFieldValue(element.field)); |
- } |
- } else { |
- lines->back().append(element.literal); |
- } |
- } |
- } |
- |
- if (lines->back().empty()) { |
- lines->pop_back(); |
- } |
-} |
- |
-void GetFormattedNationalAddressLine( |
- const AddressData& address_data, std::string* line) { |
- std::vector<std::string> address_lines; |
- GetFormattedNationalAddress(address_data, &address_lines); |
- CombineLinesForLanguage(address_lines, address_data.language_code, line); |
-} |
- |
-void GetStreetAddressLinesAsSingleLine( |
- const AddressData& address_data, std::string* line) { |
- CombineLinesForLanguage( |
- address_data.address_line, address_data.language_code, line); |
-} |
- |
-} // namespace addressinput |
-} // namespace i18n |