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