diff options
Diffstat (limited to 'phonenumbermatch.h')
-rw-r--r-- | phonenumbermatch.h | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/phonenumbermatch.h b/phonenumbermatch.h new file mode 100644 index 0000000..8cc7dc3 --- /dev/null +++ b/phonenumbermatch.h @@ -0,0 +1,125 @@ +// Copyright (C) 2011 The Libphonenumber Authors +// +// 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. +// +// Author: Tao Huang +// +// A mutable match of a phone number within a piece of text. +// Matches may be found using PhoneNumberUtil::FindNumbers. +// +// A match consists of the phone number as well as the start and end offsets of +// the corresponding subsequence of the searched text. Use raw_string() to +// obtain a copy of the matched subsequence. +// +// The following annotated example clarifies the relationship between the +// searched text, the match offsets, and the parsed number: +// +// string text = "Call me at +1 425 882-8080 for details."; +// const string country = "US"; +// +// // Find the first phone number match: +// PhoneNumberMatcher matcher(text, country); +// if (matcher.HasNext()) { +// PhoneNumberMatch match; +// matcher.Next(&match); +// } +// +// // raw_string() contains the phone number as it appears in the text. +// "+1 425 882-8080" == match.raw_string(); +// +// // start() and end() define the range of the matched subsequence. +// string subsequence = text.substr(match.start(), match.end()); +// "+1 425 882-8080" == subsequence; +// +// // number() returns the the same result as PhoneNumberUtil::Parse() +// // invoked on raw_string(). +// const PhoneNumberUtil& util = *PhoneNumberUtil::GetInstance(); +// util.Parse(match.raw_string(), country).Equals(match.number()); +// +// This class is a port of PhoneNumberMatch.java + +#ifndef I18N_PHONENUMBERS_PHONENUMBERMATCH_H_ +#define I18N_PHONENUMBERS_PHONENUMBERMATCH_H_ + +#include <string> + +#include "phonenumbers/base/basictypes.h" +#include "phonenumbers/phonenumber.pb.h" + +namespace i18n { +namespace phonenumbers { + +using std::string; + +class PhoneNumberMatch { + public: + // Creates a new match. + // - start is the index into the target text. + // - match is the matched string of the target text. + // - number is the matched phone number. + PhoneNumberMatch(int start, + const string& raw_string, + const PhoneNumber& number); + + // Default constructor. + PhoneNumberMatch(); + + ~PhoneNumberMatch() {} + + // Returns the phone number matched by the receiver. + const PhoneNumber& number() const; + + // Returns the start index of the matched phone number within the searched + // text. + int start() const; + + // Returns the exclusive end index of the matched phone number within the + // searched text. + int end() const; + + // Returns the length of the text matched in the searched text. + int length() const; + + // Returns the raw string matched as a phone number in the searched text. + const string& raw_string() const; + + // Returns a string containing debug information. + string ToString() const; + + void set_start(int start); + + void set_raw_string(const string& raw_string); + + void set_number(const PhoneNumber& number); + + bool Equals(const PhoneNumberMatch& number) const; + + void CopyFrom(const PhoneNumberMatch& number); + + private: + // The start index into the text. + int start_; + + // The raw substring matched. + string raw_string_; + + // The matched phone number. + PhoneNumber number_; + + DISALLOW_COPY_AND_ASSIGN(PhoneNumberMatch); +}; + +} // namespace phonenumbers +} // namespace i18n + +#endif // I18N_PHONENUMBERS_PHONENUMBERMATCH_H_ |