Browse Source

JS: Update JS version to v3.0. findNumbers is not included yet.

pull/567/head
Nikolaos Trogkanis 15 years ago
committed by Mihaela Rosca
parent
commit
3d83160357
9 changed files with 998 additions and 1039 deletions
  1. +7
    -6
      javascript/README
  2. +20
    -5
      javascript/i18n/phonenumbers/asyoutypeformatter.js
  3. +37
    -2
      javascript/i18n/phonenumbers/asyoutypeformatter_test.js
  4. +68
    -65
      javascript/i18n/phonenumbers/metadata.js
  5. +4
    -2
      javascript/i18n/phonenumbers/metadatafortesting.js
  6. +68
    -65
      javascript/i18n/phonenumbers/metadatalite.js
  7. +56
    -0
      javascript/i18n/phonenumbers/phonenumber.pb.js
  8. +135
    -141
      javascript/i18n/phonenumbers/phonenumberutil.js
  9. +603
    -753
      javascript/i18n/phonenumbers/phonenumberutil_test.js

+ 7
- 6
javascript/README View File

@ -25,18 +25,14 @@ pages with your web browser:
How to update:
==============
The JavaScript library is ported from the Java implementation (revision 76).
The JavaScript library is ported from the Java implementation (revision 107).
When the Java project gets updated follow these steps to update the JavaScript
project:
1. If the protocol buffers (phonemetadata.proto and phonenumber.proto)
have changed:
a. Manually update the .pb.js files with the changes of the .proto files.
b. Manually update the following JavaScript functions in
javascript/i18n/phonenumbers/phonenumberutil.js:
i18n.phonenumbers.PhoneNumberDesc.prototype.exactlySameAs(other)
i18n.phonenumbers.PhoneNumber.prototype.exactlySameAs(other)
c. Manually update the toJsArray() Java methods in
b. Manually update the toJsArray() Java methods in
/java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java
2. If the phone number metadata in the XML format has changed
@ -63,3 +59,8 @@ project:
AsYouTypeFormatter.java => asyoutypeformatter.js
PhoneNumberUtilTest.java => phonenumberutil_test.js
AsYouTypeFormatterTest.java => asyoutypeformatter_test.js
TODO:
=====
Port functionality to extract phone-numbers from text (findNumbers).

+ 20
- 5
javascript/i18n/phonenumbers/asyoutypeformatter.js View File

@ -203,6 +203,13 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.initializeCountrySpecificInfo_ =
/** @type {i18n.phonenumbers.PhoneMetadata} */
this.currentMetaData_ = this.phoneUtil_.getMetadataForRegion(regionCode);
if (this.currentMetaData_ == null) {
// Set to a default instance of the metadata. This allows us to function
// with an incorrect region code, even if formatting only works for numbers
// specified with '+'.
this.currentMetaData_ = new i18n.phonenumbers.PhoneMetadata();
this.currentMetaData_.setInternationalPrefix('NA');
}
/** @type {RegExp} */
this.nationalPrefixForParsing_ = new RegExp('^(' + this.currentMetaData_
.getNationalPrefixForParsing() + ')');
@ -319,9 +326,13 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.createFormattingTemplate_ =
// Replace any standalone digit (not the one in d{}) with \d
numberPattern = numberPattern.replace(this.STANDALONE_DIGIT_PATTERN_, '\\d');
this.formattingTemplate_.clear();
this.formattingTemplate_.append(this.getFormattingTemplate_(numberPattern,
numberFormat));
return true;
/** @type {string} */
var tempTemplate = this.getFormattingTemplate_(numberPattern, numberFormat);
if (tempTemplate.length > this.nationalNumber_.getLength()) {
this.formattingTemplate_.append(tempTemplate);
return true;
}
return false;
};
@ -779,8 +790,12 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigitHelper_ =
this.lastMatchPosition_ = digitPatternStart;
return tempTemplate.substring(0, this.lastMatchPosition_ + 1);
} else {
// More digits are entered than we could handle.
this.ableToFormat_ = false;
if (this.possibleFormats_.length == 1) {
// More digits are entered than we could handle, and there are no other
// valid patterns to try.
this.ableToFormat_ = false;
} // else, we just reset the formatting pattern.
this.currentFormattingPattern_ = '';
return this.accruedInput_.toString();
}
};

+ 37
- 2
javascript/i18n/phonenumbers/asyoutypeformatter_test.js View File

