diff options
Diffstat (limited to 'libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java')
-rw-r--r-- | libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java b/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java index 6af473e6..abcab8d5 100644 --- a/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java +++ b/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java @@ -16,8 +16,8 @@ package com.google.i18n.phonenumbers; -import com.google.i18n.phonenumbers.nano.Phonemetadata.NumberFormat; -import com.google.i18n.phonenumbers.nano.Phonemetadata.PhoneMetadata; +import com.google.i18n.phonenumbers.Phonemetadata.NumberFormat; +import com.google.i18n.phonenumbers.Phonemetadata.PhoneMetadata; import java.util.ArrayList; import java.util.Iterator; @@ -61,11 +61,8 @@ public class AsYouTypeFormatter { // Character used when appropriate to separate a prefix, such as a long NDD or a country calling // code, from the national number. private static final char SEPARATOR_BEFORE_NATIONAL_NUMBER = ' '; - private static final PhoneMetadata EMPTY_METADATA; - static { - EMPTY_METADATA = new PhoneMetadata(); - EMPTY_METADATA.internationalPrefix = "NA"; - } + private static final PhoneMetadata EMPTY_METADATA = + new PhoneMetadata().setInternationalPrefix("NA"); private PhoneMetadata defaultMetadata; private PhoneMetadata currentMetadata; @@ -154,7 +151,7 @@ public class AsYouTypeFormatter { Iterator<NumberFormat> it = possibleFormats.iterator(); while (it.hasNext()) { NumberFormat numberFormat = it.next(); - String pattern = numberFormat.pattern; + String pattern = numberFormat.getPattern(); if (currentFormattingPattern.equals(pattern)) { return false; } @@ -162,7 +159,7 @@ public class AsYouTypeFormatter { currentFormattingPattern = pattern; shouldAddSpaceAfterNationalPrefix = NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher( - numberFormat.nationalPrefixFormattingRule).find(); + numberFormat.getNationalPrefixFormattingRule()).find(); // With a new formatting template, the matched position using the old template needs to be // reset. lastMatchPosition = 0; @@ -176,17 +173,17 @@ public class AsYouTypeFormatter { } private void getAvailableFormats(String leadingDigits) { - NumberFormat[] numberFormats = - (isCompleteNumber && currentMetadata.intlNumberFormat.length > 0) - ? currentMetadata.intlNumberFormat - : currentMetadata.numberFormat; - boolean nationalPrefixIsUsedByCountry = (!currentMetadata.nationalPrefix.equals("")); - for (NumberFormat format : numberFormats) { + List<NumberFormat> formatList = + (isCompleteNumber && currentMetadata.intlNumberFormatSize() > 0) + ? currentMetadata.intlNumberFormats() + : currentMetadata.numberFormats(); + boolean nationalPrefixIsUsedByCountry = currentMetadata.hasNationalPrefix(); + for (NumberFormat format : formatList) { if (!nationalPrefixIsUsedByCountry || isCompleteNumber || - format.nationalPrefixOptionalWhenFormatting || + format.isNationalPrefixOptionalWhenFormatting() || PhoneNumberUtil.formattingRuleHasFirstGroupOnly( - format.nationalPrefixFormattingRule)) { - if (isFormatEligible(format.format)) { + format.getNationalPrefixFormattingRule())) { + if (isFormatEligible(format.getFormat())) { possibleFormats.add(format); } } @@ -203,14 +200,14 @@ public class AsYouTypeFormatter { Iterator<NumberFormat> it = possibleFormats.iterator(); while (it.hasNext()) { NumberFormat format = it.next(); - if (format.leadingDigitsPattern.length == 0) { + if (format.leadingDigitsPatternSize() == 0) { // Keep everything that isn't restricted by leading digits. continue; } int lastLeadingDigitsPattern = - Math.min(indexOfLeadingDigitsPattern, format.leadingDigitsPattern.length - 1); + Math.min(indexOfLeadingDigitsPattern, format.leadingDigitsPatternSize() - 1); Pattern leadingDigitsPattern = regexCache.getPatternForRegex( - format.leadingDigitsPattern[lastLeadingDigitsPattern]); + format.getLeadingDigitsPattern(lastLeadingDigitsPattern)); Matcher m = leadingDigitsPattern.matcher(leadingDigits); if (!m.lookingAt()) { it.remove(); @@ -219,7 +216,7 @@ public class AsYouTypeFormatter { } private boolean createFormattingTemplate(NumberFormat format) { - String numberPattern = format.pattern; + String numberPattern = format.getPattern(); // The formatter doesn't format numbers when numberPattern contains "|", e.g. // (20|3)\d{4}. In those cases we quickly return. @@ -233,7 +230,7 @@ public class AsYouTypeFormatter { // Replace any standalone digit (not the one in d{}) with \d numberPattern = STANDALONE_DIGIT_PATTERN.matcher(numberPattern).replaceAll("\\\\d"); formattingTemplate.setLength(0); - String tempTemplate = getFormattingTemplate(numberPattern, format.format); + String tempTemplate = getFormattingTemplate(numberPattern, format.getFormat()); if (tempTemplate.length() > 0) { formattingTemplate.append(tempTemplate); return true; @@ -431,12 +428,12 @@ public class AsYouTypeFormatter { */ String attemptToFormatAccruedDigits() { for (NumberFormat numberFormat : possibleFormats) { - Matcher m = regexCache.getPatternForRegex(numberFormat.pattern).matcher(nationalNumber); + Matcher m = regexCache.getPatternForRegex(numberFormat.getPattern()).matcher(nationalNumber); if (m.matches()) { shouldAddSpaceAfterNationalPrefix = NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher( - numberFormat.nationalPrefixFormattingRule).find(); - String formattedNumber = m.replaceAll(numberFormat.format); + numberFormat.getNationalPrefixFormattingRule()).find(); + String formattedNumber = m.replaceAll(numberFormat.getFormat()); return appendNationalNumber(formattedNumber); } } @@ -529,7 +526,7 @@ public class AsYouTypeFormatter { // that national significant numbers in NANPA always start with [2-9] after the national prefix. // Numbers beginning with 1[01] can only be short/emergency numbers, which don't need the // national prefix. - return (currentMetadata.countryCode == 1) && (nationalNumber.charAt(0) == '1') && + return (currentMetadata.getCountryCode() == 1) && (nationalNumber.charAt(0) == '1') && (nationalNumber.charAt(1) != '0') && (nationalNumber.charAt(1) != '1'); } @@ -540,9 +537,9 @@ public class AsYouTypeFormatter { startOfNationalNumber = 1; prefixBeforeNationalNumber.append('1').append(SEPARATOR_BEFORE_NATIONAL_NUMBER); isCompleteNumber = true; - } else if (!currentMetadata.nationalPrefixForParsing.equals("")) { + } else if (currentMetadata.hasNationalPrefixForParsing()) { Pattern nationalPrefixForParsing = - regexCache.getPatternForRegex(currentMetadata.nationalPrefixForParsing); + regexCache.getPatternForRegex(currentMetadata.getNationalPrefixForParsing()); Matcher m = nationalPrefixForParsing.matcher(nationalNumber); // Since some national prefix patterns are entirely optional, check that a national prefix // could actually be extracted. @@ -570,7 +567,7 @@ public class AsYouTypeFormatter { private boolean attemptToExtractIdd() { Pattern internationalPrefix = regexCache.getPatternForRegex("\\" + PhoneNumberUtil.PLUS_SIGN + "|" + - currentMetadata.internationalPrefix); + currentMetadata.getInternationalPrefix()); Matcher iddMatcher = internationalPrefix.matcher(accruedInputWithoutFormatting); if (iddMatcher.lookingAt()) { isCompleteNumber = true; |