1 // Copyright (C) 2011 The Libphonenumber Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 // 15 // Author: Tao Huang 16 // 17 // Implementation of a mutable match of a phone number within a piece of 18 // text. Matches may be found using PhoneNumberUtil::FindNumbers. 19 20 #include "phonenumbers/phonenumbermatch.h" 21 22 #include <string> 23 24 #include "phonenumbers/phonenumber.h" 25 #include "phonenumbers/phonenumber.pb.h" 26 #include "phonenumbers/stringutil.h" 27 28 namespace i18n { 29 namespace phonenumbers { 30 31 PhoneNumberMatch::PhoneNumberMatch(int start, 32 const string& raw_string, 33 const PhoneNumber& number) 34 : start_(start), raw_string_(raw_string), number_(number) { 35 } 36 37 PhoneNumberMatch::PhoneNumberMatch() 38 : start_(-1), raw_string_(""), number_(PhoneNumber::default_instance()) { 39 } 40 41 const PhoneNumber& PhoneNumberMatch::number() const { 42 return number_; 43 } 44 45 int PhoneNumberMatch::start() const { 46 return start_; 47 } 48 49 int PhoneNumberMatch::end() const { 50 return start_ + raw_string_.length(); 51 } 52 53 int PhoneNumberMatch::length() const { 54 return raw_string_.length(); 55 } 56 57 const string& PhoneNumberMatch::raw_string() const { 58 return raw_string_; 59 } 60 61 void PhoneNumberMatch::set_start(int start) { 62 start_ = start; 63 } 64 65 void PhoneNumberMatch::set_raw_string(const string& raw_string) { 66 raw_string_ = raw_string; 67 } 68 69 void PhoneNumberMatch::set_number(const PhoneNumber& number) { 70 number_.CopyFrom(number); 71 } 72 73 string PhoneNumberMatch::ToString() const { 74 return StrCat("PhoneNumberMatch [", start(), ",", end(), ") ", 75 raw_string_.c_str()); 76 } 77 78 bool PhoneNumberMatch::Equals(const PhoneNumberMatch& match) const { 79 return ExactlySameAs(match.number_, number_) && 80 match.raw_string_.compare(raw_string_) == 0 && 81 match.start_ == start_; 82 } 83 84 void PhoneNumberMatch::CopyFrom(const PhoneNumberMatch& match) { 85 raw_string_ = match.raw_string(); 86 start_ = match.start(); 87 number_ = match.number(); 88 } 89 90 } // namespace phonenumbers 91 } // namespace i18n 92