Index: third_party/libaddressinput/chromium/cpp/src/address_data.cc |
diff --git a/third_party/libaddressinput/chromium/cpp/src/address_data.cc b/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
index 9b86cc8585f79e18577f814e6a1bd185710c3d2e..487887400436781587668aafce27ab5e4c6b8fd0 100644 |
--- a/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
+++ b/third_party/libaddressinput/chromium/cpp/src/address_data.cc |
@@ -17,12 +17,54 @@ |
#include <libaddressinput/address_field.h> |
#include <cassert> |
+#include <cstddef> |
#include <string> |
+#include <vector> |
+ |
+#include "region_data_constants.h" |
+#include "rule.h" |
namespace i18n { |
namespace addressinput { |
-const std::string& AddressData::GetField(AddressField field) const { |
+void AddressData::BuildDisplayLines(std::vector<std::string>* lines) const { |
Evan Stade
2014/01/16 00:37:40
nit: call this FormatForDisplay?
please use gerrit instead
2014/01/16 01:22:04
Done.
|
+ assert(lines != NULL); |
+ lines->clear(); |
+ |
+ Rule rule; |
+ rule.CopyFrom(Rule::GetDefault()); |
+ rule.ParseSerializedRule(RegionDataConstants::GetRegionData(country_code)); |
+ |
+ const std::vector<std::vector<FormatElement> >& format = rule.GetFormat(); |
+ for (size_t i = 0; i < format.size(); ++i) { |
+ std::string line; |
+ for (size_t j = 0; j < format[i].size(); ++j) { |
+ const FormatElement& element = format[i][j]; |
+ if (element.IsField()) { |
+ if (element.field == STREET_ADDRESS) { |
+ // Street address field can contain multiple values. |
+ for (size_t k = 0; k < address_lines.size(); ++k) { |
+ line += address_lines[k]; |
+ if (k < address_lines.size() - 1) { |
+ lines->push_back(line); |
+ line.clear(); |
+ } |
+ } |
+ } else { |
+ line += GetFieldValue(element.field); |
+ } |
+ } else { |
+ line += element.literal; |
+ } |
+ } |
+ |
+ if (!line.empty()) { |
+ lines->push_back(line); |
+ } |
+ } |
+} |
+ |
+const std::string& AddressData::GetFieldValue(AddressField field) const { |
switch (field) { |
case COUNTRY: |
return country_code; |