1c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// Copyright (C) 2014 Google Inc. 2c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// 3c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// Licensed under the Apache License, Version 2.0 (the "License"); 4c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// you may not use this file except in compliance with the License. 5c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// You may obtain a copy of the License at 6c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// 7c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// http://www.apache.org/licenses/LICENSE-2.0 8c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// 9c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// Unless required by applicable law or agreed to in writing, software 10c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// distributed under the License is distributed on an "AS IS" BASIS, 11c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// See the License for the specific language governing permissions and 13c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com// limitations under the License. 14c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 15c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com#include "format_element.h" 16c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 17c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com#include <libaddressinput/address_field.h> 18c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 19c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com#include <cassert> 20c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com#include <ostream> 21c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 22c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comnamespace i18n { 23c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comnamespace addressinput { 24c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 25c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comFormatElement::FormatElement(AddressField field) : field_(field), literal_() {} 26c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 27c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comFormatElement::FormatElement(const std::string& literal) 28c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com : field_(static_cast<AddressField>(-1)), literal_(literal) { 29c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com assert(!literal.empty()); 30c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com} 31c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 32c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comFormatElement::FormatElement() 33c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com : field_(static_cast<AddressField>(-1)), literal_("\n") {} 34c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 35c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.combool FormatElement::operator==(const FormatElement& other) const { 36c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com return field_ == other.field_ && literal_ == other.literal_; 37c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com} 38c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 39c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com} // namespace addressinput 40c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com} // namespace i18n 41c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com 42c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.comstd::ostream& operator<<(std::ostream& o, 43c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com const i18n::addressinput::FormatElement& element) { 44c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com if (element.IsField()) { 45c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com o << "Field: " << element.GetField(); 46c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com } else if (element.IsNewline()) { 47c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com o << "Newline"; 48c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com } else { 49c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com o << "Literal: " << element.GetLiteral(); 50c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com } 51c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com return o; 52c8efd308315b65f36c0d056e04dc98cb3d98f204lararennie@google.com} 53