@ -24,6 +24,29 @@
goog.require('goog.testing.jsunit');
goog.require('i18n.phonenumbers.AsYouTypeFormatter');
function testInvalidRegion() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
var f = new i18n.phonenumbers.AsYouTypeFormatter('ZZ');
assertEquals('+', f.inputDigit('+'));
assertEquals('+4', f.inputDigit('4'));
assertEquals('+48 ', f.inputDigit('8'));
assertEquals('+48 8', f.inputDigit('8'));
assertEquals('+48 88', f.inputDigit('8'));
assertEquals('+48 88 1', f.inputDigit('1'));
assertEquals('+48 88 12', f.inputDigit('2'));
assertEquals('+48 88 123', f.inputDigit('3'));
assertEquals('+48 88 123 1', f.inputDigit('1'));
assertEquals('+48 88 123 12', f.inputDigit('2'));
f.clear();
assertEquals('6', f.inputDigit('6'));
assertEquals('65', f.inputDigit('5'));
assertEquals('650', f.inputDigit('0'));
assertEquals('6502', f.inputDigit('2'));
assertEquals('65025', f.inputDigit('5'));
assertEquals('650253', f.inputDigit('3'));
}
function testAYTFUS() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
@ -375,13 +398,25 @@ function testAYTFDE() {
assertEquals('030 123', f.inputDigit('3'));
assertEquals('030 1234', f.inputDigit('4'));
// 04134 1234
f.clear();
assertEquals('0', f.inputDigit('0'));
assertEquals('04', f.inputDigit('4'));
assertEquals('041', f.inputDigit('1'));
assertEquals('041 3', f.inputDigit('3'));
assertEquals('041 34', f.inputDigit('4'));
assertEquals('04134 1', f.inputDigit('1'));
assertEquals('04134 12', f.inputDigit('2'));
assertEquals('04134 123', f.inputDigit('3'));
assertEquals('04134 1234', f.inputDigit('4'));
// 08021 2345
f.clear();
assertEquals('0', f.inputDigit('0'));
assertEquals('08', f.inputDigit('8'));
assertEquals('080', f.inputDigit('0'));
assertEquals('0802', f.inputDigit('2'));
assertEquals('08021', f.inputDigit('1'));
assertEquals('080 2', f.inputDigit('2'));
assertEquals('080 21', f.inputDigit('1'));
assertEquals('08021 2', f.inputDigit('2'));
assertEquals('08021 23', f.inputDigit('3'));
assertEquals('08021 234', f.inputDigit('4'));


+ 68
- 65
javascript/i18n/phonenumbers/metadata.js View File

@ -607,7 +607,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BF":[,[,,"[2457]\\d{7}","\\d{8}"]
,[,,"(?:20(?:49|5[23]|9[016-9])|40(?:4[569]|55|7[0179])|50[34]\\d)\\d{4}","\\d{8}",,,"20491234"]
,[,,"7(?:[024-6]\\d|1[0-489]|3[01]|8[013-9]|9[012])\\d{5}","\\d{8}",,,"70123456"]
,[,,"7(?:[024-6]\\d|1[0-489]|3[0124]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}",,,"70123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@ -733,9 +733,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,"BO",591,"00(1\\d)?","0",,,"0(1\\d)?",,,,[[,"([234])(\\d{7})","$1 $2",["[234]"]
,"",""]
,"","0$CC $1"]
,[,"([67]\\d{7})","$1",["[67]"]
,"",""]
,"","0$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -749,8 +749,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"(?:400\\d|3003)\\d{4}","\\d{8,10}",,,"40041234"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(?:1[245]|2[135]|[34]1)(\\d{10}))?","$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"]
,"($1)","0 $CC $1"]
,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(1[245]|2[135]|[34]1)(\\d{10}))?","$2",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"]
,"($1)","0 $CC ($1)"]
,[,"([34]00\\d)(\\d{4})","$1-$2",["[34]00","400|3003"]
,"",""]
,[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"]
@ -951,10 +951,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"44\\d{7}","\\d{9}",,,"441234567"]
,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018])",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"]
,"0$1",""]
,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"]
,"($1)","$CC ($1)"]
,[,"(\\d{2})(\\d{2,3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"]
,"0$1",""]
,"($1)","$CC ($1)"]
,[,"(9)([6-9]\\d{3})(\\d{4})","$1 $2 $3",["9"]
,"0$1",""]
,[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"]
@ -1043,10 +1043,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"CO",57,"00[579]|#555|#999","0",,,"0(?:[3579]|4(?:44|56))",,,,[[,"(\\d)(\\d{7})","($1) $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
,"",""]
,"CO",57,"00[579]|#555|#999","0",,,"0([3579]|4(?:44|56))",,,,[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
,"($1)","0$CC $1"]
,[,"(\\d{3})(\\d{7})","$1 $2",["3"]
,"",""]
,"","0$CC $1"]
,[,"(1)(\\d{3})(\\d{7})","$1-$2-$3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"]
,"0$1",""]
]
@ -1061,18 +1061,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
,"CR":[,[,,"[289]\\d{7,9}","\\d{8,10}"]
,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"]
,[,,"2[24-7]\\d{6}","\\d{8}",,,"22123456"]
,[,,"8[389]\\d{6}","\\d{8}",,,"83123456"]
,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
,[,,"90[059]\\d{7}","\\d{10}",,,"9001234567"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"CR",506,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["2|8[389]"]
,"",""]
,[,,"4000\\d{4}","\\d{8}",,,"40001234"]
,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[389]"]
,"","$CC $1"]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]0"]
,"",""]
,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -1182,7 +1182,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"DK":[,[,,"[1-9]\\d{7}","\\d{8}"]
,[,,"(?:3[2-9]|4[3-9]|5[4-9]|6[2-9]|7[02-9]|8[26-9]|9[6-9])\\d{6}","\\d{8}",,,"32123456"]
,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|72|99)\\d{6}","\\d{8}",,,"20123456"]
,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|7[12]|81|99)\\d{6}","\\d{8}",,,"20123456"]
,[,,"80\\d{6}","\\d{8}",,,"80123456"]
,[,,"90\\d{6}","\\d{8}",,,"90123456"]
,[,,"NA","NA"]
@ -1408,7 +1408,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:6[0-36]|88)\\d{4}","\\d{6}",,,"601234"]
,"FO",298,"00",,,,"10(?:01|[12]0|88)",,,,,,[,,"NA","NA"]
,"FO",298,"00",,,,"(10(?:01|[12]0|88))",,,,[[,"(\\d{6})","$1",,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
@ -1491,8 +1493,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"473",[,,"NA","NA"]
,[,,"NA","NA"]
]
,"GE":[,[,,"[1-3579]\\d{7}|8\\d{8}","\\d{3,9}"]
,[,,"(?:122|2(?:22|36|5[03])|3(?:1[0-35-8]|[24-6]\\d|3[1-35679]|7[0-39]|9[1-35-7])|44[2-6])\\d{5}","\\d{3,8}",,,"32123456"]
,"GE":[,[,,"[1-579]\\d{7}|8\\d{8}","\\d{5,9}"]
,[,,"(?:122|2(?:22|36|5[035])|3(?:1[0-35-8]|3[1-35679]|4\\d|7[0-39]|9[1-35-7])|3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{5}","\\d{5,8}",,,"32123456"]
,[,,"(?:5[1578]|6[28]|7[0147-9]|9[0135-9])\\d{6}","\\d{8}",,,"55123456"]
,[,,"800\\d{6}","\\d{9}",,,"800123456"]
,[,,"NA","NA"]
@ -1500,12 +1502,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,"GE",995,"8~10","8",,,"8",,,,[[,"(32)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"]
,"8 $1",""]
,[,"(\\d{3})(\\d{5})","$1 $2",["2|3[13-79]|446"]
,"8 $1",""]
,[,"(\\d{4})(\\d{3,4})","$1 $2",["44[2-5]"]
,"8 $1",""]
,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[5679]"]
,"8 ($1)",""]
,[,"(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24]|3[13-79]"]
,"8 ($1)",""]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5679]"]
,"8 $1",""]
,[,"(800)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]
,"8 $1",""]
@ -2212,28 +2212,28 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"50\\d{8}","\\d{10}",,,"5012345678"]
,[,,"70\\d{8}","\\d{10}",,,"7012345678"]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"0$1",""]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["2(?:[26]|3[0-467])","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["2(?:3[0-35-9]|[457-9])","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{4})(\\d{4})","$1-$2",["1(?:5[46-9]|6[04678])","1(?:5(?:44|66|77|88|99)|6(?:00|44|6[16]|70|88))"]
,"$1",""]
,"$1","0$CC-$1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -2241,7 +2241,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KW":[,[,,"[12569]\\d{6,7}","\\d{7,8}"]
,[,,"(?:18\\d|2(?:[23]\\d{2}|4[1-35-9]\\d|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7])))\\d{4}","\\d{7,8}",,,"22345678"]
,[,,"(?:5(?:0[02]|5\\d)|6(?:0[03679]|5[015-9]|6\\d|7[067])|9(?:0[09]|4[049]|[79]\\d))\\d{5}","\\d{8}",,,"50012345"]
,[,,"(?:5(?:0[02]|5\\d)|6(?:0[034679]|5[015-9]|6\\d|7[067])|9(?:0[09]|4[049]|[79]\\d))\\d{5}","\\d{8}",,,"50012345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@ -2282,15 +2282,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LA":[,[,,"[2-57]\\d{7,9}","\\d{6,10}"]
,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}",,,"21212862"]
,[,,"20(?:[23]|5[4-6]|77|9[89])\\d{6}","\\d{9,10}",,,"202345678"]
,[,,"20(?:2[23]|5[4-6]|77|9[89])\\d{6}","\\d{10}",,,"2023123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"LA",856,"00","0",,,"0",,,,[[,"(20)([23])(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[23]"]
,"0$1",""]
,[,"(20)([579]\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[579]"]
,"LA",856,"00","0",,,"0",,,,[[,"(20)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["20"]
,"0$1",""]
,[,"([2-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["21|[3-57]"]
,"0$1",""]
@ -2424,24 +2422,24 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"801\\d{5}","\\d{8}",,,"80112345"]
,[,,"70\\d{6}","\\d{8}",,,"70123456"]
,[,,"20\\d{2,8}","\\d{4,10}",,,"2012345"]
,"LU",352,"00",,,,"15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d",,,,[[,"(\\d{2})(\\d{3})","$1 $2",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"LU",352,"00",,,,"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d)",,,,[[,"(\\d{2})(\\d{3})","$1 $2",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,4})","$1 $2 $3 $4",["2(?:[12589]|4[12])|[3-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0[01]|70"]
,"",""]
,"","$CC $1"]
,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]
,"",""]
,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -2754,7 +2752,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"MU",230,"020",,,,,,,,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""]
,"MU",230,"0(?:[2-7]0|33)",,,,,,"020",,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -3446,7 +3444,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:4?4[1-3]|6?47)\\d{4}","\\d{6,7}",,,"4410123"]
,[,,"(?:44[1-3]|647)\\d{4}","\\d{7}",,,"4410123"]
,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[23578]|[46][0-35-9]"]
,"",""]
,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[46]4"]
@ -3537,15 +3535,15 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"7000\\d{7}","\\d{11}",,,"70001234567"]
]
,"SH":[,[]
,[]
,[]
,"SH":[,[,,"[2-9]\\d{3}","\\d{4}"]
,[,,"(?:[2-468]\\d|7[01])\\d{2}","\\d{4}",,,"2158"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:[59]\\d|7[2-9])\\d{2}","\\d{4}",,,"5012"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"SH",290,"00",,,,,,,1,,,[,,"NA","NA"]
,"SH",290,"00",,,,,,,,,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
@ -3892,19 +3890,24 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
,"TR":[,[,,"[2-589]\\d{9}","\\d{10}"]
,[,,"[2-4]\\d{9}|850\\d{7}","\\d{10}",,,"2123456789"]
,[,,"5\\d{9}","\\d{10}",,,"5123456789"]
,"TR":[,[,,"[2-589]\\d{9}|444\\d{4}","\\d{7,10}"]
,[,,"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}","\\d{10}",,,"2123456789"]
,[,,"5(?:0[1-35-7]|22|3\\d|4[1-79]|5[1-5]|9[246])\\d{7}","\\d{10}",,,"5012345678"]
,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
,[,,"900\\d{7}","\\d{10}",,,"9001234567"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"TR",90,"00","0",,,"0",,,,[[,"([2-589]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]
,"TR",90,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[23]|4(?:[0-35-9]|4[0-35-9])"]
,"(0$1)",""]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[589]"]
,"0$1",""]
,[,"(444)(\\d{1})(\\d{3})","$1 $2 $3",["444"]
,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"444\\d{4}|850\\d{7}","\\d{7,10}",,,"4441444"]
]
,"TT":[,[,,"[89]\\d{9}","\\d{7,10}"]
,[,,"868(?:2(?:01|2[1-4])|6(?:1[4-6]|2[1-9]|[3-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7,10}",,,"8682211234"]
@ -4081,7 +4084,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"VE",58,"00","0",,,"1\\d{2}|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1",""]
,"VE",58,"00","0",,,"(1\\d{2})|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]


+ 4
- 2
javascript/i18n/phonenumbers/metadatafortesting.js View File

@ -94,7 +94,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,"9(11)(\\d{4})(\\d{4})","$1 15 $2-$3",["911"]
,"0$1",""]
,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["9(?:1[02-9]|[23])"]
,"0$1","$1 $CC"]
,"0$1","0$1 $CC"]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
,"0$1",""]
]
@ -154,6 +154,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"0$1",""]
,[,"(\\d{2})(\\d{4,9})","$1 $2",["[34]0|[68]9"]
,"0$1",""]
,[,"([4-9]\\d)(\\d{2})","$1 $2",["[4-9]","[4-6]|[7-9](?:\\d[1-9]|[1-9]\\d)"]
,"0$1",""]
,[,"([4-9]\\d{3})(\\d{2,7})","$1 $2",["[4-9]","[4-6]|[7-9](?:\\d[1-9]|[1-9]\\d)"]
,"0$1",""]
,[,"(\\d{3})(\\d{1})(\\d{6})","$1 $2 $3",["800"]
@ -236,7 +238,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"50\\d{8}","\\d{10}",,,"5012345678"]
,[,,"70\\d{8}","\\d{10}",,,"7012345678"]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"0$1",""]
,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"]
,"0$1",""]


