From 35bd393fb78215a9c6dbeb158913def01eb58985 Mon Sep 17 00:00:00 2001 From: "lararennie@google.com" Date: Thu, 6 Sep 2012 09:48:57 +0000 Subject: CPP: libphonenumber v5.1 git-svn-id: http://libphonenumber.googlecode.com/svn/trunk/cpp/src/phonenumbers@518 ee073f10-1060-11df-b6a4-87a95322a99c --- asyoutypeformatter.h | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'asyoutypeformatter.h') diff --git a/asyoutypeformatter.h b/asyoutypeformatter.h index 0121f4f..690bb9c 100644 --- a/asyoutypeformatter.h +++ b/asyoutypeformatter.h @@ -24,8 +24,9 @@ // asyoutypeformatter_test.cc for more details on how the formatter is to be // used. // -// This is a direct port from AsYouTypeFormatter.java. Changes to this class -// should also happen to the Java version, whenever it makes sense. +// This is a direct port from AsYouTypeFormatter.java. +// Changes to this class should also happen to the Java version, whenever it +// makes sense. // // This class is NOT THREAD SAFE. @@ -96,6 +97,10 @@ class AsYouTypeFormatter { void NarrowDownPossibleFormats(const string& leading_digits); + // Calculates whether we should be adding a space after the national prefix + // for this formatting rule or not. + void SetShouldAddSpaceAfterNationalPrefix(const NumberFormat& format); + bool CreateFormattingTemplate(const NumberFormat& format); // Gets a formatting template which could be used to efficiently format a @@ -115,8 +120,18 @@ class AsYouTypeFormatter { // can extract a longer version here. bool AbleToExtractLongerNdd(); + // Check to see if there is an exact pattern match for these digits. If so, we + // should use this instead of any other formatting template whose + // leadingDigitsPattern also matches the input. void AttemptToFormatAccruedDigits(string* formatted_number); + // Combines the national number with any prefix (IDD/+ and country code or + // national prefix) that was collected. A space will be inserted between them + // if the current formatting template indicates this to be suitable. + // The result will be stored in phone_number. + void AppendNationalNumber(const string& national_number, + string* phone_number) const; + // Attempts to set the formatting template and assigns the passed-in string // parameter to the formatted version of the digits entered so far. void AttemptToChooseFormattingPattern(string* formatted_number); @@ -125,6 +140,10 @@ class AsYouTypeFormatter { // assigns the passed-in string parameter to a formatted string in the end. void InputAccruedNationalNumber(string* number); + // Returns true if the current country is a NANPA country and the national + // number begins with the national prefix. + bool IsNanpaNumberWithNationalPrefix() const; + // Extracts the national prefix into national_prefix, or sets it to empty // string if a national prefix is not present. void RemoveNationalPrefixFromNationalNumber(string* national_prefix); @@ -170,7 +189,11 @@ class AsYouTypeFormatter { // Set to true when users enter their own formatting. AsYouTypeFormatter will // do no formatting at all when this is set to true. bool input_has_formatting_; - bool is_international_formatting_; + // This is set to true when we know the user is entering a full national + // significant number, since we have either detected a national prefix or an + // international dialing prefix. When this is true, we will no longer use + // local number formatting patterns. + bool is_complete_number_; bool is_expecting_country_code_; const PhoneNumberUtil& phone_util_; @@ -196,6 +219,7 @@ class AsYouTypeFormatter { // significant number, and it is formatted (e.g. with space inserted). For // example, this can contain IDD, country code, and/or NDD, etc. string prefix_before_national_number_; + bool should_add_space_after_national_prefix_; // This contains the national prefix that has been extracted. It contains only // digits without formatting. string national_prefix_extracted_; -- cgit v1.2.3