+ 68
- 65
javascript/i18n/phonenumbers/metadatalite.js View File

@ -607,7 +607,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BF":[,[,,"[2457]\\d{7}","\\d{8}"]
,[,,"(?:20(?:49|5[23]|9[016-9])|40(?:4[569]|55|7[0179])|50[34]\\d)\\d{4}","\\d{8}"]
,[,,"7(?:[024-6]\\d|1[0-489]|3[01]|8[013-9]|9[012])\\d{5}","\\d{8}"]
,[,,"7(?:[024-6]\\d|1[0-489]|3[0124]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@ -733,9 +733,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,"BO",591,"00(1\\d)?","0",,,"0(1\\d)?",,,,[[,"([234])(\\d{7})","$1 $2",["[234]"]
,"",""]
,"","0$CC $1"]
,[,"([67]\\d{7})","$1",["[67]"]
,"",""]
,"","0$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -749,8 +749,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"(?:400\\d|3003)\\d{4}","\\d{8,10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(?:1[245]|2[135]|[34]1)(\\d{10}))?","$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"]
,"($1)","0 $CC $1"]
,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(1[245]|2[135]|[34]1)(\\d{10}))?","$2",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"]
,"($1)","0 $CC ($1)"]
,[,"([34]00\\d)(\\d{4})","$1-$2",["[34]00","400|3003"]
,"",""]
,[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"]
@ -951,10 +951,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"44\\d{7}","\\d{9}"]
,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018])",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"]
,"0$1",""]
,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"]
,"($1)","$CC ($1)"]
,[,"(\\d{2})(\\d{2,3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"]
,"0$1",""]
,"($1)","$CC ($1)"]
,[,"(9)([6-9]\\d{3})(\\d{4})","$1 $2 $3",["9"]
,"0$1",""]
,[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"]
@ -1043,10 +1043,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"CO",57,"00[579]|#555|#999","0",,,"0(?:[3579]|4(?:44|56))",,,,[[,"(\\d)(\\d{7})","($1) $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
,"",""]
,"CO",57,"00[579]|#555|#999","0",,,"0([3579]|4(?:44|56))",,,,[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
,"($1)","0$CC $1"]
,[,"(\\d{3})(\\d{7})","$1 $2",["3"]
,"",""]
,"","0$CC $1"]
,[,"(1)(\\d{3})(\\d{7})","$1-$2-$3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"]
,"0$1",""]
]
@ -1061,18 +1061,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
,"CR":[,[,,"[289]\\d{7,9}","\\d{8,10}"]
,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"]
,[,,"2[24-7]\\d{6}","\\d{8}"]
,[,,"8[389]\\d{6}","\\d{8}"]
,[,,"800\\d{7}","\\d{10}"]
,[,,"90[059]\\d{7}","\\d{10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"CR",506,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["2|8[389]"]
,"",""]
,[,,"4000\\d{4}","\\d{8}"]
,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[389]"]
,"","$CC $1"]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]0"]
,"",""]
,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -1182,7 +1182,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"DK":[,[,,"[1-9]\\d{7}","\\d{8}"]
,[,,"(?:3[2-9]|4[3-9]|5[4-9]|6[2-9]|7[02-9]|8[26-9]|9[6-9])\\d{6}","\\d{8}"]
,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|72|99)\\d{6}","\\d{8}"]
,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|7[12]|81|99)\\d{6}","\\d{8}"]
,[,,"80\\d{6}","\\d{8}"]
,[,,"90\\d{6}","\\d{8}"]
,[,,"NA","NA"]
@ -1408,7 +1408,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:6[0-36]|88)\\d{4}","\\d{6}"]
,"FO",298,"00",,,,"10(?:01|[12]0|88)",,,,,,[,,"NA","NA"]
,"FO",298,"00",,,,"(10(?:01|[12]0|88))",,,,[[,"(\\d{6})","$1",,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
@ -1491,8 +1493,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"473",[,,"NA","NA"]
,[,,"NA","NA"]
]
,"GE":[,[,,"[1-3579]\\d{7}|8\\d{8}","\\d{3,9}"]
,[,,"(?:122|2(?:22|36|5[03])|3(?:1[0-35-8]|[24-6]\\d|3[1-35679]|7[0-39]|9[1-35-7])|44[2-6])\\d{5}","\\d{3,8}"]
,"GE":[,[,,"[1-579]\\d{7}|8\\d{8}","\\d{5,9}"]
,[,,"(?:122|2(?:22|36|5[035])|3(?:1[0-35-8]|3[1-35679]|4\\d|7[0-39]|9[1-35-7])|3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{5}","\\d{5,8}"]
,[,,"(?:5[1578]|6[28]|7[0147-9]|9[0135-9])\\d{6}","\\d{8}"]
,[,,"800\\d{6}","\\d{9}"]
,[,,"NA","NA"]
@ -1500,12 +1502,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,"GE",995,"8~10","8",,,"8",,,,[[,"(32)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"]
,"8 $1",""]
,[,"(\\d{3})(\\d{5})","$1 $2",["2|3[13-79]|446"]
,"8 $1",""]
,[,"(\\d{4})(\\d{3,4})","$1 $2",["44[2-5]"]
,"8 $1",""]
,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[5679]"]
,"8 ($1)",""]
,[,"(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[24]|3[13-79]"]
,"8 ($1)",""]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5679]"]
,"8 $1",""]
,[,"(800)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"]
,"8 $1",""]
@ -2212,28 +2212,28 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"50\\d{8}","\\d{10}"]
,[,,"70\\d{8}","\\d{10}"]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"0$1",""]
,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["2(?:[26]|3[0-467])","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["2(?:3[0-35-9]|[457-9])","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"]
,"0$1",""]
,"0$1","0$CC-$1"]
,[,"(\\d{4})(\\d{4})","$1-$2",["1(?:5[46-9]|6[04678])","1(?:5(?:44|66|77|88|99)|6(?:00|44|6[16]|70|88))"]
,"$1",""]
,"$1","0$CC-$1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -2241,7 +2241,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KW":[,[,,"[12569]\\d{6,7}","\\d{7,8}"]
,[,,"(?:18\\d|2(?:[23]\\d{2}|4[1-35-9]\\d|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7])))\\d{4}","\\d{7,8}"]
,[,,"(?:5(?:0[02]|5\\d)|6(?:0[03679]|5[015-9]|6\\d|7[067])|9(?:0[09]|4[049]|[79]\\d))\\d{5}","\\d{8}"]
,[,,"(?:5(?:0[02]|5\\d)|6(?:0[034679]|5[015-9]|6\\d|7[067])|9(?:0[09]|4[049]|[79]\\d))\\d{5}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@ -2282,15 +2282,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LA":[,[,,"[2-57]\\d{7,9}","\\d{6,10}"]
,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}"]
,[,,"20(?:[23]|5[4-6]|77|9[89])\\d{6}","\\d{9,10}"]
,[,,"20(?:2[23]|5[4-6]|77|9[89])\\d{6}","\\d{10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"LA",856,"00","0",,,"0",,,,[[,"(20)([23])(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[23]"]
,"0$1",""]
,[,"(20)([579]\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[579]"]
,"LA",856,"00","0",,,"0",,,,[[,"(20)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["20"]
,"0$1",""]
,[,"([2-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["21|[3-57]"]
,"0$1",""]
@ -2424,24 +2422,24 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"801\\d{5}","\\d{8}"]
,[,,"70\\d{6}","\\d{8}"]
,[,,"20\\d{2,8}","\\d{4,10}"]
,"LU",352,"00",,,,"15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d",,,,[[,"(\\d{2})(\\d{3})","$1 $2",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"LU",352,"00",,,,"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d)",,,,[[,"(\\d{2})(\\d{3})","$1 $2",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[23-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["20"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4",["2(?:[0367]|4[3-8])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["20"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5",["2(?:[0367]|4[3-8])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{1,4})","$1 $2 $3 $4",["2(?:[12589]|4[12])|[3-5]|7[1-9]|[89](?:[1-9]|0[2-9])"]
,"",""]
,"","$CC $1"]
,[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["[89]0[01]|70"]
,"",""]
,"","$CC $1"]
,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]
,"",""]
,"","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -2754,7 +2752,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"MU",230,"020",,,,,,,,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""]
,"MU",230,"0(?:[2-7]0|33)",,,,,,"020",,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@ -3446,7 +3444,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:4?4[1-3]|6?47)\\d{4}","\\d{6,7}"]
,[,,"(?:44[1-3]|647)\\d{4}","\\d{7}"]
,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[23578]|[46][0-35-9]"]
,"",""]
,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[46]4"]
@ -3537,15 +3535,15 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"7000\\d{7}","\\d{11}"]
]
,"SH":[,[]
,[]
,[]
,"SH":[,[,,"[2-9]\\d{3}","\\d{4}"]
,[,,"(?:[2-468]\\d|7[01])\\d{2}","\\d{4}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"(?:[59]\\d|7[2-9])\\d{2}","\\d{4}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"SH",290,"00",,,,,,,1,,,[,,"NA","NA"]
,"SH",290,"00",,,,,,,,,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
@ -3892,19 +3890,24 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
,"TR":[,[,,"[2-589]\\d{9}","\\d{10}"]
,[,,"[2-4]\\d{9}|850\\d{7}","\\d{10}"]
,[,,"5\\d{9}","\\d{10}"]
,"TR":[,[,,"[2-589]\\d{9}|444\\d{4}","\\d{7,10}"]
,[,,"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}","\\d{10}"]
,[,,"5(?:0[1-35-7]|22|3\\d|4[1-79]|5[1-5]|9[246])\\d{7}","\\d{10}"]
,[,,"800\\d{7}","\\d{10}"]
,[,,"900\\d{7}","\\d{10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"TR",90,"00","0",,,"0",,,,[[,"([2-589]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]
,"TR",90,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[23]|4(?:[0-35-9]|4[0-35-9])"]
,"(0$1)",""]
,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[589]"]
,"0$1",""]
,[,"(444)(\\d{1})(\\d{3})","$1 $2 $3",["444"]
,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"444\\d{4}|850\\d{7}","\\d{7,10}"]
]
,"TT":[,[,,"[89]\\d{9}","\\d{7,10}"]
,[,,"868(?:2(?:01|2[1-4])|6(?:1[4-6]|2[1-9]|[3-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7,10}"]
@ -4081,7 +4084,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,"VE",58,"00","0",,,"1\\d{2}|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1",""]
,"VE",58,"00","0",,,"(1\\d{2})|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1","$CC $1"]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]


+ 56
- 0
javascript/i18n/phonenumbers/phonenumber.pb.js View File

@ -354,6 +354,57 @@ i18n.phonenumbers.PhoneNumber.prototype.clearCountryCodeSource = function() {
};
/**
* Gets the value of the preferred_domestic_carrier_code field.
* @return {?string} The value.
*/
i18n.phonenumbers.PhoneNumber.prototype.getPreferredDomesticCarrierCode = function() {
return /** @type {?string} */ (this.get$Value(7));
};
/**
* Gets the value of the preferred_domestic_carrier_code field or the default value if not set.
* @return {string} The value.
*/
i18n.phonenumbers.PhoneNumber.prototype.getPreferredDomesticCarrierCodeOrDefault = function() {
return /** @type {string} */ (this.get$ValueOrDefault(7));
};
/**
* Sets the value of the preferred_domestic_carrier_code field.
* @param {string} value The value.
*/
i18n.phonenumbers.PhoneNumber.prototype.setPreferredDomesticCarrierCode = function(value) {
this.set$Value(7, value);
};
/**
* @return {boolean} Whether the preferred_domestic_carrier_code field has a value.
*/
i18n.phonenumbers.PhoneNumber.prototype.hasPreferredDomesticCarrierCode = function() {
return this.has$Value(7);
};
/**
* @return {number} The number of values in the preferred_domestic_carrier_code field.
*/
i18n.phonenumbers.PhoneNumber.prototype.preferredDomesticCarrierCodeCount = function() {
return this.count$Values(7);
};
/**
* Clears the values in the preferred_domestic_carrier_code field.
*/
i18n.phonenumbers.PhoneNumber.prototype.clearPreferredDomesticCarrierCode = function() {
this.clear$Field(7);
};
/**
* Enumeration CountryCodeSource.
* @enum {number}
@ -403,5 +454,10 @@ goog.proto2.Message.set$Metadata(i18n.phonenumbers.PhoneNumber, {
fieldType: goog.proto2.Message.FieldType.ENUM,
defaultValue: i18n.phonenumbers.PhoneNumber.CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN,
type: i18n.phonenumbers.PhoneNumber.CountryCodeSource
},
7: {
name: 'preferred_domestic_carrier_code',
fieldType: goog.proto2.Message.FieldType.STRING,
type: String
}
});

+ 135
- 141
javascript/i18n/phonenumbers/phonenumberutil.js View File

@ -848,8 +848,7 @@ i18n.phonenumbers.PhoneNumberUtil.convertAlphaCharactersInNumber =
* - some geographical numbers have no area codes.
*
* @param {i18n.phonenumbers.PhoneNumber} number the PhoneNumber object for
* which clients want to know the length of the area code in the
* national_number field.
* which clients want to know the length of the area code.
* @return {number} the length of area code of the PhoneNumber object passed in.
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode =
@ -926,8 +925,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfNationalDestinationCode =
// We don't want to alter the proto given to us, but we don't want to
// include the extension when we format it, so we copy it and clear the
// extension here.
copiedProto = new i18n.phonenumbers.PhoneNumber();
copiedProto.mergeFrom(number);
copiedProto = number.clone();
copiedProto.clearExtension();
} else {
copiedProto = number;
@ -1126,8 +1124,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatByPattern =
// replacements for different numbers have the appropriate national
// prefix.
/** type {i18n.phonenumbers.NumberFormat} */
var numFormatCopy = new i18n.phonenumbers.NumberFormat();
numFormatCopy.mergeFrom(numFormat);
var numFormatCopy = numFormat.clone();
/** @type {string} */
var nationalPrefix =
this.getMetadataForRegion(regionCode).getNationalPrefixOrDefault();
@ -1167,9 +1164,17 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatByPattern =
/**
* @param {i18n.phonenumbers.PhoneNumber} number
* @param {string} carrierCode
* @return {string}
* Formats a phone number in national format for dialing using the carrier as
* specified in the carrierCode. The carrierCode will always be used regardless
* of whether the phone number already has a preferred domestic carrier code
* stored. If carrierCode contains an empty string, return the number in
* national format without any carrier code.
*
* @param {i18n.phonenumbers.PhoneNumber} number the phone number to be
* formatted.
* @param {string} carrierCode the carrier selection code to be used.
* @return {string} the formatted phone number in national format for dialing
* using the carrier as specified in the carrierCode.
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.
formatNationalNumberWithCarrierCode = function(number, carrierCode) {
@ -1203,6 +1208,37 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.
};
/**
* Formats a phone number in national format for dialing using the carrier as
* specified in the preferred_domestic_carrier_code field of the PhoneNumber
* object passed in. If that is missing, use the fallbackCarrierCode passed in
* instead. If there is no preferred_domestic_carrier_code, and the
* fallbackCarrierCode contains an empty string, return the number in national
* format without any carrier code.
*
* Use formatNationalNumberWithCarrierCode instead if the carrier code passed in
* should take precedence over the number's preferred_domestic_carrier_code when
* formatting.
*
* @param {i18n.phonenumbers.PhoneNumber} number the phone number to be
* formatted.
* @param {string} fallbackCarrierCode the carrier selection code to be used, if
* none is found in the phone number itself.
* @return {string} the formatted phone number in national format for dialing
* using the number's preferred_domestic_carrier_code, or the
* fallbackCarrierCode passed in if none is found.
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.
formatNationalNumberWithPreferredCarrierCode = function(
number, fallbackCarrierCode) {
return this.formatNationalNumberWithCarrierCode(
number,
number.hasPreferredDomesticCarrierCode() ?
number.getPreferredDomesticCarrierCodeOrDefault() :
fallbackCarrierCode);
};
/**
* Formats a phone number for out-of-country dialing purpose. If no
* countryCallingFrom is supplied, we format the number in its INTERNATIONAL
@ -1425,8 +1461,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatNationalNumber_ =
/**
* Note that carrierCode is optional - if NULL or an empty string, no carrier
* code replacement will take place. Carrier code replacement occurs before
* national prefix replacement.
* code replacement will take place.
*
* @param {string} nationalNumber a string of characters representing a phone
* number.
@ -1456,39 +1491,42 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatAccordingToFormats_ =
.search(numFormat.getLeadingDigitsPattern(size - 1)) == 0) {
/** @type {RegExp} */
var patternToMatch = new RegExp(numFormat.getPattern());
/** @type {string} */
var numberFormatRule = numFormat.getFormatOrDefault();
if (i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_(patternToMatch,
nationalNumber)) {
if (opt_carrierCode != null && opt_carrierCode.length > 0) {
/** @type {string} */
var domesticCarrierCodeFormattingRule =
numFormat.getDomesticCarrierCodeFormattingRuleOrDefault();
if (domesticCarrierCodeFormattingRule.length > 0) {
// Replace the $CC in the formatting rule with the desired carrier
// code.
/** @type {string} */
var carrierCodeFormattingRule = domesticCarrierCodeFormattingRule
.replace(i18n.phonenumbers.PhoneNumberUtil.CC_PATTERN_,
opt_carrierCode);
// Now replace the $FG in the formatting rule with the first group
// and the carrier code combined in the appropriate way.
numberFormatRule = numberFormatRule.replace(
i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_,
carrierCodeFormattingRule);
}
}
/** @type {string} */
var nationalPrefixFormattingRule =
numFormat.getNationalPrefixFormattingRuleOrDefault();
var numberFormatRule = numFormat.getFormatOrDefault();
/** @type {string} */
var domesticCarrierCodeFormattingRule =
numFormat.getDomesticCarrierCodeFormattingRuleOrDefault();
if (numberFormat == i18n.phonenumbers.PhoneNumberFormat.NATIONAL &&
nationalPrefixFormattingRule != null &&
nationalPrefixFormattingRule.length > 0) {
return nationalNumber.replace(patternToMatch, numberFormatRule
.replace(i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_,
nationalPrefixFormattingRule));
} else {
opt_carrierCode != null && opt_carrierCode.length > 0 &&
domesticCarrierCodeFormattingRule.length > 0) {
// Replace the $CC in the formatting rule with the desired carrier
// code.
/** @type {string} */
var carrierCodeFormattingRule = domesticCarrierCodeFormattingRule
.replace(i18n.phonenumbers.PhoneNumberUtil.CC_PATTERN_,
opt_carrierCode);
// Now replace the $FG in the formatting rule with the first group
// and the carrier code combined in the appropriate way.
numberFormatRule = numberFormatRule.replace(
i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_,
carrierCodeFormattingRule);
return nationalNumber.replace(patternToMatch, numberFormatRule);
} else {
// Use the national prefix formatting rule instead.
/** @type {string} */
var nationalPrefixFormattingRule =
numFormat.getNationalPrefixFormattingRuleOrDefault();
if (numberFormat == i18n.phonenumbers.PhoneNumberFormat.NATIONAL &&
nationalPrefixFormattingRule != null &&
nationalPrefixFormattingRule.length > 0) {
return nationalNumber.replace(patternToMatch, numberFormatRule
.replace(i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_,
nationalPrefixFormattingRule));
} else {
return nationalNumber.replace(patternToMatch, numberFormatRule);
}
}
}
}
@ -2145,8 +2183,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.truncateTooLongNumber =
return true;
}
/** @type {i18n.phonenumbers.PhoneNumber} */
var numberCopy = new i18n.phonenumbers.PhoneNumber();
numberCopy.mergeFrom(number);
var numberCopy = number.clone();
/** @type {number} */
var nationalNumber = number.getNationalNumberOrDefault();
do {
@ -2223,7 +2260,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.extractCountryCode =
* the national significant number in, in the case that a country code was
* extracted. The number is appended to any existing contents. If no country
* code was extracted, this will be left unchanged.
* @param {boolean} storeCountryCodeSource true if the country_code_source field
* @param {boolean} keepRawInput true if the country_code_source and
* preferred_carrier_code fields of phoneNumber should be populated.
* of phoneNumber should be populated.
* @param {i18n.phonenumbers.PhoneNumber} phoneNumber the PhoneNumber object
* that needs to be populated with country code and country code source.
@ -2234,7 +2272,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.extractCountryCode =
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode =
function(number, defaultRegionMetadata, nationalNumber,
storeCountryCodeSource, phoneNumber) {
keepRawInput, phoneNumber) {
if (number.length == 0) {
return 0;
@ -2254,7 +2292,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode =
/** @type {i18n.phonenumbers.PhoneNumber.CountryCodeSource} */
var countryCodeSource = this.maybeStripInternationalPrefixAndNormalize(
fullNumber, possibleCountryIddPrefix);
if (storeCountryCodeSource) {
if (keepRawInput) {
phoneNumber.setCountryCodeSource(countryCodeSource);
}
if (countryCodeSource !=
@ -2295,10 +2333,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode =
/** @type {!goog.string.StringBuffer} */
var potentialNationalNumber = new goog.string.StringBuffer(
normalizedNumber.substring(defaultCountryCodeString.length));
this.maybeStripNationalPrefix(potentialNationalNumber,
defaultRegionMetadata.getNationalPrefixForParsing(),
defaultRegionMetadata.getNationalPrefixTransformRule(),
validNumberPattern);
this.maybeStripNationalPrefixAndCarrierCode(
potentialNationalNumber, defaultRegionMetadata);
/** @type {string} */
var potentialNationalNumberStr = potentialNationalNumber.toString();
/** @type {Array.<string> } */
@ -2315,7 +2351,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode =
possibleNumberMatchedLength > 0 &&
possibleNumberMatchedLength != potentialNationalNumberStr.length) {
nationalNumber.append(potentialNationalNumberStr);
if (storeCountryCodeSource) {
if (keepRawInput) {
phoneNumber.setCountryCodeSource(
i18n.phonenumbers.PhoneNumber.CountryCodeSource
.FROM_NUMBER_WITHOUT_PLUS_SIGN);
@ -2427,53 +2463,64 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.
*
* @param {!goog.string.StringBuffer} number the normalized telephone number
* that we wish to strip any national dialing prefix from.
* @param {?string} possibleNationalPrefix a regex that represents the national
* direct dialing prefix from the country we think this number may be dialed
* in.
* @param {?string} transformRule the string that specifies how number should be
* transformed according to the regex specified in possibleNationalPrefix.
* @param {RegExp} nationalNumberRule a regular expression that specifies what a
* valid phonenumber from this region should look like after any national
* prefix was stripped or transformed.
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.maybeStripNationalPrefix =
function(number, possibleNationalPrefix, transformRule,
nationalNumberRule) {
* @param {i18n.phonenumbers.PhoneMetadata} metadata the metadata for the
* country that we think this number is from.
* @return {string} the carrier code extracted if it is present, otherwise
* return an empty string.
*/
i18n.phonenumbers.PhoneNumberUtil.prototype.
maybeStripNationalPrefixAndCarrierCode = function(number, metadata) {
/** @type {string} */
var carrierCode = '';
/** @type {string} */
var numberStr = number.toString();
/** @type {number} */
var numberLength = numberStr.length;
/** @type {?string} */
var possibleNationalPrefix = metadata.getNationalPrefixForParsing();
if (numberLength == 0 || possibleNationalPrefix == null ||
possibleNationalPrefix.length == 0) {
// Early return for numbers of zero length.
return;
return carrierCode;
}
// Attempt to parse the first digits as a national prefix.
/** @type {RegExp} */
var re = new RegExp('^' + possibleNationalPrefix);
var prefixPattern = new RegExp('^' + possibleNationalPrefix);
/** @type {Array.<string>} */
var m = re.exec(numberStr);
if (m) {
var prefixMatcher = prefixPattern.exec(numberStr);
if (prefixMatcher) {
/** @type {RegExp} */
var nationalNumberRule = new RegExp(
metadata.getGeneralDesc().getNationalNumberPattern());
// prefixMatcher[numOfGroups] == null implies nothing was captured by the
// capturing groups in possibleNationalPrefix; therefore, no transformation
// is necessary, and we just remove the national prefix.
/** @type {number} */
var numOfGroups = prefixMatcher.length - 1;
/** @type {?string} */
var transformRule = metadata.getNationalPrefixTransformRule();
/** @type {string} */
var transformedNumber;
// m[1] == null implies nothing was captured by the capturing groups in
// possibleNationalPrefix; therefore, no transformation is necessary, and
// we just remove the national prefix.
if (transformRule == null || transformRule.length == 0 || m[1] == null ||
m[1].length == 0) {
transformedNumber = numberStr.substring(m[0].length);
if (transformRule == null || transformRule.length == 0 ||
prefixMatcher[numOfGroups] == null ||
prefixMatcher[numOfGroups].length == 0) {
transformedNumber = numberStr.substring(prefixMatcher[0].length);
} else {
transformedNumber = numberStr.replace(re, transformRule);
transformedNumber = numberStr.replace(prefixPattern, transformRule);
}
// Check that the resultant number is viable. If not, return.
if (!i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_(nationalNumberRule,
transformedNumber)) {
return;
return carrierCode;
}
if (numOfGroups > 0) {
carrierCode = prefixMatcher[1];
}
number.clear();
number.append(transformedNumber);
}
return carrierCode;
};
@ -2690,12 +2737,12 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ =
}
if (countryMetadata != null) {
/** @type {RegExp} */
var validNumberPattern =
new RegExp(countryMetadata.getGeneralDesc().getNationalNumberPattern());
this.maybeStripNationalPrefix(normalizedNationalNumber, countryMetadata
.getNationalPrefixForParsing(), countryMetadata
.getNationalPrefixTransformRule(), validNumberPattern);
/** @type {string} */
var carrierCode = this.maybeStripNationalPrefixAndCarrierCode(
normalizedNationalNumber, countryMetadata);
if (keepRawInput) {
phoneNumber.setPreferredDomesticCarrierCode(carrierCode);
}
}
/** @type {string} */
var normalizedNationalNumberStr = normalizedNationalNumber.toString();
@ -2794,8 +2841,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberMatch =
}
}
} else {
firstNumber = new i18n.phonenumbers.PhoneNumber();
firstNumber.mergeFrom(firstNumberIn);
firstNumber = firstNumberIn.clone();
}
if (typeof secondNumberIn == 'string') {
try {
@ -2809,16 +2855,17 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberMatch =
return this.isNumberMatch(secondNumberIn, firstNumber);
}
} else {
secondNumber = new i18n.phonenumbers.PhoneNumber();
secondNumber.mergeFrom(secondNumberIn);
secondNumber = secondNumberIn.clone();
}
// First clear raw_input and country_code_source field and any empty-string
// extensions so that
// we can use the PhoneNumber.exactlySameAs() method.
// First clear raw_input, country_code_source and
// preferred_domestic_carrier_code fields and any empty-string extensions so
// that we can use the proto-buffer equality method.
firstNumber.clearRawInput();
firstNumber.clearCountryCodeSource();
firstNumber.clearPreferredDomesticCarrierCode();
secondNumber.clearRawInput();
secondNumber.clearCountryCodeSource();
secondNumber.clearPreferredDomesticCarrierCode();
if (firstNumber.hasExtension() && firstNumber.getExtension().length == 0) {
firstNumber.clearExtension();
}
@ -2837,7 +2884,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberMatch =
var secondNumberCountryCode = secondNumber.getCountryCodeOrDefault();
// Both had country code specified.
if (firstNumberCountryCode != 0 && secondNumberCountryCode != 0) {
if (firstNumber.exactlySameAs(secondNumber)) {
if (firstNumber.equals(secondNumber)) {
return i18n.phonenumbers.PhoneNumberUtil.MatchType.EXACT_MATCH;
} else if (firstNumberCountryCode == secondNumberCountryCode &&
this.isNationalNumberSuffixOfTheOther_(firstNumber, secondNumber)) {
@ -2855,7 +2902,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberMatch =
firstNumber.setCountryCode(0);
secondNumber.setCountryCode(0);
// If all else was the same, then this is an NSN_MATCH.
if (firstNumber.exactlySameAs(secondNumber)) {
if (firstNumber.equals(secondNumber)) {
return i18n.phonenumbers.PhoneNumberUtil.MatchType.NSN_MATCH;
}
if (this.isNationalNumberSuffixOfTheOther_(firstNumber, secondNumber)) {
@ -2937,56 +2984,3 @@ i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_ = function(regex, str) {
}
return false;
};
/**
* @param {i18n.phonenumbers.PhoneNumber} other
* @return {boolean}
*/
i18n.phonenumbers.PhoneNumber.prototype.exactlySameAs = function(other) {
return other != null &&
this.getCountryCode() == other.getCountryCode() &&
this.getNationalNumber() == other.getNationalNumber() &&
this.getExtension() == other.getExtension() &&
this.getItalianLeadingZero() == other.getItalianLeadingZero() &&
this.getRawInput() == other.getRawInput() &&
this.getCountryCodeSource() == other.getCountryCodeSource();
};
/**
* @param {i18n.phonenumbers.PhoneNumberDesc} other
* @return {boolean}
*/
i18n.phonenumbers.PhoneNumberDesc.prototype.exactlySameAs = function(other) {
return other != null &&
this.getNationalNumberPattern() == other.getNationalNumberPattern() &&
this.getPossibleNumberPattern() == other.getPossibleNumberPattern() &&
this.getExampleNumber() == other.getExampleNumber();
};
/**
* @param {i18n.phonenumbers.PhoneNumber} other
* @return {i18n.phonenumbers.PhoneNumber}
* @suppress {accessControls}
*/
i18n.phonenumbers.PhoneNumber.prototype.mergeFrom = function(other) {
if (other) {
this.values_ = goog.cloneObject(other.values_);
}
return this;
};
/**
* @param {i18n.phonenumbers.NumberFormat} other
* @return {i18n.phonenumbers.NumberFormat}
* @suppress {accessControls}
*/
i18n.phonenumbers.NumberFormat.prototype.mergeFrom = function(other) {
if (other) {
this.values_ = goog.cloneObject(other.values_);
}
return this;
};

+ 603
- 753
javascript/i18n/phonenumbers/phonenumberutil_test.js
File diff suppressed because it is too large
View File


Loading…
Cancel
Save