phonelib 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/extended_data.dat +0 -0
- data/data/phone_data.dat +0 -0
- data/lib/phonelib/data_importer.rb +1 -1
- data/lib/phonelib/phone_analyzer.rb +32 -12
- data/lib/phonelib/phone_analyzer_helper.rb +21 -2
- data/lib/phonelib/phone_formatter.rb +13 -0
- data/lib/phonelib/version.rb +1 -1
- data/lib/validators/phone_validator.rb +1 -1
- metadata +2 -1981
- data/data/libphonenumber/AUTHORS +0 -4
- data/data/libphonenumber/CONTRIBUTING.md +0 -47
- data/data/libphonenumber/CONTRIBUTORS +0 -69
- data/data/libphonenumber/FALSEHOODS.md +0 -237
- data/data/libphonenumber/FAQ.md +0 -190
- data/data/libphonenumber/LICENSE +0 -176
- data/data/libphonenumber/LICENSE.Chromium +0 -37
- data/data/libphonenumber/README.md +0 -116
- data/data/libphonenumber/codereview.settings +0 -4
- data/data/libphonenumber/cpp/CMakeLists.txt +0 -592
- data/data/libphonenumber/cpp/LICENSE +0 -13
- data/data/libphonenumber/cpp/README +0 -344
- data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.cc +0 -907
- data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.h +0 -29
- data/data/libphonenumber/cpp/src/phonenumbers/asyoutypeformatter.cc +0 -781
- data/data/libphonenumber/cpp/src/phonenumbers/asyoutypeformatter.h +0 -243
- data/data/libphonenumber/cpp/src/phonenumbers/base/basictypes.h +0 -263
- data/data/libphonenumber/cpp/src/phonenumbers/base/logging.h +0 -45
- data/data/libphonenumber/cpp/src/phonenumbers/base/memory/scoped_ptr.h +0 -450
- data/data/libphonenumber/cpp/src/phonenumbers/base/memory/singleton.h +0 -95
- data/data/libphonenumber/cpp/src/phonenumbers/base/memory/singleton_posix.h +0 -53
- data/data/libphonenumber/cpp/src/phonenumbers/base/strings/string_piece.cc +0 -221
- data/data/libphonenumber/cpp/src/phonenumbers/base/strings/string_piece.h +0 -194
- data/data/libphonenumber/cpp/src/phonenumbers/base/synchronization/lock.h +0 -91
- data/data/libphonenumber/cpp/src/phonenumbers/base/synchronization/lock_posix.h +0 -63
- data/data/libphonenumber/cpp/src/phonenumbers/base/template_util.h +0 -108
- data/data/libphonenumber/cpp/src/phonenumbers/base/thread_checker.h +0 -70
- data/data/libphonenumber/cpp/src/phonenumbers/callback.h +0 -88
- data/data/libphonenumber/cpp/src/phonenumbers/default_logger.cc +0 -57
- data/data/libphonenumber/cpp/src/phonenumbers/default_logger.h +0 -105
- data/data/libphonenumber/cpp/src/phonenumbers/encoding_utils.h +0 -51
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.cc +0 -94
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.h +0 -75
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/default_map_storage.cc +0 -65
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/default_map_storage.h +0 -76
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/geocoding_data.h +0 -77
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/mapping_file_provider.cc +0 -175
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/mapping_file_provider.h +0 -75
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.cc +0 -226
- data/data/libphonenumber/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.h +0 -165
- data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +0 -11547
- data/data/libphonenumber/cpp/src/phonenumbers/logger.cc +0 -27
- data/data/libphonenumber/cpp/src/phonenumbers/logger.h +0 -103
- data/data/libphonenumber/cpp/src/phonenumbers/matcher_api.h +0 -54
- data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +0 -12478
- data/data/libphonenumber/cpp/src/phonenumbers/metadata.h +0 -29
- data/data/libphonenumber/cpp/src/phonenumbers/normalize_utf8.h +0 -50
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumber.cc +0 -87
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumber.h +0 -40
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatch.cc +0 -91
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatch.h +0 -125
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatcher.cc +0 -907
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatcher.h +0 -201
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.cc +0 -2926
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.h +0 -868
- data/data/libphonenumber/cpp/src/phonenumbers/regex_based_matcher.cc +0 -68
- data/data/libphonenumber/cpp/src/phonenumbers/regex_based_matcher.h +0 -61
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter.h +0 -168
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_icu.cc +0 -237
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_icu.h +0 -41
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_re2.cc +0 -155
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_re2.h +0 -40
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_cache.cc +0 -60
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_cache.h +0 -77
- data/data/libphonenumber/cpp/src/phonenumbers/regexp_factory.h +0 -44
- data/data/libphonenumber/cpp/src/phonenumbers/region_code.h +0 -40
- data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +0 -3032
- data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.h +0 -29
- data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.cc +0 -427
- data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.h +0 -240
- data/data/libphonenumber/cpp/src/phonenumbers/stl_util.h +0 -51
- data/data/libphonenumber/cpp/src/phonenumbers/string_byte_sink.cc +0 -33
- data/data/libphonenumber/cpp/src/phonenumbers/string_byte_sink.h +0 -40
- data/data/libphonenumber/cpp/src/phonenumbers/stringutil.cc +0 -448
- data/data/libphonenumber/cpp/src/phonenumbers/stringutil.h +0 -176
- data/data/libphonenumber/cpp/src/phonenumbers/test_metadata.cc +0 -885
- data/data/libphonenumber/cpp/src/phonenumbers/unicodestring.cc +0 -114
- data/data/libphonenumber/cpp/src/phonenumbers/unicodestring.h +0 -133
- data/data/libphonenumber/cpp/src/phonenumbers/utf/README +0 -1
- data/data/libphonenumber/cpp/src/phonenumbers/utf/rune.c +0 -358
- data/data/libphonenumber/cpp/src/phonenumbers/utf/stringpiece.h +0 -23
- data/data/libphonenumber/cpp/src/phonenumbers/utf/stringprintf.h +0 -22
- data/data/libphonenumber/cpp/src/phonenumbers/utf/unicodetext.cc +0 -520
- data/data/libphonenumber/cpp/src/phonenumbers/utf/unicodetext.h +0 -461
- data/data/libphonenumber/cpp/src/phonenumbers/utf/unilib.cc +0 -68
- data/data/libphonenumber/cpp/src/phonenumbers/utf/unilib.h +0 -99
- data/data/libphonenumber/cpp/src/phonenumbers/utf/utf.h +0 -240
- data/data/libphonenumber/cpp/src/phonenumbers/utf/utfdef.h +0 -27
- data/data/libphonenumber/cpp/test/phonenumbers/asyoutypeformatter_test.cc +0 -1237
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/area_code_map_test.cc +0 -201
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_data_test.cc +0 -176
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_test_data.h +0 -50
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_test_program.cc +0 -44
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/mapping_file_provider_test.cc +0 -91
- data/data/libphonenumber/cpp/test/phonenumbers/geocoding/phonenumber_offline_geocoder_test.cc +0 -214
- data/data/libphonenumber/cpp/test/phonenumbers/logger_test.cc +0 -172
- data/data/libphonenumber/cpp/test/phonenumbers/phonenumbermatch_test.cc +0 -92
- data/data/libphonenumber/cpp/test/phonenumbers/phonenumbermatcher_test.cc +0 -1234
- data/data/libphonenumber/cpp/test/phonenumbers/phonenumberutil_test.cc +0 -3992
- data/data/libphonenumber/cpp/test/phonenumbers/regexp_adapter_test.cc +0 -322
- data/data/libphonenumber/cpp/test/phonenumbers/regexp_cache_test.cc +0 -60
- data/data/libphonenumber/cpp/test/phonenumbers/run_tests.cc +0 -21
- data/data/libphonenumber/cpp/test/phonenumbers/shortnumberinfo_test.cc +0 -483
- data/data/libphonenumber/cpp/test/phonenumbers/stringutil_test.cc +0 -306
- data/data/libphonenumber/cpp/test/phonenumbers/test_util.cc +0 -60
- data/data/libphonenumber/cpp/test/phonenumbers/test_util.h +0 -199
- data/data/libphonenumber/cpp/test/phonenumbers/unicodestring_test.cc +0 -236
- data/data/libphonenumber/cpp/test/phonenumbers/utf/unicodetext_test.cc +0 -45
- data/data/libphonenumber/debian/README.source +0 -21
- data/data/libphonenumber/debian/changelog +0 -5
- data/data/libphonenumber/debian/compat +0 -1
- data/data/libphonenumber/debian/control +0 -75
- data/data/libphonenumber/debian/copyright +0 -74
- data/data/libphonenumber/debian/libphonenumber7-dev.install +0 -3
- data/data/libphonenumber/debian/libphonenumber7-java.jlibs +0 -1
- data/data/libphonenumber/debian/libphonenumber7-java.poms +0 -39
- data/data/libphonenumber/debian/libphonenumber7.install +0 -1
- data/data/libphonenumber/debian/maven.cleanIgnoreRules +0 -17
- data/data/libphonenumber/debian/maven.ignoreRules +0 -23
- data/data/libphonenumber/debian/maven.properties +0 -4
- data/data/libphonenumber/debian/maven.publishedRules +0 -19
- data/data/libphonenumber/debian/maven.rules +0 -31
- data/data/libphonenumber/debian/patches/0003-maven-exclude-demo.patch +0 -13
- data/data/libphonenumber/debian/patches/series +0 -1
- data/data/libphonenumber/debian/rules +0 -89
- data/data/libphonenumber/debian/source/format +0 -1
- data/data/libphonenumber/debian/watch +0 -3
- data/data/libphonenumber/java/build.xml +0 -307
- data/data/libphonenumber/java/carrier/pom.xml +0 -68
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/PhoneNumberToCarrierMapper.java +0 -124
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1242_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1246_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1264_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1441_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1473_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1649_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1671_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1684_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1758_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1767_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1784_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1787_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1809_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1868_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1869_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1876_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1939_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/20_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/211_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/212_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/213_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/216_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/220_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/221_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/222_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/223_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/224_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/225_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/227_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/228_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/229_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/232_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/233_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/235_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/236_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/237_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/238_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/239_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/240_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/241_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/242_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/243_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/244_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/245_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/248_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/249_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/250_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/251_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/252_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/253_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/254_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/257_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/258_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/260_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/261_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/263_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/265_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/267_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/268_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/27_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/297_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/298_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/299_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/30_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/31_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/32_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/33_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/350_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/351_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/352_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/353_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/354_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/355_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/356_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/357_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/358_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/359_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/36_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/370_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/372_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/373_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_ru +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_be +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_ru +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/376_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/381_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/382_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/385_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/386_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/387_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/389_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/39_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/40_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/41_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/420_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/421_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/43_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/45_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/47_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/48_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/49_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/501_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/505_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/506_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/507_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/509_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/51_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/53_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/54_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/55_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/56_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/57_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/58_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/591_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/592_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/595_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/597_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/598_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/599_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/60_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/61_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/62_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/63_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/64_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/65_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/670_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/673_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/675_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/676_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/677_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/678_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/679_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/685_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/686_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/689_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/7_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/84_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh_Hant +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/853_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/855_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/856_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/86_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/86_zh +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/86_zh_Hant +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/880_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/90_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/92_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/93_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/93_fa +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/94_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/95_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/960_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/961_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/962_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/963_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/964_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/965_ar +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/965_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/966_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/967_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/968_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/970_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/971_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/972_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/973_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/974_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/975_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/976_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/977_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_fa +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/992_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/993_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/994_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/995_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/996_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/998_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config +0 -0
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/PhoneNumberToCarrierMapperTest.java +0 -121
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/1650_en +0 -0
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/244_en +0 -0
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/44_en +0 -0
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/44_sv +0 -0
- data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/config +0 -0
- data/data/libphonenumber/java/demo/README +0 -16
- data/data/libphonenumber/java/demo/build.xml +0 -59
- data/data/libphonenumber/java/demo/pom.xml +0 -112
- data/data/libphonenumber/java/demo/src/com/google/phonenumbers/PhoneNumberParserServlet.java +0 -434
- data/data/libphonenumber/java/demo/war/WEB-INF/appengine-web.xml +0 -11
- data/data/libphonenumber/java/demo/war/WEB-INF/lib/commons-fileupload-1.2.1.jar +0 -0
- data/data/libphonenumber/java/demo/war/WEB-INF/lib/commons-io-1.4.jar +0 -0
- data/data/libphonenumber/java/demo/war/WEB-INF/lib/commons-lang-2.6.jar +0 -0
- data/data/libphonenumber/java/demo/war/WEB-INF/logging.properties +0 -13
- data/data/libphonenumber/java/demo/war/WEB-INF/web.xml +0 -18
- data/data/libphonenumber/java/demo/war/favicon.ico +0 -0
- data/data/libphonenumber/java/demo/war/phonenumberparser.jsp +0 -39
- data/data/libphonenumber/java/demo/war/stylesheets/main.css +0 -26
- data/data/libphonenumber/java/geocoder/pom.xml +0 -76
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/PhoneNumberToTimeZonesMapper.java +0 -191
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java +0 -217
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1201_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1202_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1203_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1204_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1205_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1206_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1207_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1208_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1209_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1210_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1212_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1213_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1214_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1215_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1216_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1217_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1218_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1219_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1220_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1224_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1225_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1226_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1228_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1229_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1231_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1234_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1236_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1239_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1240_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1242_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1248_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1250_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1251_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1252_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1253_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1254_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1256_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1260_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1262_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1267_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1269_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1270_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1272_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1276_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1281_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1289_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1301_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1302_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1303_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1304_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1305_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1306_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1307_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1308_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1309_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1310_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1312_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1313_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1314_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1315_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1316_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1317_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1318_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1319_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1320_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1321_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1323_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1325_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1330_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1331_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1334_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1336_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1337_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1339_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1345_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1346_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1347_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1351_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1352_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1360_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1361_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1364_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1365_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1380_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1385_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1386_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1401_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1402_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1403_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1404_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1405_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1406_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1407_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1408_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1409_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1410_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1412_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1413_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1414_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1415_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1416_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1417_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1418_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1419_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1423_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1424_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1425_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1430_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1431_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1432_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1434_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1435_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1437_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1438_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1440_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1441_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1443_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1450_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1469_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1478_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1479_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1480_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1484_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1501_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1502_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1503_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1504_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1505_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1506_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1507_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1508_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1509_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1510_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1512_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1513_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1514_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1515_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1516_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1517_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1518_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1519_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1520_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1530_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1540_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1541_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1548_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1551_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1559_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1561_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1562_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1563_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1567_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1570_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1571_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1573_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1574_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1575_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1580_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1585_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1586_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1587_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1601_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1602_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1603_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1604_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1605_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1606_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1607_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1608_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1609_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1610_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1612_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1613_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1614_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1615_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1616_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1617_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1618_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1619_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1620_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1623_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1626_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1628_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1629_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1630_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1631_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1636_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1639_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1641_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1646_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1647_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1649_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1650_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1651_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1657_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1660_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1661_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1662_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1667_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1669_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1671_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1678_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1682_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1701_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1702_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1703_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1704_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1705_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1706_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1707_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1708_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1709_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1712_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1713_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1714_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1715_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1716_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1717_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1718_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1719_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1720_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1724_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1725_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1727_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1731_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1732_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1734_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1737_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1740_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1743_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1747_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1754_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1757_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1760_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1763_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1765_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1769_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1770_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1772_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1773_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1774_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1775_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1778_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1779_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1780_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1781_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1782_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1785_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1786_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1801_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1802_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1803_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1804_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1805_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1806_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1807_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1808_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1809_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1810_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1812_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1813_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1814_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1815_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1816_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1817_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1818_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1819_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1825_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1828_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1830_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1831_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1832_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1843_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1845_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1847_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1848_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1850_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1854_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1856_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1857_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1858_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1859_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1860_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1862_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1863_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1864_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1865_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1867_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1870_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1872_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1873_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1876_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1878_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1901_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1902_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1903_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1904_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1905_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1906_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1907_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1908_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1909_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1910_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1912_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1913_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1914_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1915_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1916_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1917_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1918_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1919_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1920_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1925_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1928_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1929_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1930_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1931_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1934_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1936_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1937_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1938_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1940_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1941_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1947_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1949_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1951_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1952_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1954_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1956_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1959_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1970_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1971_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1972_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1973_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1978_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1979_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1980_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1984_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1985_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1989_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/20_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/212_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/212_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/213_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/216_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/220_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/221_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/222_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/222_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/223_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/224_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/225_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/226_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/229_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/229_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/232_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/233_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/234_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/237_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/238_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/239_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/239_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/241_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/242_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/243_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/243_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/244_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/244_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/247_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/249_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/251_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/252_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/254_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/256_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/257_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/258_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/258_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/260_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/261_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/263_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/264_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/266_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/267_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/268_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/269_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/27_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/290_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/290_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/299_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/30_el +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/30_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/31_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/31_nl +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_de +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_nl +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/33_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/33_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/34_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/34_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/351_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/351_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_de +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/353_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/354_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/355_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_fi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_se +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/359_bg +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/359_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/36_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/36_hu +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/370_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/371_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/372_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_ro +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_ru +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_am +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_ru +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_be +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_ru +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/381_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/381_sr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/389_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/39_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/39_it +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/40_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/40_ro +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_de +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_it +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/420_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/421_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/43_de +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/43_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/44_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/46_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/46_sv +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/47_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/48_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/48_pl +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/49_de +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/49_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/501_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/504_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/51_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/53_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/54_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/54_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/55_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/55_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/57_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/58_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/58_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/592_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/599_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/62_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/62_id +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/64_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/66_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/66_th +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/686_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/688_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_ru +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/81_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/81_ja +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ar +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_bg +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ca +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_cs +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_el +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_fi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_fr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hu +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_iw +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ja +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ko +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_tr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_zh +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_zh_Hant +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/84_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/84_vi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_zh +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_zh +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_zh_Hant +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/90_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/90_tr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/91_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_fa +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/94_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/95_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/962_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/966_ar +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/966_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/968_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/972_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/975_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_fa +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/992_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/994_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/timezones/data/map_data +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/PhoneNumberToTimeZonesMapperTest.java +0 -136
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java +0 -170
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1201_de +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1201_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1212_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1617_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1650_de +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1650_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1989_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/54_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/82_en +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/82_ko +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/config +0 -0
- data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/timezones/testing_data/map_data +0 -0
- data/data/libphonenumber/java/internal/prefixmapper/pom.xml +0 -58
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/DefaultMapStorage.java +0 -94
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/FlyweightMapStorage.java +0 -263
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/MappingFileProvider.java +0 -229
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMap.java +0 -216
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMapStorageStrategy.java +0 -108
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PrefixFileReader.java +0 -143
- data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMap.java +0 -126
- data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/FlyweightMapStorageTest.java +0 -107
- data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/MappingFileProviderTest.java +0 -93
- data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMapTest.java +0 -193
- data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PrefixFileReaderTest.java +0 -75
- data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMapTest.java +0 -176
- data/data/libphonenumber/java/lib/junit-4.8.1.jar +0 -0
- data/data/libphonenumber/java/lib/protobuf-javanano-3.0.0-alpha-7.jar +0 -0
- data/data/libphonenumber/java/lib/protobuf-javanano-readme.md +0 -20
- data/data/libphonenumber/java/libphonenumber/pom.xml +0 -64
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java +0 -79
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java +0 -664
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java +0 -938
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataLoader.java +0 -35
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataManager.java +0 -183
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataSource.java +0 -38
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +0 -133
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/NumberParseException.java +0 -62
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatch.java +0 -123
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java +0 -727
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +0 -3312
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/Phonenumber.java +0 -285
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/RegexCache.java +0 -78
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java +0 -608
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java +0 -274
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/SingleFileMetadataSourceImpl.java +0 -122
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_255 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_27 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_30 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_31 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_34 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_350 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_351 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_352 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_358 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_359 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_36 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_372 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_373 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_385 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_43 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_44 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_505 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_506 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_54 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_55 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_58 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_61 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_62 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_66 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_675 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_676 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_679 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_7 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_81 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_84 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_855 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_90 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_91 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_94 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_95 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_971 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_972 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_995 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ER +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/internal/MatcherApi.java +0 -38
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/internal/RegexBasedMatcher.java +0 -52
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/nano/Phonemetadata.java +0 -1040
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java +0 -1173
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java +0 -146
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ExampleNumbersTest.java +0 -274
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MetadataManagerTest.java +0 -51
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +0 -67
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberMatchTest.java +0 -70
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberMatcherTest.java +0 -1090
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +0 -2591
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhonenumberTest.java +0 -112
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/RegexCacheTest.java +0 -55
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/RegionCode.java +0 -61
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ShortNumberInfoTest.java +0 -355
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/SingleFileMetadataSourceImplTest.java +0 -40
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/TestMetadataTestCase.java +0 -47
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800 +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_979 +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AE +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BB +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BR +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BY +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CA +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CN +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_FR +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GG +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_HU +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SE +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT +0 -0
- data/data/libphonenumber/java/pending_code_changes.txt +0 -1
- data/data/libphonenumber/java/pom.xml +0 -185
- data/data/libphonenumber/java/release_notes.txt +0 -1306
- data/data/libphonenumber/javadoc/allclasses-frame.html +0 -49
- data/data/libphonenumber/javadoc/allclasses-noframe.html +0 -49
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/AsYouTypeFormatter.html +0 -302
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/NumberParseException.ErrorType.html +0 -369
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/NumberParseException.html +0 -311
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberMatch.html +0 -378
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.Leniency.html +0 -330
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.MatchType.html +0 -373
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.PhoneNumberFormat.html +0 -365
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.PhoneNumberType.html +0 -469
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.ValidationResult.html +0 -357
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.html +0 -1405
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-frame.html +0 -68
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-summary.html +0 -211
- data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-tree.html +0 -161
- data/data/libphonenumber/javadoc/constant-values.html +0 -142
- data/data/libphonenumber/javadoc/deprecated-list.html +0 -142
- data/data/libphonenumber/javadoc/help-doc.html +0 -209
- data/data/libphonenumber/javadoc/index-all.html +0 -413
- data/data/libphonenumber/javadoc/index.html +0 -36
- data/data/libphonenumber/javadoc/overview-tree.html +0 -163
- data/data/libphonenumber/javadoc/package-list +0 -1
- data/data/libphonenumber/javadoc/resources/inherit.gif +0 -0
- data/data/libphonenumber/javadoc/serialized-form.html +0 -184
- data/data/libphonenumber/javadoc/stylesheet.css +0 -29
- data/data/libphonenumber/javascript/README.md +0 -86
- data/data/libphonenumber/javascript/build.xml +0 -137
- data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter.js +0 -1113
- data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter_test.html +0 -38
- data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter_test.js +0 -1207
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.html +0 -53
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +0 -459
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo.html +0 -62
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo.js +0 -161
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +0 -5234
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatafortesting.js +0 -632
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +0 -5234
- data/data/libphonenumber/javascript/i18n/phonenumbers/phonemetadata.pb.js +0 -2443
- data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumber.pb.js +0 -536
- data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil.js +0 -4223
- data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil_test.html +0 -37
- data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil_test.js +0 -3330
- data/data/libphonenumber/javascript/i18n/phonenumbers/regioncodefortesting.js +0 -66
- data/data/libphonenumber/pom.xml +0 -26
- data/data/libphonenumber/resources/PhoneNumberAlternateFormats.xml +0 -1869
- data/data/libphonenumber/resources/PhoneNumberMetadata.xml +0 -25723
- data/data/libphonenumber/resources/PhoneNumberMetadataForTesting.xml +0 -973
- data/data/libphonenumber/resources/ShortNumberMetadata.xml +0 -9837
- data/data/libphonenumber/resources/carrier/README +0 -2
- data/data/libphonenumber/resources/carrier/ar/965.txt +0 -17
- data/data/libphonenumber/resources/carrier/be/375.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/1.txt +0 -479
- data/data/libphonenumber/resources/carrier/en/20.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/211.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/212.txt +0 -124
- data/data/libphonenumber/resources/carrier/en/213.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/216.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/220.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/221.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/222.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/223.txt +0 -31
- data/data/libphonenumber/resources/carrier/en/224.txt +0 -21
- data/data/libphonenumber/resources/carrier/en/225.txt +0 -56
- data/data/libphonenumber/resources/carrier/en/226.txt +0 -36
- data/data/libphonenumber/resources/carrier/en/227.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/228.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/229.txt +0 -29
- data/data/libphonenumber/resources/carrier/en/230.txt +0 -63
- data/data/libphonenumber/resources/carrier/en/231.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/232.txt +0 -31
- data/data/libphonenumber/resources/carrier/en/233.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/234.txt +0 -257
- data/data/libphonenumber/resources/carrier/en/235.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/236.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/237.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/238.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/239.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/240.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/241.txt +0 -35
- data/data/libphonenumber/resources/carrier/en/242.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/243.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/244.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/245.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/248.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/249.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/250.txt +0 -15
- data/data/libphonenumber/resources/carrier/en/251.txt +0 -21
- data/data/libphonenumber/resources/carrier/en/252.txt +0 -34
- data/data/libphonenumber/resources/carrier/en/253.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/254.txt +0 -63
- data/data/libphonenumber/resources/carrier/en/255.txt +0 -29
- data/data/libphonenumber/resources/carrier/en/256.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/257.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/258.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/260.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/261.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/263.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/265.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/267.txt +0 -57
- data/data/libphonenumber/resources/carrier/en/268.txt +0 -15
- data/data/libphonenumber/resources/carrier/en/27.txt +0 -70
- data/data/libphonenumber/resources/carrier/en/297.txt +0 -29
- data/data/libphonenumber/resources/carrier/en/298.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/299.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/30.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/31.txt +0 -65
- data/data/libphonenumber/resources/carrier/en/32.txt +0 -36
- data/data/libphonenumber/resources/carrier/en/33.txt +0 -72
- data/data/libphonenumber/resources/carrier/en/350.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/351.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/352.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/353.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/354.txt +0 -55
- data/data/libphonenumber/resources/carrier/en/355.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/356.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/357.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/358.txt +0 -44
- data/data/libphonenumber/resources/carrier/en/359.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/36.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/370.txt +0 -50
- data/data/libphonenumber/resources/carrier/en/372.txt +0 -30
- data/data/libphonenumber/resources/carrier/en/373.txt +0 -44
- data/data/libphonenumber/resources/carrier/en/374.txt +0 -29
- data/data/libphonenumber/resources/carrier/en/375.txt +0 -28
- data/data/libphonenumber/resources/carrier/en/376.txt +0 -15
- data/data/libphonenumber/resources/carrier/en/380.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/381.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/382.txt +0 -29
- data/data/libphonenumber/resources/carrier/en/385.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/386.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/387.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/389.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/39.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/40.txt +0 -21
- data/data/libphonenumber/resources/carrier/en/41.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/420.txt +0 -32
- data/data/libphonenumber/resources/carrier/en/421.txt +0 -38
- data/data/libphonenumber/resources/carrier/en/43.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/45.txt +0 -599
- data/data/libphonenumber/resources/carrier/en/47.txt +0 -239
- data/data/libphonenumber/resources/carrier/en/48.txt +0 -118
- data/data/libphonenumber/resources/carrier/en/49.txt +0 -50
- data/data/libphonenumber/resources/carrier/en/501.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/505.txt +0 -101
- data/data/libphonenumber/resources/carrier/en/506.txt +0 -50
- data/data/libphonenumber/resources/carrier/en/507.txt +0 -84
- data/data/libphonenumber/resources/carrier/en/509.txt +0 -24
- data/data/libphonenumber/resources/carrier/en/51.txt +0 -584
- data/data/libphonenumber/resources/carrier/en/53.txt +0 -15
- data/data/libphonenumber/resources/carrier/en/54.txt +0 -98
- data/data/libphonenumber/resources/carrier/en/55.txt +0 -9479
- data/data/libphonenumber/resources/carrier/en/56.txt +0 -538
- data/data/libphonenumber/resources/carrier/en/57.txt +0 -38
- data/data/libphonenumber/resources/carrier/en/58.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/591.txt +0 -51
- data/data/libphonenumber/resources/carrier/en/592.txt +0 -15
- data/data/libphonenumber/resources/carrier/en/595.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/597.txt +0 -33
- data/data/libphonenumber/resources/carrier/en/598.txt +0 -25
- data/data/libphonenumber/resources/carrier/en/599.txt +0 -49
- data/data/libphonenumber/resources/carrier/en/60.txt +0 -301
- data/data/libphonenumber/resources/carrier/en/61.txt +0 -95
- data/data/libphonenumber/resources/carrier/en/62.txt +0 -702
- data/data/libphonenumber/resources/carrier/en/63.txt +0 -55
- data/data/libphonenumber/resources/carrier/en/64.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/65.txt +0 -591
- data/data/libphonenumber/resources/carrier/en/66.txt +0 -48
- data/data/libphonenumber/resources/carrier/en/670.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/673.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/675.txt +0 -30
- data/data/libphonenumber/resources/carrier/en/676.txt +0 -39
- data/data/libphonenumber/resources/carrier/en/677.txt +0 -44
- data/data/libphonenumber/resources/carrier/en/678.txt +0 -35
- data/data/libphonenumber/resources/carrier/en/679.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/685.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/686.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/689.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/7.txt +0 -25
- data/data/libphonenumber/resources/carrier/en/84.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/852.txt +0 -282
- data/data/libphonenumber/resources/carrier/en/853.txt +0 -326
- data/data/libphonenumber/resources/carrier/en/855.txt +0 -36
- data/data/libphonenumber/resources/carrier/en/856.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/86.txt +0 -64
- data/data/libphonenumber/resources/carrier/en/880.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/90.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/91.txt +0 -2883
- data/data/libphonenumber/resources/carrier/en/92.txt +0 -51
- data/data/libphonenumber/resources/carrier/en/93.txt +0 -24
- data/data/libphonenumber/resources/carrier/en/94.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/95.txt +0 -46
- data/data/libphonenumber/resources/carrier/en/960.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/961.txt +0 -35
- data/data/libphonenumber/resources/carrier/en/962.txt +0 -20
- data/data/libphonenumber/resources/carrier/en/963.txt +0 -50
- data/data/libphonenumber/resources/carrier/en/964.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/965.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/966.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/967.txt +0 -21
- data/data/libphonenumber/resources/carrier/en/968.txt +0 -34
- data/data/libphonenumber/resources/carrier/en/970.txt +0 -16
- data/data/libphonenumber/resources/carrier/en/971.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/972.txt +0 -40
- data/data/libphonenumber/resources/carrier/en/973.txt +0 -32
- data/data/libphonenumber/resources/carrier/en/974.txt +0 -18
- data/data/libphonenumber/resources/carrier/en/975.txt +0 -17
- data/data/libphonenumber/resources/carrier/en/976.txt +0 -21
- data/data/libphonenumber/resources/carrier/en/977.txt +0 -26
- data/data/libphonenumber/resources/carrier/en/98.txt +0 -30
- data/data/libphonenumber/resources/carrier/en/992.txt +0 -27
- data/data/libphonenumber/resources/carrier/en/993.txt +0 -19
- data/data/libphonenumber/resources/carrier/en/994.txt +0 -23
- data/data/libphonenumber/resources/carrier/en/995.txt +0 -34
- data/data/libphonenumber/resources/carrier/en/996.txt +0 -22
- data/data/libphonenumber/resources/carrier/en/998.txt +0 -33
- data/data/libphonenumber/resources/carrier/fa/93.txt +0 -24
- data/data/libphonenumber/resources/carrier/fa/98.txt +0 -30
- data/data/libphonenumber/resources/carrier/ru/374.txt +0 -28
- data/data/libphonenumber/resources/carrier/ru/375.txt +0 -28
- data/data/libphonenumber/resources/carrier/zh/852.txt +0 -283
- data/data/libphonenumber/resources/carrier/zh/86.txt +0 -64
- data/data/libphonenumber/resources/carrier/zh_Hant/852.txt +0 -283
- data/data/libphonenumber/resources/carrier/zh_Hant/86.txt +0 -64
- data/data/libphonenumber/resources/geocoding/am/374.txt +0 -177
- data/data/libphonenumber/resources/geocoding/ar/82.txt +0 -34
- data/data/libphonenumber/resources/geocoding/ar/966.txt +0 -27
- data/data/libphonenumber/resources/geocoding/be/375.txt +0 -144
- data/data/libphonenumber/resources/geocoding/bg/359.txt +0 -2105
- data/data/libphonenumber/resources/geocoding/bg/82.txt +0 -34
- data/data/libphonenumber/resources/geocoding/ca/82.txt +0 -34
- data/data/libphonenumber/resources/geocoding/cs/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/de/32.txt +0 -59
- data/data/libphonenumber/resources/geocoding/de/352.txt +0 -229
- data/data/libphonenumber/resources/geocoding/de/41.txt +0 -37
- data/data/libphonenumber/resources/geocoding/de/43.txt +0 -1037
- data/data/libphonenumber/resources/geocoding/de/49.txt +0 -5219
- data/data/libphonenumber/resources/geocoding/el/30.txt +0 -259
- data/data/libphonenumber/resources/geocoding/el/82.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/1.txt +0 -36238
- data/data/libphonenumber/resources/geocoding/en/20.txt +0 -45
- data/data/libphonenumber/resources/geocoding/en/212.txt +0 -86
- data/data/libphonenumber/resources/geocoding/en/213.txt +0 -30
- data/data/libphonenumber/resources/geocoding/en/216.txt +0 -26
- data/data/libphonenumber/resources/geocoding/en/220.txt +0 -59
- data/data/libphonenumber/resources/geocoding/en/221.txt +0 -19
- data/data/libphonenumber/resources/geocoding/en/222.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/223.txt +0 -37
- data/data/libphonenumber/resources/geocoding/en/224.txt +0 -38
- data/data/libphonenumber/resources/geocoding/en/225.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/226.txt +0 -50
- data/data/libphonenumber/resources/geocoding/en/228.txt +0 -24
- data/data/libphonenumber/resources/geocoding/en/229.txt +0 -52
- data/data/libphonenumber/resources/geocoding/en/230.txt +0 -25
- data/data/libphonenumber/resources/geocoding/en/232.txt +0 -20
- data/data/libphonenumber/resources/geocoding/en/233.txt +0 -86
- data/data/libphonenumber/resources/geocoding/en/234.txt +0 -79
- data/data/libphonenumber/resources/geocoding/en/237.txt +0 -125
- data/data/libphonenumber/resources/geocoding/en/238.txt +0 -54
- data/data/libphonenumber/resources/geocoding/en/239.txt +0 -35
- data/data/libphonenumber/resources/geocoding/en/241.txt +0 -48
- data/data/libphonenumber/resources/geocoding/en/242.txt +0 -23
- data/data/libphonenumber/resources/geocoding/en/243.txt +0 -22
- data/data/libphonenumber/resources/geocoding/en/244.txt +0 -54
- data/data/libphonenumber/resources/geocoding/en/245.txt +0 -38
- data/data/libphonenumber/resources/geocoding/en/247.txt +0 -27
- data/data/libphonenumber/resources/geocoding/en/249.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/251.txt +0 -386
- data/data/libphonenumber/resources/geocoding/en/252.txt +0 -21
- data/data/libphonenumber/resources/geocoding/en/254.txt +0 -46
- data/data/libphonenumber/resources/geocoding/en/256.txt +0 -30
- data/data/libphonenumber/resources/geocoding/en/257.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/258.txt +0 -27
- data/data/libphonenumber/resources/geocoding/en/260.txt +0 -26
- data/data/libphonenumber/resources/geocoding/en/261.txt +0 -40
- data/data/libphonenumber/resources/geocoding/en/263.txt +0 -134
- data/data/libphonenumber/resources/geocoding/en/264.txt +0 -1047
- data/data/libphonenumber/resources/geocoding/en/266.txt +0 -18
- data/data/libphonenumber/resources/geocoding/en/267.txt +0 -35
- data/data/libphonenumber/resources/geocoding/en/268.txt +0 -54
- data/data/libphonenumber/resources/geocoding/en/269.txt +0 -32
- data/data/libphonenumber/resources/geocoding/en/27.txt +0 -57
- data/data/libphonenumber/resources/geocoding/en/290.txt +0 -24
- data/data/libphonenumber/resources/geocoding/en/299.txt +0 -43
- data/data/libphonenumber/resources/geocoding/en/30.txt +0 -261
- data/data/libphonenumber/resources/geocoding/en/31.txt +0 -137
- data/data/libphonenumber/resources/geocoding/en/32.txt +0 -59
- data/data/libphonenumber/resources/geocoding/en/33.txt +0 -5592
- data/data/libphonenumber/resources/geocoding/en/34.txt +0 -123
- data/data/libphonenumber/resources/geocoding/en/351.txt +0 -67
- data/data/libphonenumber/resources/geocoding/en/352.txt +0 -229
- data/data/libphonenumber/resources/geocoding/en/353.txt +0 -71
- data/data/libphonenumber/resources/geocoding/en/354.txt +0 -23
- data/data/libphonenumber/resources/geocoding/en/355.txt +0 -188
- data/data/libphonenumber/resources/geocoding/en/358.txt +0 -74
- data/data/libphonenumber/resources/geocoding/en/359.txt +0 -2102
- data/data/libphonenumber/resources/geocoding/en/36.txt +0 -70
- data/data/libphonenumber/resources/geocoding/en/370.txt +0 -64
- data/data/libphonenumber/resources/geocoding/en/371.txt +0 -56
- data/data/libphonenumber/resources/geocoding/en/372.txt +0 -35
- data/data/libphonenumber/resources/geocoding/en/373.txt +0 -62
- data/data/libphonenumber/resources/geocoding/en/374.txt +0 -184
- data/data/libphonenumber/resources/geocoding/en/375.txt +0 -142
- data/data/libphonenumber/resources/geocoding/en/381.txt +0 -50
- data/data/libphonenumber/resources/geocoding/en/389.txt +0 -28
- data/data/libphonenumber/resources/geocoding/en/39.txt +0 -137
- data/data/libphonenumber/resources/geocoding/en/40.txt +0 -98
- data/data/libphonenumber/resources/geocoding/en/41.txt +0 -37
- data/data/libphonenumber/resources/geocoding/en/420.txt +0 -37
- data/data/libphonenumber/resources/geocoding/en/421.txt +0 -42
- data/data/libphonenumber/resources/geocoding/en/43.txt +0 -1036
- data/data/libphonenumber/resources/geocoding/en/44.txt +0 -870
- data/data/libphonenumber/resources/geocoding/en/46.txt +0 -280
- data/data/libphonenumber/resources/geocoding/en/47.txt +0 -49
- data/data/libphonenumber/resources/geocoding/en/48.txt +0 -65
- data/data/libphonenumber/resources/geocoding/en/49.txt +0 -5218
- data/data/libphonenumber/resources/geocoding/en/501.txt +0 -23
- data/data/libphonenumber/resources/geocoding/en/504.txt +0 -19
- data/data/libphonenumber/resources/geocoding/en/51.txt +0 -42
- data/data/libphonenumber/resources/geocoding/en/53.txt +0 -33
- data/data/libphonenumber/resources/geocoding/en/54.txt +0 -236
- data/data/libphonenumber/resources/geocoding/en/55.txt +0 -15271
- data/data/libphonenumber/resources/geocoding/en/56.txt +0 -41
- data/data/libphonenumber/resources/geocoding/en/57.txt +0 -186
- data/data/libphonenumber/resources/geocoding/en/58.txt +0 -73
- data/data/libphonenumber/resources/geocoding/en/592.txt +0 -82
- data/data/libphonenumber/resources/geocoding/en/599.txt +0 -22
- data/data/libphonenumber/resources/geocoding/en/62.txt +0 -325
- data/data/libphonenumber/resources/geocoding/en/64.txt +0 -124
- data/data/libphonenumber/resources/geocoding/en/66.txt +0 -40
- data/data/libphonenumber/resources/geocoding/en/686.txt +0 -50
- data/data/libphonenumber/resources/geocoding/en/688.txt +0 -25
- data/data/libphonenumber/resources/geocoding/en/7.txt +0 -355
- data/data/libphonenumber/resources/geocoding/en/81.txt +0 -1547
- data/data/libphonenumber/resources/geocoding/en/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/en/84.txt +0 -88
- data/data/libphonenumber/resources/geocoding/en/86.txt +0 -154830
- data/data/libphonenumber/resources/geocoding/en/886.txt +0 -30
- data/data/libphonenumber/resources/geocoding/en/90.txt +0 -182
- data/data/libphonenumber/resources/geocoding/en/91.txt +0 -2666
- data/data/libphonenumber/resources/geocoding/en/93.txt +0 -52
- data/data/libphonenumber/resources/geocoding/en/94.txt +0 -46
- data/data/libphonenumber/resources/geocoding/en/95.txt +0 -17
- data/data/libphonenumber/resources/geocoding/en/962.txt +0 -32
- data/data/libphonenumber/resources/geocoding/en/966.txt +0 -29
- data/data/libphonenumber/resources/geocoding/en/968.txt +0 -18
- data/data/libphonenumber/resources/geocoding/en/972.txt +0 -20
- data/data/libphonenumber/resources/geocoding/en/975.txt +0 -21
- data/data/libphonenumber/resources/geocoding/en/98.txt +0 -51
- data/data/libphonenumber/resources/geocoding/en/992.txt +0 -77
- data/data/libphonenumber/resources/geocoding/en/994.txt +0 -98
- data/data/libphonenumber/resources/geocoding/es/228.txt +0 -23
- data/data/libphonenumber/resources/geocoding/es/230.txt +0 -23
- data/data/libphonenumber/resources/geocoding/es/34.txt +0 -124
- data/data/libphonenumber/resources/geocoding/es/54.txt +0 -238
- data/data/libphonenumber/resources/geocoding/es/56.txt +0 -43
- data/data/libphonenumber/resources/geocoding/es/57.txt +0 -186
- data/data/libphonenumber/resources/geocoding/es/58.txt +0 -72
- data/data/libphonenumber/resources/geocoding/es/82.txt +0 -33
- data/data/libphonenumber/resources/geocoding/fa/93.txt +0 -53
- data/data/libphonenumber/resources/geocoding/fa/98.txt +0 -48
- data/data/libphonenumber/resources/geocoding/fi/358.txt +0 -74
- data/data/libphonenumber/resources/geocoding/fi/82.txt +0 -34
- data/data/libphonenumber/resources/geocoding/fr/212.txt +0 -85
- data/data/libphonenumber/resources/geocoding/fr/222.txt +0 -29
- data/data/libphonenumber/resources/geocoding/fr/225.txt +0 -30
- data/data/libphonenumber/resources/geocoding/fr/228.txt +0 -24
- data/data/libphonenumber/resources/geocoding/fr/229.txt +0 -55
- data/data/libphonenumber/resources/geocoding/fr/230.txt +0 -23
- data/data/libphonenumber/resources/geocoding/fr/242.txt +0 -25
- data/data/libphonenumber/resources/geocoding/fr/243.txt +0 -24
- data/data/libphonenumber/resources/geocoding/fr/269.txt +0 -34
- data/data/libphonenumber/resources/geocoding/fr/290.txt +0 -24
- data/data/libphonenumber/resources/geocoding/fr/32.txt +0 -59
- data/data/libphonenumber/resources/geocoding/fr/33.txt +0 -5593
- data/data/libphonenumber/resources/geocoding/fr/352.txt +0 -231
- data/data/libphonenumber/resources/geocoding/fr/41.txt +0 -37
- data/data/libphonenumber/resources/geocoding/fr/82.txt +0 -33
- data/data/libphonenumber/resources/geocoding/hi/82.txt +0 -36
- data/data/libphonenumber/resources/geocoding/hu/36.txt +0 -71
- data/data/libphonenumber/resources/geocoding/hu/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/id/62.txt +0 -326
- data/data/libphonenumber/resources/geocoding/it/39.txt +0 -248
- data/data/libphonenumber/resources/geocoding/it/41.txt +0 -37
- data/data/libphonenumber/resources/geocoding/iw/82.txt +0 -37
- data/data/libphonenumber/resources/geocoding/ja/81.txt +0 -1546
- data/data/libphonenumber/resources/geocoding/ja/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/ko/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/nl/31.txt +0 -145
- data/data/libphonenumber/resources/geocoding/nl/32.txt +0 -59
- data/data/libphonenumber/resources/geocoding/pl/48.txt +0 -66
- data/data/libphonenumber/resources/geocoding/pt/238.txt +0 -58
- data/data/libphonenumber/resources/geocoding/pt/239.txt +0 -37
- data/data/libphonenumber/resources/geocoding/pt/244.txt +0 -59
- data/data/libphonenumber/resources/geocoding/pt/245.txt +0 -37
- data/data/libphonenumber/resources/geocoding/pt/258.txt +0 -29
- data/data/libphonenumber/resources/geocoding/pt/351.txt +0 -69
- data/data/libphonenumber/resources/geocoding/pt/55.txt +0 -15269
- data/data/libphonenumber/resources/geocoding/ro/373.txt +0 -61
- data/data/libphonenumber/resources/geocoding/ro/40.txt +0 -99
- data/data/libphonenumber/resources/geocoding/ru/373.txt +0 -61
- data/data/libphonenumber/resources/geocoding/ru/374.txt +0 -177
- data/data/libphonenumber/resources/geocoding/ru/375.txt +0 -143
- data/data/libphonenumber/resources/geocoding/ru/7.txt +0 -108
- data/data/libphonenumber/resources/geocoding/se/358.txt +0 -74
- data/data/libphonenumber/resources/geocoding/sr/381.txt +0 -51
- data/data/libphonenumber/resources/geocoding/sv/46.txt +0 -266
- data/data/libphonenumber/resources/geocoding/th/66.txt +0 -39
- data/data/libphonenumber/resources/geocoding/tr/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/tr/90.txt +0 -182
- data/data/libphonenumber/resources/geocoding/vi/84.txt +0 -80
- data/data/libphonenumber/resources/geocoding/zh/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/zh/86.txt +0 -154830
- data/data/libphonenumber/resources/geocoding/zh/886.txt +0 -30
- data/data/libphonenumber/resources/geocoding/zh_Hant/82.txt +0 -35
- data/data/libphonenumber/resources/geocoding/zh_Hant/886.txt +0 -30
- data/data/libphonenumber/resources/phonemetadata.proto +0 -282
- data/data/libphonenumber/resources/phonenumber.proto +0 -124
- data/data/libphonenumber/resources/test/carrier/en/1.txt +0 -16
- data/data/libphonenumber/resources/test/carrier/en/244.txt +0 -16
- data/data/libphonenumber/resources/test/carrier/en/44.txt +0 -17
- data/data/libphonenumber/resources/test/carrier/sv/44.txt +0 -15
- data/data/libphonenumber/resources/test/geocoding/de/1.txt +0 -16
- data/data/libphonenumber/resources/test/geocoding/en/1.txt +0 -21
- data/data/libphonenumber/resources/test/geocoding/en/54.txt +0 -15
- data/data/libphonenumber/resources/test/geocoding/en/82.txt +0 -31
- data/data/libphonenumber/resources/test/geocoding/ko/82.txt +0 -29
- data/data/libphonenumber/resources/test/timezones/map_data.txt +0 -24
- data/data/libphonenumber/resources/timezones/map_data.txt +0 -2070
- data/data/libphonenumber/tools/cpp/CMakeLists.txt +0 -57
- data/data/libphonenumber/tools/cpp/gtest.cmake +0 -47
- data/data/libphonenumber/tools/cpp/src/base/basictypes.h +0 -330
- data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data.cc +0 -655
- data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data.h +0 -37
- data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data_main.cc +0 -21
- data/data/libphonenumber/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc +0 -39
- data/data/libphonenumber/tools/cpp/test/cpp-build/run_tests.cc +0 -21
- data/data/libphonenumber/tools/java/common/pom.xml +0 -69
- data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java +0 -530
- data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/Command.java +0 -51
- data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/CommandDispatcher.java +0 -78
- data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/CopyrightNotice.java +0 -66
- data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/FileUtils.java +0 -52
- data/data/libphonenumber/tools/java/common/test/com/google/i18n/phonenumbers/BuildMetadataFromXmlTest.java +0 -654
- data/data/libphonenumber/tools/java/cpp-build/pom.xml +0 -114
- data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/BuildMetadataCppFromXml.java +0 -230
- data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/CppMetadataGenerator.java +0 -197
- data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/EntryPoint.java +0 -33
- data/data/libphonenumber/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/libphonenumber/tools/java/cpp-build/test/com/google/i18n/phonenumbers/BuildMetadataCppFromXmlTest.java +0 -185
- data/data/libphonenumber/tools/java/cpp-build/test/com/google/i18n/phonenumbers/CppMetadataGeneratorTest.java +0 -122
- data/data/libphonenumber/tools/java/data/README +0 -16
- data/data/libphonenumber/tools/java/data/pom.xml +0 -101
- data/data/libphonenumber/tools/java/data/src/com/google/i18n/phonenumbers/CombineGeoData.java +0 -287
- data/data/libphonenumber/tools/java/data/src/com/google/i18n/phonenumbers/CombineGeoDataServlet.java +0 -46
- data/data/libphonenumber/tools/java/data/test/com/google/i18n/phonenumbers/CombineGeoDataTest.java +0 -233
- data/data/libphonenumber/tools/java/data/webapp/WEB-INF/appengine-web.xml +0 -8
- data/data/libphonenumber/tools/java/data/webapp/WEB-INF/logging.properties +0 -13
- data/data/libphonenumber/tools/java/data/webapp/WEB-INF/web.xml +0 -18
- data/data/libphonenumber/tools/java/data/webapp/index.html +0 -22
- data/data/libphonenumber/tools/java/java-build/pom.xml +0 -121
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java +0 -397
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java +0 -381
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/EntryPoint.java +0 -39
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/JSArrayBuilder.java +0 -142
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/AbstractPhonePrefixDataIOHandler.java +0 -62
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixData.java +0 -483
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataEntryPoint.java +0 -58
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapData.java +0 -143
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapDataEntryPoint.java +0 -60
- data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/PhonePrefixDataIOHandler.java +0 -59
- data/data/libphonenumber/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/libphonenumber/tools/java/java-build/test/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataTest.java +0 -291
- data/data/libphonenumber/tools/java/java-build/test/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapDataTest.java +0 -136
- data/data/libphonenumber/tools/java/pom.xml +0 -29
- data/data/libphonenumber/tools/script/continuous-integration.sh +0 -96
data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
DELETED
@@ -1,3312 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (C) 2009 The Libphonenumber Authors
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*/
|
16
|
-
|
17
|
-
package com.google.i18n.phonenumbers;
|
18
|
-
|
19
|
-
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
|
20
|
-
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource;
|
21
|
-
import com.google.i18n.phonenumbers.nano.Phonemetadata.NumberFormat;
|
22
|
-
import com.google.i18n.phonenumbers.nano.Phonemetadata.PhoneMetadata;
|
23
|
-
import com.google.i18n.phonenumbers.nano.Phonemetadata.PhoneNumberDesc;
|
24
|
-
|
25
|
-
import java.io.InputStream;
|
26
|
-
import java.util.ArrayList;
|
27
|
-
import java.util.Arrays;
|
28
|
-
import java.util.Collections;
|
29
|
-
import java.util.HashMap;
|
30
|
-
import java.util.HashSet;
|
31
|
-
import java.util.Iterator;
|
32
|
-
import java.util.List;
|
33
|
-
import java.util.Map;
|
34
|
-
import java.util.Set;
|
35
|
-
import java.util.logging.Level;
|
36
|
-
import java.util.logging.Logger;
|
37
|
-
import java.util.regex.Matcher;
|
38
|
-
import java.util.regex.Pattern;
|
39
|
-
|
40
|
-
/**
|
41
|
-
* Utility for international phone numbers. Functionality includes formatting, parsing and
|
42
|
-
* validation.
|
43
|
-
*
|
44
|
-
* <p>If you use this library, and want to be notified about important changes, please sign up to
|
45
|
-
* our <a href="http://groups.google.com/group/libphonenumber-discuss/about">mailing list</a>.
|
46
|
-
*
|
47
|
-
* NOTE: A lot of methods in this class require Region Code strings. These must be provided using
|
48
|
-
* ISO 3166-1 two-letter country-code format. These should be in upper-case. The list of the codes
|
49
|
-
* can be found here:
|
50
|
-
* http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm
|
51
|
-
*
|
52
|
-
* @author Shaopeng Jia
|
53
|
-
*/
|
54
|
-
public class PhoneNumberUtil {
|
55
|
-
// @VisibleForTesting
|
56
|
-
static final MetadataLoader DEFAULT_METADATA_LOADER = new MetadataLoader() {
|
57
|
-
@Override
|
58
|
-
public InputStream loadMetadata(String metadataFileName) {
|
59
|
-
return PhoneNumberUtil.class.getResourceAsStream(metadataFileName);
|
60
|
-
}
|
61
|
-
};
|
62
|
-
|
63
|
-
private static final Logger logger = Logger.getLogger(PhoneNumberUtil.class.getName());
|
64
|
-
|
65
|
-
/** Flags to use when compiling regular expressions for phone numbers. */
|
66
|
-
static final int REGEX_FLAGS = Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE;
|
67
|
-
// The minimum and maximum length of the national significant number.
|
68
|
-
private static final int MIN_LENGTH_FOR_NSN = 2;
|
69
|
-
// The ITU says the maximum length should be 15, but we have found longer numbers in Germany.
|
70
|
-
static final int MAX_LENGTH_FOR_NSN = 17;
|
71
|
-
// The maximum length of the country calling code.
|
72
|
-
static final int MAX_LENGTH_COUNTRY_CODE = 3;
|
73
|
-
// We don't allow input strings for parsing to be longer than 250 chars. This prevents malicious
|
74
|
-
// input from overflowing the regular-expression engine.
|
75
|
-
private static final int MAX_INPUT_STRING_LENGTH = 250;
|
76
|
-
|
77
|
-
// Region-code for the unknown region.
|
78
|
-
private static final String UNKNOWN_REGION = "ZZ";
|
79
|
-
|
80
|
-
private static final int NANPA_COUNTRY_CODE = 1;
|
81
|
-
|
82
|
-
// The prefix that needs to be inserted in front of a Colombian landline number when dialed from
|
83
|
-
// a mobile phone in Colombia.
|
84
|
-
private static final String COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = "3";
|
85
|
-
|
86
|
-
// Map of country calling codes that use a mobile token before the area code. One example of when
|
87
|
-
// this is relevant is when determining the length of the national destination code, which should
|
88
|
-
// be the length of the area code plus the length of the mobile token.
|
89
|
-
private static final Map<Integer, String> MOBILE_TOKEN_MAPPINGS;
|
90
|
-
|
91
|
-
// Set of country codes that have geographically assigned mobile numbers (see GEO_MOBILE_COUNTRIES
|
92
|
-
// below) which are not based on *area codes*. For example, in China mobile numbers start with a
|
93
|
-
// carrier indicator, and beyond that are geographically assigned: this carrier indicator is not
|
94
|
-
// considered to be an area code.
|
95
|
-
private static final Set<Integer> GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES;
|
96
|
-
|
97
|
-
// Set of country calling codes that have geographically assigned mobile numbers. This may not be
|
98
|
-
// complete; we add calling codes case by case, as we find geographical mobile numbers or hear
|
99
|
-
// from user reports. Note that countries like the US, where we can't distinguish between
|
100
|
-
// fixed-line or mobile numbers, are not listed here, since we consider FIXED_LINE_OR_MOBILE to be
|
101
|
-
// a possibly geographically-related type anyway (like FIXED_LINE).
|
102
|
-
private static final Set<Integer> GEO_MOBILE_COUNTRIES;
|
103
|
-
|
104
|
-
// The PLUS_SIGN signifies the international prefix.
|
105
|
-
static final char PLUS_SIGN = '+';
|
106
|
-
|
107
|
-
private static final char STAR_SIGN = '*';
|
108
|
-
|
109
|
-
private static final String RFC3966_EXTN_PREFIX = ";ext=";
|
110
|
-
private static final String RFC3966_PREFIX = "tel:";
|
111
|
-
private static final String RFC3966_PHONE_CONTEXT = ";phone-context=";
|
112
|
-
private static final String RFC3966_ISDN_SUBADDRESS = ";isub=";
|
113
|
-
|
114
|
-
// A map that contains characters that are essential when dialling. That means any of the
|
115
|
-
// characters in this map must not be removed from a number when dialling, otherwise the call
|
116
|
-
// will not reach the intended destination.
|
117
|
-
private static final Map<Character, Character> DIALLABLE_CHAR_MAPPINGS;
|
118
|
-
|
119
|
-
// Only upper-case variants of alpha characters are stored.
|
120
|
-
private static final Map<Character, Character> ALPHA_MAPPINGS;
|
121
|
-
|
122
|
-
// For performance reasons, amalgamate both into one map.
|
123
|
-
private static final Map<Character, Character> ALPHA_PHONE_MAPPINGS;
|
124
|
-
|
125
|
-
// Separate map of all symbols that we wish to retain when formatting alpha numbers. This
|
126
|
-
// includes digits, ASCII letters and number grouping symbols such as "-" and " ".
|
127
|
-
private static final Map<Character, Character> ALL_PLUS_NUMBER_GROUPING_SYMBOLS;
|
128
|
-
|
129
|
-
static {
|
130
|
-
HashMap<Integer, String> mobileTokenMap = new HashMap<Integer, String>();
|
131
|
-
mobileTokenMap.put(52, "1");
|
132
|
-
mobileTokenMap.put(54, "9");
|
133
|
-
MOBILE_TOKEN_MAPPINGS = Collections.unmodifiableMap(mobileTokenMap);
|
134
|
-
|
135
|
-
HashSet<Integer> geoMobileCountriesWithoutMobileAreaCodes = new HashSet<Integer>();
|
136
|
-
geoMobileCountriesWithoutMobileAreaCodes.add(86); // China
|
137
|
-
GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES =
|
138
|
-
Collections.unmodifiableSet(geoMobileCountriesWithoutMobileAreaCodes);
|
139
|
-
|
140
|
-
HashSet<Integer> geoMobileCountries = new HashSet<Integer>();
|
141
|
-
geoMobileCountries.add(52); // Mexico
|
142
|
-
geoMobileCountries.add(54); // Argentina
|
143
|
-
geoMobileCountries.add(55); // Brazil
|
144
|
-
geoMobileCountries.add(62); // Indonesia: some prefixes only (fixed CMDA wireless)
|
145
|
-
geoMobileCountries.addAll(geoMobileCountriesWithoutMobileAreaCodes);
|
146
|
-
GEO_MOBILE_COUNTRIES = Collections.unmodifiableSet(geoMobileCountries);
|
147
|
-
|
148
|
-
// Simple ASCII digits map used to populate ALPHA_PHONE_MAPPINGS and
|
149
|
-
// ALL_PLUS_NUMBER_GROUPING_SYMBOLS.
|
150
|
-
HashMap<Character, Character> asciiDigitMappings = new HashMap<Character, Character>();
|
151
|
-
asciiDigitMappings.put('0', '0');
|
152
|
-
asciiDigitMappings.put('1', '1');
|
153
|
-
asciiDigitMappings.put('2', '2');
|
154
|
-
asciiDigitMappings.put('3', '3');
|
155
|
-
asciiDigitMappings.put('4', '4');
|
156
|
-
asciiDigitMappings.put('5', '5');
|
157
|
-
asciiDigitMappings.put('6', '6');
|
158
|
-
asciiDigitMappings.put('7', '7');
|
159
|
-
asciiDigitMappings.put('8', '8');
|
160
|
-
asciiDigitMappings.put('9', '9');
|
161
|
-
|
162
|
-
HashMap<Character, Character> alphaMap = new HashMap<Character, Character>(40);
|
163
|
-
alphaMap.put('A', '2');
|
164
|
-
alphaMap.put('B', '2');
|
165
|
-
alphaMap.put('C', '2');
|
166
|
-
alphaMap.put('D', '3');
|
167
|
-
alphaMap.put('E', '3');
|
168
|
-
alphaMap.put('F', '3');
|
169
|
-
alphaMap.put('G', '4');
|
170
|
-
alphaMap.put('H', '4');
|
171
|
-
alphaMap.put('I', '4');
|
172
|
-
alphaMap.put('J', '5');
|
173
|
-
alphaMap.put('K', '5');
|
174
|
-
alphaMap.put('L', '5');
|
175
|
-
alphaMap.put('M', '6');
|
176
|
-
alphaMap.put('N', '6');
|
177
|
-
alphaMap.put('O', '6');
|
178
|
-
alphaMap.put('P', '7');
|
179
|
-
alphaMap.put('Q', '7');
|
180
|
-
alphaMap.put('R', '7');
|
181
|
-
alphaMap.put('S', '7');
|
182
|
-
alphaMap.put('T', '8');
|
183
|
-
alphaMap.put('U', '8');
|
184
|
-
alphaMap.put('V', '8');
|
185
|
-
alphaMap.put('W', '9');
|
186
|
-
alphaMap.put('X', '9');
|
187
|
-
alphaMap.put('Y', '9');
|
188
|
-
alphaMap.put('Z', '9');
|
189
|
-
ALPHA_MAPPINGS = Collections.unmodifiableMap(alphaMap);
|
190
|
-
|
191
|
-
HashMap<Character, Character> combinedMap = new HashMap<Character, Character>(100);
|
192
|
-
combinedMap.putAll(ALPHA_MAPPINGS);
|
193
|
-
combinedMap.putAll(asciiDigitMappings);
|
194
|
-
ALPHA_PHONE_MAPPINGS = Collections.unmodifiableMap(combinedMap);
|
195
|
-
|
196
|
-
HashMap<Character, Character> diallableCharMap = new HashMap<Character, Character>();
|
197
|
-
diallableCharMap.putAll(asciiDigitMappings);
|
198
|
-
diallableCharMap.put(PLUS_SIGN, PLUS_SIGN);
|
199
|
-
diallableCharMap.put('*', '*');
|
200
|
-
DIALLABLE_CHAR_MAPPINGS = Collections.unmodifiableMap(diallableCharMap);
|
201
|
-
|
202
|
-
HashMap<Character, Character> allPlusNumberGroupings = new HashMap<Character, Character>();
|
203
|
-
// Put (lower letter -> upper letter) and (upper letter -> upper letter) mappings.
|
204
|
-
for (char c : ALPHA_MAPPINGS.keySet()) {
|
205
|
-
allPlusNumberGroupings.put(Character.toLowerCase(c), c);
|
206
|
-
allPlusNumberGroupings.put(c, c);
|
207
|
-
}
|
208
|
-
allPlusNumberGroupings.putAll(asciiDigitMappings);
|
209
|
-
// Put grouping symbols.
|
210
|
-
allPlusNumberGroupings.put('-', '-');
|
211
|
-
allPlusNumberGroupings.put('\uFF0D', '-');
|
212
|
-
allPlusNumberGroupings.put('\u2010', '-');
|
213
|
-
allPlusNumberGroupings.put('\u2011', '-');
|
214
|
-
allPlusNumberGroupings.put('\u2012', '-');
|
215
|
-
allPlusNumberGroupings.put('\u2013', '-');
|
216
|
-
allPlusNumberGroupings.put('\u2014', '-');
|
217
|
-
allPlusNumberGroupings.put('\u2015', '-');
|
218
|
-
allPlusNumberGroupings.put('\u2212', '-');
|
219
|
-
allPlusNumberGroupings.put('/', '/');
|
220
|
-
allPlusNumberGroupings.put('\uFF0F', '/');
|
221
|
-
allPlusNumberGroupings.put(' ', ' ');
|
222
|
-
allPlusNumberGroupings.put('\u3000', ' ');
|
223
|
-
allPlusNumberGroupings.put('\u2060', ' ');
|
224
|
-
allPlusNumberGroupings.put('.', '.');
|
225
|
-
allPlusNumberGroupings.put('\uFF0E', '.');
|
226
|
-
ALL_PLUS_NUMBER_GROUPING_SYMBOLS = Collections.unmodifiableMap(allPlusNumberGroupings);
|
227
|
-
}
|
228
|
-
|
229
|
-
// Pattern that makes it easy to distinguish whether a region has a unique international dialing
|
230
|
-
// prefix or not. If a region has a unique international prefix (e.g. 011 in USA), it will be
|
231
|
-
// represented as a string that contains a sequence of ASCII digits. If there are multiple
|
232
|
-
// available international prefixes in a region, they will be represented as a regex string that
|
233
|
-
// always contains character(s) other than ASCII digits.
|
234
|
-
// Note this regex also includes tilde, which signals waiting for the tone.
|
235
|
-
private static final Pattern UNIQUE_INTERNATIONAL_PREFIX =
|
236
|
-
Pattern.compile("[\\d]+(?:[~\u2053\u223C\uFF5E][\\d]+)?");
|
237
|
-
|
238
|
-
// Regular expression of acceptable punctuation found in phone numbers. This excludes punctuation
|
239
|
-
// found as a leading character only.
|
240
|
-
// This consists of dash characters, white space characters, full stops, slashes,
|
241
|
-
// square brackets, parentheses and tildes. It also includes the letter 'x' as that is found as a
|
242
|
-
// placeholder for carrier information in some phone numbers. Full-width variants are also
|
243
|
-
// present.
|
244
|
-
static final String VALID_PUNCTUATION = "-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F " +
|
245
|
-
"\u00A0\u00AD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E";
|
246
|
-
|
247
|
-
private static final String DIGITS = "\\p{Nd}";
|
248
|
-
// We accept alpha characters in phone numbers, ASCII only, upper and lower case.
|
249
|
-
private static final String VALID_ALPHA =
|
250
|
-
Arrays.toString(ALPHA_MAPPINGS.keySet().toArray()).replaceAll("[, \\[\\]]", "") +
|
251
|
-
Arrays.toString(ALPHA_MAPPINGS.keySet().toArray()).toLowerCase().replaceAll("[, \\[\\]]", "");
|
252
|
-
static final String PLUS_CHARS = "+\uFF0B";
|
253
|
-
static final Pattern PLUS_CHARS_PATTERN = Pattern.compile("[" + PLUS_CHARS + "]+");
|
254
|
-
private static final Pattern SEPARATOR_PATTERN = Pattern.compile("[" + VALID_PUNCTUATION + "]+");
|
255
|
-
private static final Pattern CAPTURING_DIGIT_PATTERN = Pattern.compile("(" + DIGITS + ")");
|
256
|
-
|
257
|
-
// Regular expression of acceptable characters that may start a phone number for the purposes of
|
258
|
-
// parsing. This allows us to strip away meaningless prefixes to phone numbers that may be
|
259
|
-
// mistakenly given to us. This consists of digits, the plus symbol and arabic-indic digits. This
|
260
|
-
// does not contain alpha characters, although they may be used later in the number. It also does
|
261
|
-
// not include other punctuation, as this will be stripped later during parsing and is of no
|
262
|
-
// information value when parsing a number.
|
263
|
-
private static final String VALID_START_CHAR = "[" + PLUS_CHARS + DIGITS + "]";
|
264
|
-
private static final Pattern VALID_START_CHAR_PATTERN = Pattern.compile(VALID_START_CHAR);
|
265
|
-
|
266
|
-
// Regular expression of characters typically used to start a second phone number for the purposes
|
267
|
-
// of parsing. This allows us to strip off parts of the number that are actually the start of
|
268
|
-
// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this
|
269
|
-
// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second
|
270
|
-
// extension so that the first number is parsed correctly.
|
271
|
-
private static final String SECOND_NUMBER_START = "[\\\\/] *x";
|
272
|
-
static final Pattern SECOND_NUMBER_START_PATTERN = Pattern.compile(SECOND_NUMBER_START);
|
273
|
-
|
274
|
-
// Regular expression of trailing characters that we want to remove. We remove all characters that
|
275
|
-
// are not alpha or numerical characters. The hash character is retained here, as it may signify
|
276
|
-
// the previous block was an extension.
|
277
|
-
private static final String UNWANTED_END_CHARS = "[[\\P{N}&&\\P{L}]&&[^#]]+$";
|
278
|
-
static final Pattern UNWANTED_END_CHAR_PATTERN = Pattern.compile(UNWANTED_END_CHARS);
|
279
|
-
|
280
|
-
// We use this pattern to check if the phone number has at least three letters in it - if so, then
|
281
|
-
// we treat it as a number where some phone-number digits are represented by letters.
|
282
|
-
private static final Pattern VALID_ALPHA_PHONE_PATTERN = Pattern.compile("(?:.*?[A-Za-z]){3}.*");
|
283
|
-
|
284
|
-
// Regular expression of viable phone numbers. This is location independent. Checks we have at
|
285
|
-
// least three leading digits, and only valid punctuation, alpha characters and
|
286
|
-
// digits in the phone number. Does not include extension data.
|
287
|
-
// The symbol 'x' is allowed here as valid punctuation since it is often used as a placeholder for
|
288
|
-
// carrier codes, for example in Brazilian phone numbers. We also allow multiple "+" characters at
|
289
|
-
// the start.
|
290
|
-
// Corresponds to the following:
|
291
|
-
// [digits]{minLengthNsn}|
|
292
|
-
// plus_sign*(([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*
|
293
|
-
//
|
294
|
-
// The first reg-ex is to allow short numbers (two digits long) to be parsed if they are entered
|
295
|
-
// as "15" etc, but only if there is no punctuation in them. The second expression restricts the
|
296
|
-
// number of digits to three or more, but then allows them to be in international form, and to
|
297
|
-
// have alpha-characters and punctuation.
|
298
|
-
//
|
299
|
-
// Note VALID_PUNCTUATION starts with a -, so must be the first in the range.
|
300
|
-
private static final String VALID_PHONE_NUMBER =
|
301
|
-
DIGITS + "{" + MIN_LENGTH_FOR_NSN + "}" + "|" +
|
302
|
-
"[" + PLUS_CHARS + "]*+(?:[" + VALID_PUNCTUATION + STAR_SIGN + "]*" + DIGITS + "){3,}[" +
|
303
|
-
VALID_PUNCTUATION + STAR_SIGN + VALID_ALPHA + DIGITS + "]*";
|
304
|
-
|
305
|
-
// Default extension prefix to use when formatting. This will be put in front of any extension
|
306
|
-
// component of the number, after the main national number is formatted. For example, if you wish
|
307
|
-
// the default extension formatting to be " extn: 3456", then you should specify " extn: " here
|
308
|
-
// as the default extension prefix. This can be overridden by region-specific preferences.
|
309
|
-
private static final String DEFAULT_EXTN_PREFIX = " ext. ";
|
310
|
-
|
311
|
-
// Pattern to capture digits used in an extension. Places a maximum length of "7" for an
|
312
|
-
// extension.
|
313
|
-
private static final String CAPTURING_EXTN_DIGITS = "(" + DIGITS + "{1,7})";
|
314
|
-
// Regexp of all possible ways to write extensions, for use when parsing. This will be run as a
|
315
|
-
// case-insensitive regexp match. Wide character versions are also provided after each ASCII
|
316
|
-
// version.
|
317
|
-
private static final String EXTN_PATTERNS_FOR_PARSING;
|
318
|
-
static final String EXTN_PATTERNS_FOR_MATCHING;
|
319
|
-
static {
|
320
|
-
// One-character symbols that can be used to indicate an extension.
|
321
|
-
String singleExtnSymbolsForMatching = "x\uFF58#\uFF03~\uFF5E";
|
322
|
-
// For parsing, we are slightly more lenient in our interpretation than for matching. Here we
|
323
|
-
// allow a "comma" as a possible extension indicator. When matching, this is hardly ever used to
|
324
|
-
// indicate this.
|
325
|
-
String singleExtnSymbolsForParsing = "," + singleExtnSymbolsForMatching;
|
326
|
-
|
327
|
-
EXTN_PATTERNS_FOR_PARSING = createExtnPattern(singleExtnSymbolsForParsing);
|
328
|
-
EXTN_PATTERNS_FOR_MATCHING = createExtnPattern(singleExtnSymbolsForMatching);
|
329
|
-
}
|
330
|
-
|
331
|
-
/**
|
332
|
-
* Helper initialiser method to create the regular-expression pattern to match extensions,
|
333
|
-
* allowing the one-char extension symbols provided by {@code singleExtnSymbols}.
|
334
|
-
*/
|
335
|
-
private static String createExtnPattern(String singleExtnSymbols) {
|
336
|
-
// There are three regular expressions here. The first covers RFC 3966 format, where the
|
337
|
-
// extension is added using ";ext=". The second more generic one starts with optional white
|
338
|
-
// space and ends with an optional full stop (.), followed by zero or more spaces/tabs and then
|
339
|
-
// the numbers themselves. The other one covers the special case of American numbers where the
|
340
|
-
// extension is written with a hash at the end, such as "- 503#".
|
341
|
-
// Note that the only capturing groups should be around the digits that you want to capture as
|
342
|
-
// part of the extension, or else parsing will fail!
|
343
|
-
// Canonical-equivalence doesn't seem to be an option with Android java, so we allow two options
|
344
|
-
// for representing the accented o - the character itself, and one in the unicode decomposed
|
345
|
-
// form with the combining acute accent.
|
346
|
-
return (RFC3966_EXTN_PREFIX + CAPTURING_EXTN_DIGITS + "|" + "[ \u00A0\\t,]*" +
|
347
|
-
"(?:e?xt(?:ensi(?:o\u0301?|\u00F3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|" +
|
348
|
-
"[" + singleExtnSymbols + "]|int|anexo|\uFF49\uFF4E\uFF54)" +
|
349
|
-
"[:\\.\uFF0E]?[ \u00A0\\t,-]*" + CAPTURING_EXTN_DIGITS + "#?|" +
|
350
|
-
"[- ]+(" + DIGITS + "{1,5})#");
|
351
|
-
}
|
352
|
-
|
353
|
-
// Regexp of all known extension prefixes used by different regions followed by 1 or more valid
|
354
|
-
// digits, for use when parsing.
|
355
|
-
private static final Pattern EXTN_PATTERN =
|
356
|
-
Pattern.compile("(?:" + EXTN_PATTERNS_FOR_PARSING + ")$", REGEX_FLAGS);
|
357
|
-
|
358
|
-
// We append optionally the extension pattern to the end here, as a valid phone number may
|
359
|
-
// have an extension prefix appended, followed by 1 or more digits.
|
360
|
-
private static final Pattern VALID_PHONE_NUMBER_PATTERN =
|
361
|
-
Pattern.compile(VALID_PHONE_NUMBER + "(?:" + EXTN_PATTERNS_FOR_PARSING + ")?", REGEX_FLAGS);
|
362
|
-
|
363
|
-
static final Pattern NON_DIGITS_PATTERN = Pattern.compile("(\\D+)");
|
364
|
-
|
365
|
-
// The FIRST_GROUP_PATTERN was originally set to $1 but there are some countries for which the
|
366
|
-
// first group is not used in the national pattern (e.g. Argentina) so the $1 group does not match
|
367
|
-
// correctly. Therefore, we use \d, so that the first group actually used in the pattern will be
|
368
|
-
// matched.
|
369
|
-
private static final Pattern FIRST_GROUP_PATTERN = Pattern.compile("(\\$\\d)");
|
370
|
-
private static final Pattern NP_PATTERN = Pattern.compile("\\$NP");
|
371
|
-
private static final Pattern FG_PATTERN = Pattern.compile("\\$FG");
|
372
|
-
private static final Pattern CC_PATTERN = Pattern.compile("\\$CC");
|
373
|
-
|
374
|
-
// A pattern that is used to determine if the national prefix formatting rule has the first group
|
375
|
-
// only, i.e., does not start with the national prefix. Note that the pattern explicitly allows
|
376
|
-
// for unbalanced parentheses.
|
377
|
-
private static final Pattern FIRST_GROUP_ONLY_PREFIX_PATTERN = Pattern.compile("\\(?\\$1\\)?");
|
378
|
-
|
379
|
-
private static PhoneNumberUtil instance = null;
|
380
|
-
|
381
|
-
public static final String REGION_CODE_FOR_NON_GEO_ENTITY = "001";
|
382
|
-
|
383
|
-
/**
|
384
|
-
* INTERNATIONAL and NATIONAL formats are consistent with the definition in ITU-T Recommendation
|
385
|
-
* E123. For example, the number of the Google Switzerland office will be written as
|
386
|
-
* "+41 44 668 1800" in INTERNATIONAL format, and as "044 668 1800" in NATIONAL format.
|
387
|
-
* E164 format is as per INTERNATIONAL format but with no formatting applied, e.g.
|
388
|
-
* "+41446681800". RFC3966 is as per INTERNATIONAL format, but with all spaces and other
|
389
|
-
* separating symbols replaced with a hyphen, and with any phone number extension appended with
|
390
|
-
* ";ext=". It also will have a prefix of "tel:" added, e.g. "tel:+41-44-668-1800".
|
391
|
-
*
|
392
|
-
* Note: If you are considering storing the number in a neutral format, you are highly advised to
|
393
|
-
* use the PhoneNumber class.
|
394
|
-
*/
|
395
|
-
public enum PhoneNumberFormat {
|
396
|
-
E164,
|
397
|
-
INTERNATIONAL,
|
398
|
-
NATIONAL,
|
399
|
-
RFC3966
|
400
|
-
}
|
401
|
-
|
402
|
-
/**
|
403
|
-
* Type of phone numbers.
|
404
|
-
*/
|
405
|
-
public enum PhoneNumberType {
|
406
|
-
FIXED_LINE,
|
407
|
-
MOBILE,
|
408
|
-
// In some regions (e.g. the USA), it is impossible to distinguish between fixed-line and
|
409
|
-
// mobile numbers by looking at the phone number itself.
|
410
|
-
FIXED_LINE_OR_MOBILE,
|
411
|
-
// Freephone lines
|
412
|
-
TOLL_FREE,
|
413
|
-
PREMIUM_RATE,
|
414
|
-
// The cost of this call is shared between the caller and the recipient, and is hence typically
|
415
|
-
// less than PREMIUM_RATE calls. See // http://en.wikipedia.org/wiki/Shared_Cost_Service for
|
416
|
-
// more information.
|
417
|
-
SHARED_COST,
|
418
|
-
// Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
|
419
|
-
VOIP,
|
420
|
-
// A personal number is associated with a particular person, and may be routed to either a
|
421
|
-
// MOBILE or FIXED_LINE number. Some more information can be found here:
|
422
|
-
// http://en.wikipedia.org/wiki/Personal_Numbers
|
423
|
-
PERSONAL_NUMBER,
|
424
|
-
PAGER,
|
425
|
-
// Used for "Universal Access Numbers" or "Company Numbers". They may be further routed to
|
426
|
-
// specific offices, but allow one number to be used for a company.
|
427
|
-
UAN,
|
428
|
-
// Used for "Voice Mail Access Numbers".
|
429
|
-
VOICEMAIL,
|
430
|
-
// A phone number is of type UNKNOWN when it does not fit any of the known patterns for a
|
431
|
-
// specific region.
|
432
|
-
UNKNOWN
|
433
|
-
}
|
434
|
-
|
435
|
-
/**
|
436
|
-
* Types of phone number matches. See detailed description beside the isNumberMatch() method.
|
437
|
-
*/
|
438
|
-
public enum MatchType {
|
439
|
-
NOT_A_NUMBER,
|
440
|
-
NO_MATCH,
|
441
|
-
SHORT_NSN_MATCH,
|
442
|
-
NSN_MATCH,
|
443
|
-
EXACT_MATCH,
|
444
|
-
}
|
445
|
-
|
446
|
-
/**
|
447
|
-
* Possible outcomes when testing if a PhoneNumber is possible.
|
448
|
-
*/
|
449
|
-
public enum ValidationResult {
|
450
|
-
IS_POSSIBLE,
|
451
|
-
INVALID_COUNTRY_CODE,
|
452
|
-
TOO_SHORT,
|
453
|
-
TOO_LONG,
|
454
|
-
}
|
455
|
-
|
456
|
-
/**
|
457
|
-
* Leniency when {@linkplain PhoneNumberUtil#findNumbers finding} potential phone numbers in text
|
458
|
-
* segments. The levels here are ordered in increasing strictness.
|
459
|
-
*/
|
460
|
-
public enum Leniency {
|
461
|
-
/**
|
462
|
-
* Phone numbers accepted are {@linkplain PhoneNumberUtil#isPossibleNumber(PhoneNumber)
|
463
|
-
* possible}, but not necessarily {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid}.
|
464
|
-
*/
|
465
|
-
POSSIBLE {
|
466
|
-
@Override
|
467
|
-
boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
|
468
|
-
return util.isPossibleNumber(number);
|
469
|
-
}
|
470
|
-
},
|
471
|
-
/**
|
472
|
-
* Phone numbers accepted are {@linkplain PhoneNumberUtil#isPossibleNumber(PhoneNumber)
|
473
|
-
* possible} and {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid}. Numbers written
|
474
|
-
* in national format must have their national-prefix present if it is usually written for a
|
475
|
-
* number of this type.
|
476
|
-
*/
|
477
|
-
VALID {
|
478
|
-
@Override
|
479
|
-
boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
|
480
|
-
if (!util.isValidNumber(number) ||
|
481
|
-
!PhoneNumberMatcher.containsOnlyValidXChars(number, candidate, util)) {
|
482
|
-
return false;
|
483
|
-
}
|
484
|
-
return PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util);
|
485
|
-
}
|
486
|
-
},
|
487
|
-
/**
|
488
|
-
* Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and
|
489
|
-
* are grouped in a possible way for this locale. For example, a US number written as
|
490
|
-
* "65 02 53 00 00" and "650253 0000" are not accepted at this leniency level, whereas
|
491
|
-
* "650 253 0000", "650 2530000" or "6502530000" are.
|
492
|
-
* Numbers with more than one '/' symbol in the national significant number are also dropped at
|
493
|
-
* this level.
|
494
|
-
* <p>
|
495
|
-
* Warning: This level might result in lower coverage especially for regions outside of country
|
496
|
-
* code "+1". If you are not sure about which level to use, email the discussion group
|
497
|
-
* libphonenumber-discuss@googlegroups.com.
|
498
|
-
*/
|
499
|
-
STRICT_GROUPING {
|
500
|
-
@Override
|
501
|
-
boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
|
502
|
-
if (!util.isValidNumber(number) ||
|
503
|
-
!PhoneNumberMatcher.containsOnlyValidXChars(number, candidate, util) ||
|
504
|
-
PhoneNumberMatcher.containsMoreThanOneSlashInNationalNumber(number, candidate) ||
|
505
|
-
!PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util)) {
|
506
|
-
return false;
|
507
|
-
}
|
508
|
-
return PhoneNumberMatcher.checkNumberGroupingIsValid(
|
509
|
-
number, candidate, util, new PhoneNumberMatcher.NumberGroupingChecker() {
|
510
|
-
@Override
|
511
|
-
public boolean checkGroups(PhoneNumberUtil util, PhoneNumber number,
|
512
|
-
StringBuilder normalizedCandidate,
|
513
|
-
String[] expectedNumberGroups) {
|
514
|
-
return PhoneNumberMatcher.allNumberGroupsRemainGrouped(
|
515
|
-
util, number, normalizedCandidate, expectedNumberGroups);
|
516
|
-
}
|
517
|
-
});
|
518
|
-
}
|
519
|
-
},
|
520
|
-
/**
|
521
|
-
* Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and
|
522
|
-
* are grouped in the same way that we would have formatted it, or as a single block. For
|
523
|
-
* example, a US number written as "650 2530000" is not accepted at this leniency level, whereas
|
524
|
-
* "650 253 0000" or "6502530000" are.
|
525
|
-
* Numbers with more than one '/' symbol are also dropped at this level.
|
526
|
-
* <p>
|
527
|
-
* Warning: This level might result in lower coverage especially for regions outside of country
|
528
|
-
* code "+1". If you are not sure about which level to use, email the discussion group
|
529
|
-
* libphonenumber-discuss@googlegroups.com.
|
530
|
-
*/
|
531
|
-
EXACT_GROUPING {
|
532
|
-
@Override
|
533
|
-
boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
|
534
|
-
if (!util.isValidNumber(number) ||
|
535
|
-
!PhoneNumberMatcher.containsOnlyValidXChars(number, candidate, util) ||
|
536
|
-
PhoneNumberMatcher.containsMoreThanOneSlashInNationalNumber(number, candidate) ||
|
537
|
-
!PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util)) {
|
538
|
-
return false;
|
539
|
-
}
|
540
|
-
return PhoneNumberMatcher.checkNumberGroupingIsValid(
|
541
|
-
number, candidate, util, new PhoneNumberMatcher.NumberGroupingChecker() {
|
542
|
-
@Override
|
543
|
-
public boolean checkGroups(PhoneNumberUtil util, PhoneNumber number,
|
544
|
-
StringBuilder normalizedCandidate,
|
545
|
-
String[] expectedNumberGroups) {
|
546
|
-
return PhoneNumberMatcher.allNumberGroupsAreExactlyPresent(
|
547
|
-
util, number, normalizedCandidate, expectedNumberGroups);
|
548
|
-
}
|
549
|
-
});
|
550
|
-
}
|
551
|
-
};
|
552
|
-
|
553
|
-
/** Returns true if {@code number} is a verified number according to this leniency. */
|
554
|
-
abstract boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util);
|
555
|
-
}
|
556
|
-
|
557
|
-
// A source of metadata for different regions.
|
558
|
-
private final MetadataSource metadataSource;
|
559
|
-
|
560
|
-
// A mapping from a country calling code to the region codes which denote the region represented
|
561
|
-
// by that country calling code. In the case of multiple regions sharing a calling code, such as
|
562
|
-
// the NANPA regions, the one indicated with "isMainCountryForCode" in the metadata should be
|
563
|
-
// first.
|
564
|
-
private final Map<Integer, List<String>> countryCallingCodeToRegionCodeMap;
|
565
|
-
|
566
|
-
// The set of regions that share country calling code 1.
|
567
|
-
// There are roughly 26 regions.
|
568
|
-
// We set the initial capacity of the HashSet to 35 to offer a load factor of roughly 0.75.
|
569
|
-
private final Set<String> nanpaRegions = new HashSet<String>(35);
|
570
|
-
|
571
|
-
// A cache for frequently used region-specific regular expressions.
|
572
|
-
// The initial capacity is set to 100 as this seems to be an optimal value for Android, based on
|
573
|
-
// performance measurements.
|
574
|
-
private final RegexCache regexCache = new RegexCache(100);
|
575
|
-
|
576
|
-
// The set of regions the library supports.
|
577
|
-
// There are roughly 240 of them and we set the initial capacity of the HashSet to 320 to offer a
|
578
|
-
// load factor of roughly 0.75.
|
579
|
-
private final Set<String> supportedRegions = new HashSet<String>(320);
|
580
|
-
|
581
|
-
// The set of country calling codes that map to the non-geo entity region ("001"). This set
|
582
|
-
// currently contains < 12 elements so the default capacity of 16 (load factor=0.75) is fine.
|
583
|
-
private final Set<Integer> countryCodesForNonGeographicalRegion = new HashSet<Integer>();
|
584
|
-
|
585
|
-
/**
|
586
|
-
* This class implements a singleton, the constructor is only visible to facilitate testing.
|
587
|
-
*/
|
588
|
-
// @VisibleForTesting
|
589
|
-
PhoneNumberUtil(MetadataSource metadataSource,
|
590
|
-
Map<Integer, List<String>> countryCallingCodeToRegionCodeMap) {
|
591
|
-
this.metadataSource = metadataSource;
|
592
|
-
this.countryCallingCodeToRegionCodeMap = countryCallingCodeToRegionCodeMap;
|
593
|
-
for (Map.Entry<Integer, List<String>> entry : countryCallingCodeToRegionCodeMap.entrySet()) {
|
594
|
-
List<String> regionCodes = entry.getValue();
|
595
|
-
// We can assume that if the country calling code maps to the non-geo entity region code then
|
596
|
-
// that's the only region code it maps to.
|
597
|
-
if (regionCodes.size() == 1 && REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))) {
|
598
|
-
// This is the subset of all country codes that map to the non-geo entity region code.
|
599
|
-
countryCodesForNonGeographicalRegion.add(entry.getKey());
|
600
|
-
} else {
|
601
|
-
// The supported regions set does not include the "001" non-geo entity region code.
|
602
|
-
supportedRegions.addAll(regionCodes);
|
603
|
-
}
|
604
|
-
}
|
605
|
-
// If the non-geo entity still got added to the set of supported regions it must be because
|
606
|
-
// there are entries that list the non-geo entity alongside normal regions (which is wrong).
|
607
|
-
// If we discover this, remove the non-geo entity from the set of supported regions and log.
|
608
|
-
if (supportedRegions.remove(REGION_CODE_FOR_NON_GEO_ENTITY)) {
|
609
|
-
logger.log(Level.WARNING, "invalid metadata " +
|
610
|
-
"(country calling code was mapped to the non-geo entity as well as specific region(s))");
|
611
|
-
}
|
612
|
-
nanpaRegions.addAll(countryCallingCodeToRegionCodeMap.get(NANPA_COUNTRY_CODE));
|
613
|
-
}
|
614
|
-
|
615
|
-
/**
|
616
|
-
* Returns a copy of the given NumberFormat object.
|
617
|
-
*/
|
618
|
-
static NumberFormat copyNumberFormat(NumberFormat other) {
|
619
|
-
NumberFormat copy = new NumberFormat();
|
620
|
-
copy.pattern = other.pattern;
|
621
|
-
copy.format = other.format;
|
622
|
-
int leadingDigitsPatternSize = other.leadingDigitsPattern.length;
|
623
|
-
copy.leadingDigitsPattern = new String[leadingDigitsPatternSize];
|
624
|
-
for (int i = 0; i < leadingDigitsPatternSize; i++) {
|
625
|
-
copy.leadingDigitsPattern[i] = other.leadingDigitsPattern[i];
|
626
|
-
}
|
627
|
-
copy.nationalPrefixFormattingRule = other.nationalPrefixFormattingRule;
|
628
|
-
copy.domesticCarrierCodeFormattingRule = other.domesticCarrierCodeFormattingRule;
|
629
|
-
copy.nationalPrefixOptionalWhenFormatting = other.nationalPrefixOptionalWhenFormatting;
|
630
|
-
return copy;
|
631
|
-
}
|
632
|
-
|
633
|
-
/**
|
634
|
-
* Attempts to extract a possible number from the string passed in. This currently strips all
|
635
|
-
* leading characters that cannot be used to start a phone number. Characters that can be used to
|
636
|
-
* start a phone number are defined in the VALID_START_CHAR_PATTERN. If none of these characters
|
637
|
-
* are found in the number passed in, an empty string is returned. This function also attempts to
|
638
|
-
* strip off any alternative extensions or endings if two or more are present, such as in the case
|
639
|
-
* of: (530) 583-6985 x302/x2303. The second extension here makes this actually two phone numbers,
|
640
|
-
* (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second extension so that the first
|
641
|
-
* number is parsed correctly.
|
642
|
-
*
|
643
|
-
* @param number the string that might contain a phone number
|
644
|
-
* @return the number, stripped of any non-phone-number prefix (such as "Tel:") or an empty
|
645
|
-
* string if no character used to start phone numbers (such as + or any digit) is
|
646
|
-
* found in the number
|
647
|
-
*/
|
648
|
-
static String extractPossibleNumber(String number) {
|
649
|
-
Matcher m = VALID_START_CHAR_PATTERN.matcher(number);
|
650
|
-
if (m.find()) {
|
651
|
-
number = number.substring(m.start());
|
652
|
-
// Remove trailing non-alpha non-numerical characters.
|
653
|
-
Matcher trailingCharsMatcher = UNWANTED_END_CHAR_PATTERN.matcher(number);
|
654
|
-
if (trailingCharsMatcher.find()) {
|
655
|
-
number = number.substring(0, trailingCharsMatcher.start());
|
656
|
-
logger.log(Level.FINER, "Stripped trailing characters: " + number);
|
657
|
-
}
|
658
|
-
// Check for extra numbers at the end.
|
659
|
-
Matcher secondNumber = SECOND_NUMBER_START_PATTERN.matcher(number);
|
660
|
-
if (secondNumber.find()) {
|
661
|
-
number = number.substring(0, secondNumber.start());
|
662
|
-
}
|
663
|
-
return number;
|
664
|
-
} else {
|
665
|
-
return "";
|
666
|
-
}
|
667
|
-
}
|
668
|
-
|
669
|
-
/**
|
670
|
-
* Checks to see if the string of characters could possibly be a phone number at all. At the
|
671
|
-
* moment, checks to see that the string begins with at least 2 digits, ignoring any punctuation
|
672
|
-
* commonly found in phone numbers.
|
673
|
-
* This method does not require the number to be normalized in advance - but does assume that
|
674
|
-
* leading non-number symbols have been removed, such as by the method extractPossibleNumber.
|
675
|
-
*
|
676
|
-
* @param number string to be checked for viability as a phone number
|
677
|
-
* @return true if the number could be a phone number of some sort, otherwise false
|
678
|
-
*/
|
679
|
-
// @VisibleForTesting
|
680
|
-
static boolean isViablePhoneNumber(String number) {
|
681
|
-
if (number.length() < MIN_LENGTH_FOR_NSN) {
|
682
|
-
return false;
|
683
|
-
}
|
684
|
-
Matcher m = VALID_PHONE_NUMBER_PATTERN.matcher(number);
|
685
|
-
return m.matches();
|
686
|
-
}
|
687
|
-
|
688
|
-
/**
|
689
|
-
* Normalizes a string of characters representing a phone number. This performs the following
|
690
|
-
* conversions:
|
691
|
-
* Punctuation is stripped.
|
692
|
-
* For ALPHA/VANITY numbers:
|
693
|
-
* Letters are converted to their numeric representation on a telephone keypad. The keypad
|
694
|
-
* used here is the one defined in ITU Recommendation E.161. This is only done if there are
|
695
|
-
* 3 or more letters in the number, to lessen the risk that such letters are typos.
|
696
|
-
* For other numbers:
|
697
|
-
* Wide-ascii digits are converted to normal ASCII (European) digits.
|
698
|
-
* Arabic-Indic numerals are converted to European numerals.
|
699
|
-
* Spurious alpha characters are stripped.
|
700
|
-
*
|
701
|
-
* @param number a string of characters representing a phone number
|
702
|
-
* @return the normalized string version of the phone number
|
703
|
-
*/
|
704
|
-
static String normalize(String number) {
|
705
|
-
Matcher m = VALID_ALPHA_PHONE_PATTERN.matcher(number);
|
706
|
-
if (m.matches()) {
|
707
|
-
return normalizeHelper(number, ALPHA_PHONE_MAPPINGS, true);
|
708
|
-
} else {
|
709
|
-
return normalizeDigitsOnly(number);
|
710
|
-
}
|
711
|
-
}
|
712
|
-
|
713
|
-
/**
|
714
|
-
* Normalizes a string of characters representing a phone number. This is a wrapper for
|
715
|
-
* normalize(String number) but does in-place normalization of the StringBuilder provided.
|
716
|
-
*
|
717
|
-
* @param number a StringBuilder of characters representing a phone number that will be
|
718
|
-
* normalized in place
|
719
|
-
*/
|
720
|
-
static void normalize(StringBuilder number) {
|
721
|
-
String normalizedNumber = normalize(number.toString());
|
722
|
-
number.replace(0, number.length(), normalizedNumber);
|
723
|
-
}
|
724
|
-
|
725
|
-
/**
|
726
|
-
* Normalizes a string of characters representing a phone number. This converts wide-ascii and
|
727
|
-
* arabic-indic numerals to European numerals, and strips punctuation and alpha characters.
|
728
|
-
*
|
729
|
-
* @param number a string of characters representing a phone number
|
730
|
-
* @return the normalized string version of the phone number
|
731
|
-
*/
|
732
|
-
public static String normalizeDigitsOnly(String number) {
|
733
|
-
return normalizeDigits(number, false /* strip non-digits */).toString();
|
734
|
-
}
|
735
|
-
|
736
|
-
static StringBuilder normalizeDigits(String number, boolean keepNonDigits) {
|
737
|
-
StringBuilder normalizedDigits = new StringBuilder(number.length());
|
738
|
-
for (char c : number.toCharArray()) {
|
739
|
-
int digit = Character.digit(c, 10);
|
740
|
-
if (digit != -1) {
|
741
|
-
normalizedDigits.append(digit);
|
742
|
-
} else if (keepNonDigits) {
|
743
|
-
normalizedDigits.append(c);
|
744
|
-
}
|
745
|
-
}
|
746
|
-
return normalizedDigits;
|
747
|
-
}
|
748
|
-
|
749
|
-
/**
|
750
|
-
* Normalizes a string of characters representing a phone number. This strips all characters which
|
751
|
-
* are not diallable on a mobile phone keypad (including all non-ASCII digits).
|
752
|
-
*
|
753
|
-
* @param number a string of characters representing a phone number
|
754
|
-
* @return the normalized string version of the phone number
|
755
|
-
*/
|
756
|
-
static String normalizeDiallableCharsOnly(String number) {
|
757
|
-
return normalizeHelper(number, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */);
|
758
|
-
}
|
759
|
-
|
760
|
-
/**
|
761
|
-
* Converts all alpha characters in a number to their respective digits on a keypad, but retains
|
762
|
-
* existing formatting.
|
763
|
-
*/
|
764
|
-
public static String convertAlphaCharactersInNumber(String number) {
|
765
|
-
return normalizeHelper(number, ALPHA_PHONE_MAPPINGS, false);
|
766
|
-
}
|
767
|
-
|
768
|
-
/**
|
769
|
-
* Gets the length of the geographical area code from the
|
770
|
-
* PhoneNumber object passed in, so that clients could use it
|
771
|
-
* to split a national significant number into geographical area code and subscriber number. It
|
772
|
-
* works in such a way that the resultant subscriber number should be diallable, at least on some
|
773
|
-
* devices. An example of how this could be used:
|
774
|
-
*
|
775
|
-
* <pre>{@code
|
776
|
-
* PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
|
777
|
-
* PhoneNumber number = phoneUtil.parse("16502530000", "US");
|
778
|
-
* String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
|
779
|
-
* String areaCode;
|
780
|
-
* String subscriberNumber;
|
781
|
-
*
|
782
|
-
* int areaCodeLength = phoneUtil.getLengthOfGeographicalAreaCode(number);
|
783
|
-
* if (areaCodeLength > 0) {
|
784
|
-
* areaCode = nationalSignificantNumber.substring(0, areaCodeLength);
|
785
|
-
* subscriberNumber = nationalSignificantNumber.substring(areaCodeLength);
|
786
|
-
* } else {
|
787
|
-
* areaCode = "";
|
788
|
-
* subscriberNumber = nationalSignificantNumber;
|
789
|
-
* }
|
790
|
-
* }</pre>
|
791
|
-
*
|
792
|
-
* N.B.: area code is a very ambiguous concept, so the I18N team generally recommends against
|
793
|
-
* using it for most purposes, but recommends using the more general {@code national_number}
|
794
|
-
* instead. Read the following carefully before deciding to use this method:
|
795
|
-
* <ul>
|
796
|
-
* <li> geographical area codes change over time, and this method honors those changes;
|
797
|
-
* therefore, it doesn't guarantee the stability of the result it produces.
|
798
|
-
* <li> subscriber numbers may not be diallable from all devices (notably mobile devices, which
|
799
|
-
* typically requires the full national_number to be dialled in most regions).
|
800
|
-
* <li> most non-geographical numbers have no area codes, including numbers from non-geographical
|
801
|
-
* entities
|
802
|
-
* <li> some geographical numbers have no area codes.
|
803
|
-
* </ul>
|
804
|
-
* @param number the PhoneNumber object for which clients
|
805
|
-
* want to know the length of the area code.
|
806
|
-
* @return the length of area code of the PhoneNumber object
|
807
|
-
* passed in.
|
808
|
-
*/
|
809
|
-
public int getLengthOfGeographicalAreaCode(PhoneNumber number) {
|
810
|
-
PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
|
811
|
-
if (metadata == null) {
|
812
|
-
return 0;
|
813
|
-
}
|
814
|
-
// If a country doesn't use a national prefix, and this number doesn't have an Italian leading
|
815
|
-
// zero, we assume it is a closed dialling plan with no area codes.
|
816
|
-
if (metadata.nationalPrefix.equals("") && !number.isItalianLeadingZero()) {
|
817
|
-
return 0;
|
818
|
-
}
|
819
|
-
|
820
|
-
PhoneNumberType type = getNumberType(number);
|
821
|
-
int countryCallingCode = number.getCountryCode();
|
822
|
-
if (type == PhoneNumberType.MOBILE
|
823
|
-
// Note this is a rough heuristic; it doesn't cover Indonesia well, for example, where area
|
824
|
-
// codes are present for some mobile phones but not for others. We have no better way of
|
825
|
-
// representing this in the metadata at this point.
|
826
|
-
&& GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES.contains(countryCallingCode)) {
|
827
|
-
return 0;
|
828
|
-
}
|
829
|
-
|
830
|
-
if (!isNumberGeographical(type, countryCallingCode)) {
|
831
|
-
return 0;
|
832
|
-
}
|
833
|
-
|
834
|
-
return getLengthOfNationalDestinationCode(number);
|
835
|
-
}
|
836
|
-
|
837
|
-
/**
|
838
|
-
* Gets the length of the national destination code (NDC) from the
|
839
|
-
* PhoneNumber object passed in, so that clients could use it
|
840
|
-
* to split a national significant number into NDC and subscriber number. The NDC of a phone
|
841
|
-
* number is normally the first group of digit(s) right after the country calling code when the
|
842
|
-
* number is formatted in the international format, if there is a subscriber number part that
|
843
|
-
* follows. An example of how this could be used:
|
844
|
-
*
|
845
|
-
* <pre>{@code
|
846
|
-
* PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
|
847
|
-
* PhoneNumber number = phoneUtil.parse("18002530000", "US");
|
848
|
-
* String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
|
849
|
-
* String nationalDestinationCode;
|
850
|
-
* String subscriberNumber;
|
851
|
-
*
|
852
|
-
* int nationalDestinationCodeLength = phoneUtil.getLengthOfNationalDestinationCode(number);
|
853
|
-
* if (nationalDestinationCodeLength > 0) {
|
854
|
-
* nationalDestinationCode = nationalSignificantNumber.substring(0,
|
855
|
-
* nationalDestinationCodeLength);
|
856
|
-
* subscriberNumber = nationalSignificantNumber.substring(nationalDestinationCodeLength);
|
857
|
-
* } else {
|
858
|
-
* nationalDestinationCode = "";
|
859
|
-
* subscriberNumber = nationalSignificantNumber;
|
860
|
-
* }
|
861
|
-
* }</pre>
|
862
|
-
*
|
863
|
-
* Refer to the unittests to see the difference between this function and
|
864
|
-
* {@link #getLengthOfGeographicalAreaCode}.
|
865
|
-
*
|
866
|
-
* @param number the PhoneNumber object for which clients
|
867
|
-
* want to know the length of the NDC.
|
868
|
-
* @return the length of NDC of the PhoneNumber object
|
869
|
-
* passed in.
|
870
|
-
*/
|
871
|
-
public int getLengthOfNationalDestinationCode(PhoneNumber number) {
|
872
|
-
PhoneNumber copiedProto;
|
873
|
-
if (number.hasExtension()) {
|
874
|
-
// We don't want to alter the proto given to us, but we don't want to include the extension
|
875
|
-
// when we format it, so we copy it and clear the extension here.
|
876
|
-
copiedProto = new PhoneNumber();
|
877
|
-
copiedProto.mergeFrom(number);
|
878
|
-
copiedProto.clearExtension();
|
879
|
-
} else {
|
880
|
-
copiedProto = number;
|
881
|
-
}
|
882
|
-
|
883
|
-
String nationalSignificantNumber = format(copiedProto,
|
884
|
-
PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
|
885
|
-
String[] numberGroups = NON_DIGITS_PATTERN.split(nationalSignificantNumber);
|
886
|
-
// The pattern will start with "+COUNTRY_CODE " so the first group will always be the empty
|
887
|
-
// string (before the + symbol) and the second group will be the country calling code. The third
|
888
|
-
// group will be area code if it is not the last group.
|
889
|
-
if (numberGroups.length <= 3) {
|
890
|
-
return 0;
|
891
|
-
}
|
892
|
-
|
893
|
-
if (getNumberType(number) == PhoneNumberType.MOBILE) {
|
894
|
-
// For example Argentinian mobile numbers, when formatted in the international format, are in
|
895
|
-
// the form of +54 9 NDC XXXX.... As a result, we take the length of the third group (NDC) and
|
896
|
-
// add the length of the second group (which is the mobile token), which also forms part of
|
897
|
-
// the national significant number. This assumes that the mobile token is always formatted
|
898
|
-
// separately from the rest of the phone number.
|
899
|
-
String mobileToken = getCountryMobileToken(number.getCountryCode());
|
900
|
-
if (!mobileToken.equals("")) {
|
901
|
-
return numberGroups[2].length() + numberGroups[3].length();
|
902
|
-
}
|
903
|
-
}
|
904
|
-
return numberGroups[2].length();
|
905
|
-
}
|
906
|
-
|
907
|
-
/**
|
908
|
-
* Returns the mobile token for the provided country calling code if it has one, otherwise
|
909
|
-
* returns an empty string. A mobile token is a number inserted before the area code when dialing
|
910
|
-
* a mobile number from that country from abroad.
|
911
|
-
*
|
912
|
-
* @param countryCallingCode the country calling code for which we want the mobile token
|
913
|
-
* @return the mobile token, as a string, for the given country calling code
|
914
|
-
*/
|
915
|
-
public static String getCountryMobileToken(int countryCallingCode) {
|
916
|
-
if (MOBILE_TOKEN_MAPPINGS.containsKey(countryCallingCode)) {
|
917
|
-
return MOBILE_TOKEN_MAPPINGS.get(countryCallingCode);
|
918
|
-
}
|
919
|
-
return "";
|
920
|
-
}
|
921
|
-
|
922
|
-
/**
|
923
|
-
* Normalizes a string of characters representing a phone number by replacing all characters found
|
924
|
-
* in the accompanying map with the values therein, and stripping all other characters if
|
925
|
-
* removeNonMatches is true.
|
926
|
-
*
|
927
|
-
* @param number a string of characters representing a phone number
|
928
|
-
* @param normalizationReplacements a mapping of characters to what they should be replaced by in
|
929
|
-
* the normalized version of the phone number
|
930
|
-
* @param removeNonMatches indicates whether characters that are not able to be replaced
|
931
|
-
* should be stripped from the number. If this is false, they
|
932
|
-
* will be left unchanged in the number.
|
933
|
-
* @return the normalized string version of the phone number
|
934
|
-
*/
|
935
|
-
private static String normalizeHelper(String number,
|
936
|
-
Map<Character, Character> normalizationReplacements,
|
937
|
-
boolean removeNonMatches) {
|
938
|
-
StringBuilder normalizedNumber = new StringBuilder(number.length());
|
939
|
-
for (int i = 0; i < number.length(); i++) {
|
940
|
-
char character = number.charAt(i);
|
941
|
-
Character newDigit = normalizationReplacements.get(Character.toUpperCase(character));
|
942
|
-
if (newDigit != null) {
|
943
|
-
normalizedNumber.append(newDigit);
|
944
|
-
} else if (!removeNonMatches) {
|
945
|
-
normalizedNumber.append(character);
|
946
|
-
}
|
947
|
-
// If neither of the above are true, we remove this character.
|
948
|
-
}
|
949
|
-
return normalizedNumber.toString();
|
950
|
-
}
|
951
|
-
|
952
|
-
/**
|
953
|
-
* Sets or resets the PhoneNumberUtil singleton instance. If set to null, the next call to
|
954
|
-
* {@code getInstance()} will load (and return) the default instance.
|
955
|
-
*/
|
956
|
-
// @VisibleForTesting
|
957
|
-
static synchronized void setInstance(PhoneNumberUtil util) {
|
958
|
-
instance = util;
|
959
|
-
}
|
960
|
-
|
961
|
-
/**
|
962
|
-
* Convenience method to get a list of what regions the library has metadata for.
|
963
|
-
*/
|
964
|
-
public Set<String> getSupportedRegions() {
|
965
|
-
return Collections.unmodifiableSet(supportedRegions);
|
966
|
-
}
|
967
|
-
|
968
|
-
/**
|
969
|
-
* Convenience method to get a list of what global network calling codes the library has metadata
|
970
|
-
* for.
|
971
|
-
*/
|
972
|
-
public Set<Integer> getSupportedGlobalNetworkCallingCodes() {
|
973
|
-
return Collections.unmodifiableSet(countryCodesForNonGeographicalRegion);
|
974
|
-
}
|
975
|
-
|
976
|
-
/**
|
977
|
-
* Gets a {@link PhoneNumberUtil} instance to carry out international phone number formatting,
|
978
|
-
* parsing, or validation. The instance is loaded with phone number metadata for a number of most
|
979
|
-
* commonly used regions.
|
980
|
-
*
|
981
|
-
* <p>The {@link PhoneNumberUtil} is implemented as a singleton. Therefore, calling getInstance
|
982
|
-
* multiple times will only result in one instance being created.
|
983
|
-
*
|
984
|
-
* @return a PhoneNumberUtil instance
|
985
|
-
*/
|
986
|
-
public static synchronized PhoneNumberUtil getInstance() {
|
987
|
-
if (instance == null) {
|
988
|
-
setInstance(createInstance(DEFAULT_METADATA_LOADER));
|
989
|
-
}
|
990
|
-
return instance;
|
991
|
-
}
|
992
|
-
|
993
|
-
/**
|
994
|
-
* Create a new {@link PhoneNumberUtil} instance to carry out international phone number
|
995
|
-
* formatting, parsing, or validation. The instance is loaded with all metadata by
|
996
|
-
* using the metadataSource specified.
|
997
|
-
*
|
998
|
-
* This method should only be used in the rare case in which you want to manage your own
|
999
|
-
* metadata loading. Calling this method multiple times is very expensive, as each time
|
1000
|
-
* a new instance is created from scratch. When in doubt, use {@link #getInstance}.
|
1001
|
-
*
|
1002
|
-
* @param metadataSource Customized metadata source. This should not be null.
|
1003
|
-
* @return a PhoneNumberUtil instance
|
1004
|
-
*/
|
1005
|
-
public static PhoneNumberUtil createInstance(MetadataSource metadataSource) {
|
1006
|
-
if (metadataSource == null) {
|
1007
|
-
throw new IllegalArgumentException("metadataSource could not be null.");
|
1008
|
-
}
|
1009
|
-
return new PhoneNumberUtil(metadataSource,
|
1010
|
-
CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap());
|
1011
|
-
}
|
1012
|
-
|
1013
|
-
/**
|
1014
|
-
* Create a new {@link PhoneNumberUtil} instance to carry out international phone number
|
1015
|
-
* formatting, parsing, or validation. The instance is loaded with all metadata by
|
1016
|
-
* using the metadataLoader specified.
|
1017
|
-
*
|
1018
|
-
* This method should only be used in the rare case in which you want to manage your own
|
1019
|
-
* metadata loading. Calling this method multiple times is very expensive, as each time
|
1020
|
-
* a new instance is created from scratch. When in doubt, use {@link #getInstance}.
|
1021
|
-
*
|
1022
|
-
* @param metadataLoader Customized metadata loader. This should not be null.
|
1023
|
-
* @return a PhoneNumberUtil instance
|
1024
|
-
*/
|
1025
|
-
public static PhoneNumberUtil createInstance(MetadataLoader metadataLoader) {
|
1026
|
-
if (metadataLoader == null) {
|
1027
|
-
throw new IllegalArgumentException("metadataLoader could not be null.");
|
1028
|
-
}
|
1029
|
-
return createInstance(new MultiFileMetadataSourceImpl(metadataLoader));
|
1030
|
-
}
|
1031
|
-
|
1032
|
-
/**
|
1033
|
-
* Helper function to check if the national prefix formatting rule has the first group only, i.e.,
|
1034
|
-
* does not start with the national prefix.
|
1035
|
-
*/
|
1036
|
-
static boolean formattingRuleHasFirstGroupOnly(String nationalPrefixFormattingRule) {
|
1037
|
-
return nationalPrefixFormattingRule.length() == 0 ||
|
1038
|
-
FIRST_GROUP_ONLY_PREFIX_PATTERN.matcher(nationalPrefixFormattingRule).matches();
|
1039
|
-
}
|
1040
|
-
|
1041
|
-
/**
|
1042
|
-
* Tests whether a phone number has a geographical association. It checks if the number is
|
1043
|
-
* associated to a certain region in the country where it belongs to. Note that this doesn't
|
1044
|
-
* verify if the number is actually in use.
|
1045
|
-
*/
|
1046
|
-
public boolean isNumberGeographical(PhoneNumber phoneNumber) {
|
1047
|
-
return isNumberGeographical(getNumberType(phoneNumber), phoneNumber.getCountryCode());
|
1048
|
-
}
|
1049
|
-
|
1050
|
-
/**
|
1051
|
-
* Tests whether a phone number has a geographical association, as represented by its type and the
|
1052
|
-
* country it belongs to.
|
1053
|
-
*
|
1054
|
-
* This version of isNumberGeographical exists since calculating the phone number type is
|
1055
|
-
* expensive; if we have already done this, we don't want to do it again.
|
1056
|
-
*/
|
1057
|
-
public boolean isNumberGeographical(PhoneNumberType numberType, int countryCallingCode) {
|
1058
|
-
return numberType == PhoneNumberType.FIXED_LINE
|
1059
|
-
|| numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE
|
1060
|
-
|| (GEO_MOBILE_COUNTRIES.contains(countryCallingCode)
|
1061
|
-
&& numberType == PhoneNumberType.MOBILE);
|
1062
|
-
}
|
1063
|
-
|
1064
|
-
/**
|
1065
|
-
* Helper function to check region code is not unknown or null.
|
1066
|
-
*/
|
1067
|
-
private boolean isValidRegionCode(String regionCode) {
|
1068
|
-
return regionCode != null && supportedRegions.contains(regionCode);
|
1069
|
-
}
|
1070
|
-
|
1071
|
-
/**
|
1072
|
-
* Helper function to check the country calling code is valid.
|
1073
|
-
*/
|
1074
|
-
private boolean hasValidCountryCallingCode(int countryCallingCode) {
|
1075
|
-
return countryCallingCodeToRegionCodeMap.containsKey(countryCallingCode);
|
1076
|
-
}
|
1077
|
-
|
1078
|
-
/**
|
1079
|
-
* Formats a phone number in the specified format using default rules. Note that this does not
|
1080
|
-
* promise to produce a phone number that the user can dial from where they are - although we do
|
1081
|
-
* format in either 'national' or 'international' format depending on what the client asks for, we
|
1082
|
-
* do not currently support a more abbreviated format, such as for users in the same "area" who
|
1083
|
-
* could potentially dial the number without area code. Note that if the phone number has a
|
1084
|
-
* country calling code of 0 or an otherwise invalid country calling code, we cannot work out
|
1085
|
-
* which formatting rules to apply so we return the national significant number with no formatting
|
1086
|
-
* applied.
|
1087
|
-
*
|
1088
|
-
* @param number the phone number to be formatted
|
1089
|
-
* @param numberFormat the format the phone number should be formatted into
|
1090
|
-
* @return the formatted phone number
|
1091
|
-
*/
|
1092
|
-
public String format(PhoneNumber number, PhoneNumberFormat numberFormat) {
|
1093
|
-
if (number.getNationalNumber() == 0 && number.hasRawInput()) {
|
1094
|
-
// Unparseable numbers that kept their raw input just use that.
|
1095
|
-
// This is the only case where a number can be formatted as E164 without a
|
1096
|
-
// leading '+' symbol (but the original number wasn't parseable anyway).
|
1097
|
-
// TODO: Consider removing the 'if' above so that unparseable
|
1098
|
-
// strings without raw input format to the empty string instead of "+00"
|
1099
|
-
String rawInput = number.getRawInput();
|
1100
|
-
if (rawInput.length() > 0) {
|
1101
|
-
return rawInput;
|
1102
|
-
}
|
1103
|
-
}
|
1104
|
-
StringBuilder formattedNumber = new StringBuilder(20);
|
1105
|
-
format(number, numberFormat, formattedNumber);
|
1106
|
-
return formattedNumber.toString();
|
1107
|
-
}
|
1108
|
-
|
1109
|
-
/**
|
1110
|
-
* Same as {@link #format(PhoneNumber, PhoneNumberFormat)}, but accepts a mutable StringBuilder as
|
1111
|
-
* a parameter to decrease object creation when invoked many times.
|
1112
|
-
*/
|
1113
|
-
public void format(PhoneNumber number, PhoneNumberFormat numberFormat,
|
1114
|
-
StringBuilder formattedNumber) {
|
1115
|
-
// Clear the StringBuilder first.
|
1116
|
-
formattedNumber.setLength(0);
|
1117
|
-
int countryCallingCode = number.getCountryCode();
|
1118
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
1119
|
-
|
1120
|
-
if (numberFormat == PhoneNumberFormat.E164) {
|
1121
|
-
// Early exit for E164 case (even if the country calling code is invalid) since no formatting
|
1122
|
-
// of the national number needs to be applied. Extensions are not formatted.
|
1123
|
-
formattedNumber.append(nationalSignificantNumber);
|
1124
|
-
prefixNumberWithCountryCallingCode(countryCallingCode, PhoneNumberFormat.E164,
|
1125
|
-
formattedNumber);
|
1126
|
-
return;
|
1127
|
-
}
|
1128
|
-
if (!hasValidCountryCallingCode(countryCallingCode)) {
|
1129
|
-
formattedNumber.append(nationalSignificantNumber);
|
1130
|
-
return;
|
1131
|
-
}
|
1132
|
-
// Note getRegionCodeForCountryCode() is used because formatting information for regions which
|
1133
|
-
// share a country calling code is contained by only one region for performance reasons. For
|
1134
|
-
// example, for NANPA regions it will be contained in the metadata for US.
|
1135
|
-
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
|
1136
|
-
// Metadata cannot be null because the country calling code is valid (which means that the
|
1137
|
-
// region code cannot be ZZ and must be one of our supported region codes).
|
1138
|
-
PhoneMetadata metadata =
|
1139
|
-
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
|
1140
|
-
formattedNumber.append(formatNsn(nationalSignificantNumber, metadata, numberFormat));
|
1141
|
-
maybeAppendFormattedExtension(number, metadata, numberFormat, formattedNumber);
|
1142
|
-
prefixNumberWithCountryCallingCode(countryCallingCode, numberFormat, formattedNumber);
|
1143
|
-
}
|
1144
|
-
|
1145
|
-
/**
|
1146
|
-
* Formats a phone number in the specified format using client-defined formatting rules. Note that
|
1147
|
-
* if the phone number has a country calling code of zero or an otherwise invalid country calling
|
1148
|
-
* code, we cannot work out things like whether there should be a national prefix applied, or how
|
1149
|
-
* to format extensions, so we return the national significant number with no formatting applied.
|
1150
|
-
*
|
1151
|
-
* @param number the phone number to be formatted
|
1152
|
-
* @param numberFormat the format the phone number should be formatted into
|
1153
|
-
* @param userDefinedFormats formatting rules specified by clients
|
1154
|
-
* @return the formatted phone number
|
1155
|
-
*/
|
1156
|
-
public String formatByPattern(PhoneNumber number,
|
1157
|
-
PhoneNumberFormat numberFormat,
|
1158
|
-
List<NumberFormat> userDefinedFormats) {
|
1159
|
-
int countryCallingCode = number.getCountryCode();
|
1160
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
1161
|
-
if (!hasValidCountryCallingCode(countryCallingCode)) {
|
1162
|
-
return nationalSignificantNumber;
|
1163
|
-
}
|
1164
|
-
// Note getRegionCodeForCountryCode() is used because formatting information for regions which
|
1165
|
-
// share a country calling code is contained by only one region for performance reasons. For
|
1166
|
-
// example, for NANPA regions it will be contained in the metadata for US.
|
1167
|
-
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
|
1168
|
-
// Metadata cannot be null because the country calling code is valid
|
1169
|
-
PhoneMetadata metadata =
|
1170
|
-
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
|
1171
|
-
|
1172
|
-
StringBuilder formattedNumber = new StringBuilder(20);
|
1173
|
-
|
1174
|
-
NumberFormat formattingPattern =
|
1175
|
-
chooseFormattingPatternForNumber(userDefinedFormats.toArray(
|
1176
|
-
new NumberFormat[userDefinedFormats.size()]), nationalSignificantNumber);
|
1177
|
-
if (formattingPattern == null) {
|
1178
|
-
// If no pattern above is matched, we format the number as a whole.
|
1179
|
-
formattedNumber.append(nationalSignificantNumber);
|
1180
|
-
} else {
|
1181
|
-
// Before we do a replacement of the national prefix pattern $NP with the national prefix, we
|
1182
|
-
// need to copy the rule so that subsequent replacements for different numbers have the
|
1183
|
-
// appropriate national prefix.
|
1184
|
-
NumberFormat numFormatCopy = copyNumberFormat(formattingPattern);
|
1185
|
-
String nationalPrefixFormattingRule = formattingPattern.nationalPrefixFormattingRule;
|
1186
|
-
if (nationalPrefixFormattingRule.length() > 0) {
|
1187
|
-
String nationalPrefix = metadata.nationalPrefix;
|
1188
|
-
if (nationalPrefix.length() > 0) {
|
1189
|
-
// Replace $NP with national prefix and $FG with the first group ($1).
|
1190
|
-
nationalPrefixFormattingRule =
|
1191
|
-
NP_PATTERN.matcher(nationalPrefixFormattingRule).replaceFirst(nationalPrefix);
|
1192
|
-
nationalPrefixFormattingRule =
|
1193
|
-
FG_PATTERN.matcher(nationalPrefixFormattingRule).replaceFirst("\\$1");
|
1194
|
-
numFormatCopy.nationalPrefixFormattingRule = nationalPrefixFormattingRule;
|
1195
|
-
} else {
|
1196
|
-
// We don't want to have a rule for how to format the national prefix if there isn't one.
|
1197
|
-
numFormatCopy.nationalPrefixFormattingRule = "";
|
1198
|
-
}
|
1199
|
-
}
|
1200
|
-
formattedNumber.append(
|
1201
|
-
formatNsnUsingPattern(nationalSignificantNumber, numFormatCopy, numberFormat));
|
1202
|
-
}
|
1203
|
-
maybeAppendFormattedExtension(number, metadata, numberFormat, formattedNumber);
|
1204
|
-
prefixNumberWithCountryCallingCode(countryCallingCode, numberFormat, formattedNumber);
|
1205
|
-
return formattedNumber.toString();
|
1206
|
-
}
|
1207
|
-
|
1208
|
-
/**
|
1209
|
-
* Formats a phone number in national format for dialing using the carrier as specified in the
|
1210
|
-
* {@code carrierCode}. The {@code carrierCode} will always be used regardless of whether the
|
1211
|
-
* phone number already has a preferred domestic carrier code stored. If {@code carrierCode}
|
1212
|
-
* contains an empty string, returns the number in national format without any carrier code.
|
1213
|
-
*
|
1214
|
-
* @param number the phone number to be formatted
|
1215
|
-
* @param carrierCode the carrier selection code to be used
|
1216
|
-
* @return the formatted phone number in national format for dialing using the carrier as
|
1217
|
-
* specified in the {@code carrierCode}
|
1218
|
-
*/
|
1219
|
-
public String formatNationalNumberWithCarrierCode(PhoneNumber number, String carrierCode) {
|
1220
|
-
int countryCallingCode = number.getCountryCode();
|
1221
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
1222
|
-
if (!hasValidCountryCallingCode(countryCallingCode)) {
|
1223
|
-
return nationalSignificantNumber;
|
1224
|
-
}
|
1225
|
-
|
1226
|
-
// Note getRegionCodeForCountryCode() is used because formatting information for regions which
|
1227
|
-
// share a country calling code is contained by only one region for performance reasons. For
|
1228
|
-
// example, for NANPA regions it will be contained in the metadata for US.
|
1229
|
-
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
|
1230
|
-
// Metadata cannot be null because the country calling code is valid.
|
1231
|
-
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
|
1232
|
-
|
1233
|
-
StringBuilder formattedNumber = new StringBuilder(20);
|
1234
|
-
formattedNumber.append(formatNsn(nationalSignificantNumber, metadata,
|
1235
|
-
PhoneNumberFormat.NATIONAL, carrierCode));
|
1236
|
-
maybeAppendFormattedExtension(number, metadata, PhoneNumberFormat.NATIONAL, formattedNumber);
|
1237
|
-
prefixNumberWithCountryCallingCode(countryCallingCode, PhoneNumberFormat.NATIONAL,
|
1238
|
-
formattedNumber);
|
1239
|
-
return formattedNumber.toString();
|
1240
|
-
}
|
1241
|
-
|
1242
|
-
private PhoneMetadata getMetadataForRegionOrCallingCode(
|
1243
|
-
int countryCallingCode, String regionCode) {
|
1244
|
-
return REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)
|
1245
|
-
? getMetadataForNonGeographicalRegion(countryCallingCode)
|
1246
|
-
: getMetadataForRegion(regionCode);
|
1247
|
-
}
|
1248
|
-
|
1249
|
-
/**
|
1250
|
-
* Formats a phone number in national format for dialing using the carrier as specified in the
|
1251
|
-
* preferredDomesticCarrierCode field of the PhoneNumber object passed in. If that is missing,
|
1252
|
-
* use the {@code fallbackCarrierCode} passed in instead. If there is no
|
1253
|
-
* {@code preferredDomesticCarrierCode}, and the {@code fallbackCarrierCode} contains an empty
|
1254
|
-
* string, return the number in national format without any carrier code.
|
1255
|
-
*
|
1256
|
-
* <p>Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier code passed in
|
1257
|
-
* should take precedence over the number's {@code preferredDomesticCarrierCode} when formatting.
|
1258
|
-
*
|
1259
|
-
* @param number the phone number to be formatted
|
1260
|
-
* @param fallbackCarrierCode the carrier selection code to be used, if none is found in the
|
1261
|
-
* phone number itself
|
1262
|
-
* @return the formatted phone number in national format for dialing using the number's
|
1263
|
-
* {@code preferredDomesticCarrierCode}, or the {@code fallbackCarrierCode} passed in if
|
1264
|
-
* none is found
|
1265
|
-
*/
|
1266
|
-
public String formatNationalNumberWithPreferredCarrierCode(PhoneNumber number,
|
1267
|
-
String fallbackCarrierCode) {
|
1268
|
-
return formatNationalNumberWithCarrierCode(number, number.hasPreferredDomesticCarrierCode()
|
1269
|
-
? number.getPreferredDomesticCarrierCode()
|
1270
|
-
: fallbackCarrierCode);
|
1271
|
-
}
|
1272
|
-
|
1273
|
-
/**
|
1274
|
-
* Returns a number formatted in such a way that it can be dialed from a mobile phone in a
|
1275
|
-
* specific region. If the number cannot be reached from the region (e.g. some countries block
|
1276
|
-
* toll-free numbers from being called outside of the country), the method returns an empty
|
1277
|
-
* string.
|
1278
|
-
*
|
1279
|
-
* @param number the phone number to be formatted
|
1280
|
-
* @param regionCallingFrom the region where the call is being placed
|
1281
|
-
* @param withFormatting whether the number should be returned with formatting symbols, such as
|
1282
|
-
* spaces and dashes.
|
1283
|
-
* @return the formatted phone number
|
1284
|
-
*/
|
1285
|
-
public String formatNumberForMobileDialing(PhoneNumber number, String regionCallingFrom,
|
1286
|
-
boolean withFormatting) {
|
1287
|
-
int countryCallingCode = number.getCountryCode();
|
1288
|
-
if (!hasValidCountryCallingCode(countryCallingCode)) {
|
1289
|
-
return number.hasRawInput() ? number.getRawInput() : "";
|
1290
|
-
}
|
1291
|
-
|
1292
|
-
String formattedNumber = "";
|
1293
|
-
// Clear the extension, as that part cannot normally be dialed together with the main number.
|
1294
|
-
PhoneNumber numberNoExt = new PhoneNumber().mergeFrom(number).clearExtension();
|
1295
|
-
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
|
1296
|
-
PhoneNumberType numberType = getNumberType(numberNoExt);
|
1297
|
-
boolean isValidNumber = (numberType != PhoneNumberType.UNKNOWN);
|
1298
|
-
if (regionCallingFrom.equals(regionCode)) {
|
1299
|
-
boolean isFixedLineOrMobile =
|
1300
|
-
(numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE) ||
|
1301
|
-
(numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE);
|
1302
|
-
// Carrier codes may be needed in some countries. We handle this here.
|
1303
|
-
if (regionCode.equals("CO") && numberType == PhoneNumberType.FIXED_LINE) {
|
1304
|
-
formattedNumber =
|
1305
|
-
formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX);
|
1306
|
-
} else if (regionCode.equals("BR") && isFixedLineOrMobile) {
|
1307
|
-
formattedNumber = numberNoExt.hasPreferredDomesticCarrierCode()
|
1308
|
-
? formattedNumber = formatNationalNumberWithPreferredCarrierCode(numberNoExt, "")
|
1309
|
-
// Brazilian fixed line and mobile numbers need to be dialed with a carrier code when
|
1310
|
-
// called within Brazil. Without that, most of the carriers won't connect the call.
|
1311
|
-
// Because of that, we return an empty string here.
|
1312
|
-
: "";
|
1313
|
-
} else if (isValidNumber && regionCode.equals("HU")) {
|
1314
|
-
// The national format for HU numbers doesn't contain the national prefix, because that is
|
1315
|
-
// how numbers are normally written down. However, the national prefix is obligatory when
|
1316
|
-
// dialing from a mobile phone, except for short numbers. As a result, we add it back here
|
1317
|
-
// if it is a valid regular length phone number.
|
1318
|
-
formattedNumber =
|
1319
|
-
getNddPrefixForRegion(regionCode, true /* strip non-digits */) +
|
1320
|
-
" " + format(numberNoExt, PhoneNumberFormat.NATIONAL);
|
1321
|
-
} else if (countryCallingCode == NANPA_COUNTRY_CODE) {
|
1322
|
-
// For NANPA countries, we output international format for numbers that can be dialed
|
1323
|
-
// internationally, since that always works, except for numbers which might potentially be
|
1324
|
-
// short numbers, which are always dialled in national format.
|
1325
|
-
PhoneMetadata regionMetadata = getMetadataForRegion(regionCallingFrom);
|
1326
|
-
if (canBeInternationallyDialled(numberNoExt) &&
|
1327
|
-
!isShorterThanPossibleNormalNumber(regionMetadata,
|
1328
|
-
getNationalSignificantNumber(numberNoExt))) {
|
1329
|
-
formattedNumber = format(numberNoExt, PhoneNumberFormat.INTERNATIONAL);
|
1330
|
-
} else {
|
1331
|
-
formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL);
|
1332
|
-
}
|
1333
|
-
} else {
|
1334
|
-
// For non-geographical countries, and Mexican and Chilean fixed line and mobile numbers, we
|
1335
|
-
// output international format for numbers that can be dialed internationally as that always
|
1336
|
-
// works.
|
1337
|
-
if ((regionCode.equals(REGION_CODE_FOR_NON_GEO_ENTITY) ||
|
1338
|
-
// MX fixed line and mobile numbers should always be formatted in international format,
|
1339
|
-
// even when dialed within MX. For national format to work, a carrier code needs to be
|
1340
|
-
// used, and the correct carrier code depends on if the caller and callee are from the
|
1341
|
-
// same local area. It is trickier to get that to work correctly than using
|
1342
|
-
// international format, which is tested to work fine on all carriers.
|
1343
|
-
// CL fixed line numbers need the national prefix when dialing in the national format,
|
1344
|
-
// but don't have it when used for display. The reverse is true for mobile numbers.
|
1345
|
-
// As a result, we output them in the international format to make it work.
|
1346
|
-
((regionCode.equals("MX") || regionCode.equals("CL")) &&
|
1347
|
-
isFixedLineOrMobile)) &&
|
1348
|
-
canBeInternationallyDialled(numberNoExt)) {
|
1349
|
-
formattedNumber = format(numberNoExt, PhoneNumberFormat.INTERNATIONAL);
|
1350
|
-
} else {
|
1351
|
-
formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL);
|
1352
|
-
}
|
1353
|
-
}
|
1354
|
-
} else if (isValidNumber && canBeInternationallyDialled(numberNoExt)) {
|
1355
|
-
// We assume that short numbers are not diallable from outside their region, so if a number
|
1356
|
-
// is not a valid regular length phone number, we treat it as if it cannot be internationally
|
1357
|
-
// dialled.
|
1358
|
-
return withFormatting ? format(numberNoExt, PhoneNumberFormat.INTERNATIONAL)
|
1359
|
-
: format(numberNoExt, PhoneNumberFormat.E164);
|
1360
|
-
}
|
1361
|
-
return withFormatting ? formattedNumber
|
1362
|
-
: normalizeDiallableCharsOnly(formattedNumber);
|
1363
|
-
}
|
1364
|
-
|
1365
|
-
/**
|
1366
|
-
* Formats a phone number for out-of-country dialing purposes. If no regionCallingFrom is
|
1367
|
-
* supplied, we format the number in its INTERNATIONAL format. If the country calling code is the
|
1368
|
-
* same as that of the region where the number is from, then NATIONAL formatting will be applied.
|
1369
|
-
*
|
1370
|
-
* <p>If the number itself has a country calling code of zero or an otherwise invalid country
|
1371
|
-
* calling code, then we return the number with no formatting applied.
|
1372
|
-
*
|
1373
|
-
* <p>Note this function takes care of the case for calling inside of NANPA and between Russia and
|
1374
|
-
* Kazakhstan (who share the same country calling code). In those cases, no international prefix
|
1375
|
-
* is used. For regions which have multiple international prefixes, the number in its
|
1376
|
-
* INTERNATIONAL format will be returned instead.
|
1377
|
-
*
|
1378
|
-
* @param number the phone number to be formatted
|
1379
|
-
* @param regionCallingFrom the region where the call is being placed
|
1380
|
-
* @return the formatted phone number
|
1381
|
-
*/
|
1382
|
-
public String formatOutOfCountryCallingNumber(PhoneNumber number,
|
1383
|
-
String regionCallingFrom) {
|
1384
|
-
if (!isValidRegionCode(regionCallingFrom)) {
|
1385
|
-
logger.log(Level.WARNING,
|
1386
|
-
"Trying to format number from invalid region "
|
1387
|
-
+ regionCallingFrom
|
1388
|
-
+ ". International formatting applied.");
|
1389
|
-
return format(number, PhoneNumberFormat.INTERNATIONAL);
|
1390
|
-
}
|
1391
|
-
int countryCallingCode = number.getCountryCode();
|
1392
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
1393
|
-
if (!hasValidCountryCallingCode(countryCallingCode)) {
|
1394
|
-
return nationalSignificantNumber;
|
1395
|
-
}
|
1396
|
-
if (countryCallingCode == NANPA_COUNTRY_CODE) {
|
1397
|
-
if (isNANPACountry(regionCallingFrom)) {
|
1398
|
-
// For NANPA regions, return the national format for these regions but prefix it with the
|
1399
|
-
// country calling code.
|
1400
|
-
return countryCallingCode + " " + format(number, PhoneNumberFormat.NATIONAL);
|
1401
|
-
}
|
1402
|
-
} else if (countryCallingCode == getCountryCodeForValidRegion(regionCallingFrom)) {
|
1403
|
-
// If regions share a country calling code, the country calling code need not be dialled.
|
1404
|
-
// This also applies when dialling within a region, so this if clause covers both these cases.
|
1405
|
-
// Technically this is the case for dialling from La Reunion to other overseas departments of
|
1406
|
-
// France (French Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover this
|
1407
|
-
// edge case for now and for those cases return the version including country calling code.
|
1408
|
-
// Details here: http://www.petitfute.com/voyage/225-info-pratiques-reunion
|
1409
|
-
return format(number, PhoneNumberFormat.NATIONAL);
|
1410
|
-
}
|
1411
|
-
// Metadata cannot be null because we checked 'isValidRegionCode()' above.
|
1412
|
-
PhoneMetadata metadataForRegionCallingFrom = getMetadataForRegion(regionCallingFrom);
|
1413
|
-
String internationalPrefix = metadataForRegionCallingFrom.internationalPrefix;
|
1414
|
-
|
1415
|
-
// For regions that have multiple international prefixes, the international format of the
|
1416
|
-
// number is returned, unless there is a preferred international prefix.
|
1417
|
-
String internationalPrefixForFormatting = "";
|
1418
|
-
if (UNIQUE_INTERNATIONAL_PREFIX.matcher(internationalPrefix).matches()) {
|
1419
|
-
internationalPrefixForFormatting = internationalPrefix;
|
1420
|
-
} else if (!metadataForRegionCallingFrom.preferredInternationalPrefix.equals("")) {
|
1421
|
-
internationalPrefixForFormatting =
|
1422
|
-
metadataForRegionCallingFrom.preferredInternationalPrefix;
|
1423
|
-
}
|
1424
|
-
|
1425
|
-
String regionCode = getRegionCodeForCountryCode(countryCallingCode);
|
1426
|
-
// Metadata cannot be null because the country calling code is valid.
|
1427
|
-
PhoneMetadata metadataForRegion =
|
1428
|
-
getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
|
1429
|
-
String formattedNationalNumber =
|
1430
|
-
formatNsn(nationalSignificantNumber, metadataForRegion, PhoneNumberFormat.INTERNATIONAL);
|
1431
|
-
StringBuilder formattedNumber = new StringBuilder(formattedNationalNumber);
|
1432
|
-
maybeAppendFormattedExtension(number, metadataForRegion, PhoneNumberFormat.INTERNATIONAL,
|
1433
|
-
formattedNumber);
|
1434
|
-
if (internationalPrefixForFormatting.length() > 0) {
|
1435
|
-
formattedNumber.insert(0, " ").insert(0, countryCallingCode).insert(0, " ")
|
1436
|
-
.insert(0, internationalPrefixForFormatting);
|
1437
|
-
} else {
|
1438
|
-
prefixNumberWithCountryCallingCode(countryCallingCode,
|
1439
|
-
PhoneNumberFormat.INTERNATIONAL,
|
1440
|
-
formattedNumber);
|
1441
|
-
}
|
1442
|
-
return formattedNumber.toString();
|
1443
|
-
}
|
1444
|
-
|
1445
|
-
/**
|
1446
|
-
* Formats a phone number using the original phone number format that the number is parsed from.
|
1447
|
-
* The original format is embedded in the country_code_source field of the PhoneNumber object
|
1448
|
-
* passed in. If such information is missing, the number will be formatted into the NATIONAL
|
1449
|
-
* format by default. When the number contains a leading zero and this is unexpected for this
|
1450
|
-
* country, or we don't have a formatting pattern for the number, the method returns the raw input
|
1451
|
-
* when it is available.
|
1452
|
-
*
|
1453
|
-
* Note this method guarantees no digit will be inserted, removed or modified as a result of
|
1454
|
-
* formatting.
|
1455
|
-
*
|
1456
|
-
* @param number the phone number that needs to be formatted in its original number format
|
1457
|
-
* @param regionCallingFrom the region whose IDD needs to be prefixed if the original number
|
1458
|
-
* has one
|
1459
|
-
* @return the formatted phone number in its original number format
|
1460
|
-
*/
|
1461
|
-
public String formatInOriginalFormat(PhoneNumber number, String regionCallingFrom) {
|
1462
|
-
if (number.hasRawInput() &&
|
1463
|
-
(hasUnexpectedItalianLeadingZero(number) || !hasFormattingPatternForNumber(number))) {
|
1464
|
-
// We check if we have the formatting pattern because without that, we might format the number
|
1465
|
-
// as a group without national prefix.
|
1466
|
-
return number.getRawInput();
|
1467
|
-
}
|
1468
|
-
if (!number.hasCountryCodeSource()) {
|
1469
|
-
return format(number, PhoneNumberFormat.NATIONAL);
|
1470
|
-
}
|
1471
|
-
String formattedNumber;
|
1472
|
-
switch (number.getCountryCodeSource()) {
|
1473
|
-
case FROM_NUMBER_WITH_PLUS_SIGN:
|
1474
|
-
formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL);
|
1475
|
-
break;
|
1476
|
-
case FROM_NUMBER_WITH_IDD:
|
1477
|
-
formattedNumber = formatOutOfCountryCallingNumber(number, regionCallingFrom);
|
1478
|
-
break;
|
1479
|
-
case FROM_NUMBER_WITHOUT_PLUS_SIGN:
|
1480
|
-
formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL).substring(1);
|
1481
|
-
break;
|
1482
|
-
case FROM_DEFAULT_COUNTRY:
|
1483
|
-
// Fall-through to default case.
|
1484
|
-
default:
|
1485
|
-
String regionCode = getRegionCodeForCountryCode(number.getCountryCode());
|
1486
|
-
// We strip non-digits from the NDD here, and from the raw input later, so that we can
|
1487
|
-
// compare them easily.
|
1488
|
-
String nationalPrefix = getNddPrefixForRegion(regionCode, true /* strip non-digits */);
|
1489
|
-
String nationalFormat = format(number, PhoneNumberFormat.NATIONAL);
|
1490
|
-
if (nationalPrefix == null || nationalPrefix.length() == 0) {
|
1491
|
-
// If the region doesn't have a national prefix at all, we can safely return the national
|
1492
|
-
// format without worrying about a national prefix being added.
|
1493
|
-
formattedNumber = nationalFormat;
|
1494
|
-
break;
|
1495
|
-
}
|
1496
|
-
// Otherwise, we check if the original number was entered with a national prefix.
|
1497
|
-
if (rawInputContainsNationalPrefix(
|
1498
|
-
number.getRawInput(), nationalPrefix, regionCode)) {
|
1499
|
-
// If so, we can safely return the national format.
|
1500
|
-
formattedNumber = nationalFormat;
|
1501
|
-
break;
|
1502
|
-
}
|
1503
|
-
// Metadata cannot be null here because getNddPrefixForRegion() (above) returns null if
|
1504
|
-
// there is no metadata for the region.
|
1505
|
-
PhoneMetadata metadata = getMetadataForRegion(regionCode);
|
1506
|
-
String nationalNumber = getNationalSignificantNumber(number);
|
1507
|
-
NumberFormat formatRule =
|
1508
|
-
chooseFormattingPatternForNumber(metadata.numberFormat, nationalNumber);
|
1509
|
-
// The format rule could still be null here if the national number was 0 and there was no
|
1510
|
-
// raw input (this should not be possible for numbers generated by the phonenumber library
|
1511
|
-
// as they would also not have a country calling code and we would have exited earlier).
|
1512
|
-
if (formatRule == null) {
|
1513
|
-
formattedNumber = nationalFormat;
|
1514
|
-
break;
|
1515
|
-
}
|
1516
|
-
// When the format we apply to this number doesn't contain national prefix, we can just
|
1517
|
-
// return the national format.
|
1518
|
-
// TODO: Refactor the code below with the code in
|
1519
|
-
// isNationalPrefixPresentIfRequired.
|
1520
|
-
String candidateNationalPrefixRule = formatRule.nationalPrefixFormattingRule;
|
1521
|
-
// We assume that the first-group symbol will never be _before_ the national prefix.
|
1522
|
-
int indexOfFirstGroup = candidateNationalPrefixRule.indexOf("$1");
|
1523
|
-
if (indexOfFirstGroup <= 0) {
|
1524
|
-
formattedNumber = nationalFormat;
|
1525
|
-
break;
|
1526
|
-
}
|
1527
|
-
candidateNationalPrefixRule =
|
1528
|
-
candidateNationalPrefixRule.substring(0, indexOfFirstGroup);
|
1529
|
-
candidateNationalPrefixRule = normalizeDigitsOnly(candidateNationalPrefixRule);
|
1530
|
-
if (candidateNationalPrefixRule.length() == 0) {
|
1531
|
-
// National prefix not used when formatting this number.
|
1532
|
-
formattedNumber = nationalFormat;
|
1533
|
-
break;
|
1534
|
-
}
|
1535
|
-
// Otherwise, we need to remove the national prefix from our output.
|
1536
|
-
NumberFormat numFormatCopy = copyNumberFormat(formatRule);
|
1537
|
-
numFormatCopy.nationalPrefixFormattingRule = "";
|
1538
|
-
List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1);
|
1539
|
-
numberFormats.add(numFormatCopy);
|
1540
|
-
formattedNumber = formatByPattern(number, PhoneNumberFormat.NATIONAL, numberFormats);
|
1541
|
-
break;
|
1542
|
-
}
|
1543
|
-
String rawInput = number.getRawInput();
|
1544
|
-
// If no digit is inserted/removed/modified as a result of our formatting, we return the
|
1545
|
-
// formatted phone number; otherwise we return the raw input the user entered.
|
1546
|
-
if (formattedNumber != null && rawInput.length() > 0) {
|
1547
|
-
String normalizedFormattedNumber = normalizeDiallableCharsOnly(formattedNumber);
|
1548
|
-
String normalizedRawInput = normalizeDiallableCharsOnly(rawInput);
|
1549
|
-
if (!normalizedFormattedNumber.equals(normalizedRawInput)) {
|
1550
|
-
formattedNumber = rawInput;
|
1551
|
-
}
|
1552
|
-
}
|
1553
|
-
return formattedNumber;
|
1554
|
-
}
|
1555
|
-
|
1556
|
-
// Check if rawInput, which is assumed to be in the national format, has a national prefix. The
|
1557
|
-
// national prefix is assumed to be in digits-only form.
|
1558
|
-
private boolean rawInputContainsNationalPrefix(String rawInput, String nationalPrefix,
|
1559
|
-
String regionCode) {
|
1560
|
-
String normalizedNationalNumber = normalizeDigitsOnly(rawInput);
|
1561
|
-
if (normalizedNationalNumber.startsWith(nationalPrefix)) {
|
1562
|
-
try {
|
1563
|
-
// Some Japanese numbers (e.g. 00777123) might be mistaken to contain the national prefix
|
1564
|
-
// when written without it (e.g. 0777123) if we just do prefix matching. To tackle that, we
|
1565
|
-
// check the validity of the number if the assumed national prefix is removed (777123 won't
|
1566
|
-
// be valid in Japan).
|
1567
|
-
return isValidNumber(
|
1568
|
-
parse(normalizedNationalNumber.substring(nationalPrefix.length()), regionCode));
|
1569
|
-
} catch (NumberParseException e) {
|
1570
|
-
return false;
|
1571
|
-
}
|
1572
|
-
}
|
1573
|
-
return false;
|
1574
|
-
}
|
1575
|
-
|
1576
|
-
/**
|
1577
|
-
* Returns true if a number is from a region whose national significant number couldn't contain a
|
1578
|
-
* leading zero, but has the italian_leading_zero field set to true.
|
1579
|
-
*/
|
1580
|
-
private boolean hasUnexpectedItalianLeadingZero(PhoneNumber number) {
|
1581
|
-
return number.isItalianLeadingZero() && !isLeadingZeroPossible(number.getCountryCode());
|
1582
|
-
}
|
1583
|
-
|
1584
|
-
private boolean hasFormattingPatternForNumber(PhoneNumber number) {
|
1585
|
-
int countryCallingCode = number.getCountryCode();
|
1586
|
-
String phoneNumberRegion = getRegionCodeForCountryCode(countryCallingCode);
|
1587
|
-
PhoneMetadata metadata =
|
1588
|
-
getMetadataForRegionOrCallingCode(countryCallingCode, phoneNumberRegion);
|
1589
|
-
if (metadata == null) {
|
1590
|
-
return false;
|
1591
|
-
}
|
1592
|
-
String nationalNumber = getNationalSignificantNumber(number);
|
1593
|
-
NumberFormat formatRule =
|
1594
|
-
chooseFormattingPatternForNumber(metadata.numberFormat, nationalNumber);
|
1595
|
-
return formatRule != null;
|
1596
|
-
}
|
1597
|
-
|
1598
|
-
/**
|
1599
|
-
* Formats a phone number for out-of-country dialing purposes.
|
1600
|
-
*
|
1601
|
-
* Note that in this version, if the number was entered originally using alpha characters and
|
1602
|
-
* this version of the number is stored in raw_input, this representation of the number will be
|
1603
|
-
* used rather than the digit representation. Grouping information, as specified by characters
|
1604
|
-
* such as "-" and " ", will be retained.
|
1605
|
-
*
|
1606
|
-
* <p><b>Caveats:</b></p>
|
1607
|
-
* <ul>
|
1608
|
-
* <li> This will not produce good results if the country calling code is both present in the raw
|
1609
|
-
* input _and_ is the start of the national number. This is not a problem in the regions
|
1610
|
-
* which typically use alpha numbers.
|
1611
|
-
* <li> This will also not produce good results if the raw input has any grouping information
|
1612
|
-
* within the first three digits of the national number, and if the function needs to strip
|
1613
|
-
* preceding digits/words in the raw input before these digits. Normally people group the
|
1614
|
-
* first three digits together so this is not a huge problem - and will be fixed if it
|
1615
|
-
* proves to be so.
|
1616
|
-
* </ul>
|
1617
|
-
*
|
1618
|
-
* @param number the phone number that needs to be formatted
|
1619
|
-
* @param regionCallingFrom the region where the call is being placed
|
1620
|
-
* @return the formatted phone number
|
1621
|
-
*/
|
1622
|
-
public String formatOutOfCountryKeepingAlphaChars(PhoneNumber number,
|
1623
|
-
String regionCallingFrom) {
|
1624
|
-
String rawInput = number.getRawInput();
|
1625
|
-
// If there is no raw input, then we can't keep alpha characters because there aren't any.
|
1626
|
-
// In this case, we return formatOutOfCountryCallingNumber.
|
1627
|
-
if (rawInput.length() == 0) {
|
1628
|
-
return formatOutOfCountryCallingNumber(number, regionCallingFrom);
|
1629
|
-
}
|
1630
|
-
int countryCode = number.getCountryCode();
|
1631
|
-
if (!hasValidCountryCallingCode(countryCode)) {
|
1632
|
-
return rawInput;
|
1633
|
-
}
|
1634
|
-
// Strip any prefix such as country calling code, IDD, that was present. We do this by comparing
|
1635
|
-
// the number in raw_input with the parsed number.
|
1636
|
-
// To do this, first we normalize punctuation. We retain number grouping symbols such as " "
|
1637
|
-
// only.
|
1638
|
-
rawInput = normalizeHelper(rawInput, ALL_PLUS_NUMBER_GROUPING_SYMBOLS, true);
|
1639
|
-
// Now we trim everything before the first three digits in the parsed number. We choose three
|
1640
|
-
// because all valid alpha numbers have 3 digits at the start - if it does not, then we don't
|
1641
|
-
// trim anything at all. Similarly, if the national number was less than three digits, we don't
|
1642
|
-
// trim anything at all.
|
1643
|
-
String nationalNumber = getNationalSignificantNumber(number);
|
1644
|
-
if (nationalNumber.length() > 3) {
|
1645
|
-
int firstNationalNumberDigit = rawInput.indexOf(nationalNumber.substring(0, 3));
|
1646
|
-
if (firstNationalNumberDigit != -1) {
|
1647
|
-
rawInput = rawInput.substring(firstNationalNumberDigit);
|
1648
|
-
}
|
1649
|
-
}
|
1650
|
-
PhoneMetadata metadataForRegionCallingFrom = getMetadataForRegion(regionCallingFrom);
|
1651
|
-
if (countryCode == NANPA_COUNTRY_CODE) {
|
1652
|
-
if (isNANPACountry(regionCallingFrom)) {
|
1653
|
-
return countryCode + " " + rawInput;
|
1654
|
-
}
|
1655
|
-
} else if (metadataForRegionCallingFrom != null &&
|
1656
|
-
countryCode == getCountryCodeForValidRegion(regionCallingFrom)) {
|
1657
|
-
NumberFormat formattingPattern =
|
1658
|
-
chooseFormattingPatternForNumber(metadataForRegionCallingFrom.numberFormat,
|
1659
|
-
nationalNumber);
|
1660
|
-
if (formattingPattern == null) {
|
1661
|
-
// If no pattern above is matched, we format the original input.
|
1662
|
-
return rawInput;
|
1663
|
-
}
|
1664
|
-
NumberFormat newFormat = copyNumberFormat(formattingPattern);
|
1665
|
-
// The first group is the first group of digits that the user wrote together.
|
1666
|
-
newFormat.pattern = "(\\d+)(.*)";
|
1667
|
-
// Here we just concatenate them back together after the national prefix has been fixed.
|
1668
|
-
newFormat.format = "$1$2";
|
1669
|
-
// Now we format using this pattern instead of the default pattern, but with the national
|
1670
|
-
// prefix prefixed if necessary.
|
1671
|
-
// This will not work in the cases where the pattern (and not the leading digits) decide
|
1672
|
-
// whether a national prefix needs to be used, since we have overridden the pattern to match
|
1673
|
-
// anything, but that is not the case in the metadata to date.
|
1674
|
-
return formatNsnUsingPattern(rawInput, newFormat, PhoneNumberFormat.NATIONAL);
|
1675
|
-
}
|
1676
|
-
String internationalPrefixForFormatting = "";
|
1677
|
-
// If an unsupported region-calling-from is entered, or a country with multiple international
|
1678
|
-
// prefixes, the international format of the number is returned, unless there is a preferred
|
1679
|
-
// international prefix.
|
1680
|
-
if (metadataForRegionCallingFrom != null) {
|
1681
|
-
String internationalPrefix = metadataForRegionCallingFrom.internationalPrefix;
|
1682
|
-
internationalPrefixForFormatting =
|
1683
|
-
UNIQUE_INTERNATIONAL_PREFIX.matcher(internationalPrefix).matches()
|
1684
|
-
? internationalPrefix
|
1685
|
-
: metadataForRegionCallingFrom.preferredInternationalPrefix;
|
1686
|
-
}
|
1687
|
-
StringBuilder formattedNumber = new StringBuilder(rawInput);
|
1688
|
-
String regionCode = getRegionCodeForCountryCode(countryCode);
|
1689
|
-
// Metadata cannot be null because the country calling code is valid.
|
1690
|
-
PhoneMetadata metadataForRegion = getMetadataForRegionOrCallingCode(countryCode, regionCode);
|
1691
|
-
maybeAppendFormattedExtension(number, metadataForRegion,
|
1692
|
-
PhoneNumberFormat.INTERNATIONAL, formattedNumber);
|
1693
|
-
if (internationalPrefixForFormatting.length() > 0) {
|
1694
|
-
formattedNumber.insert(0, " ").insert(0, countryCode).insert(0, " ")
|
1695
|
-
.insert(0, internationalPrefixForFormatting);
|
1696
|
-
} else {
|
1697
|
-
// Invalid region entered as country-calling-from (so no metadata was found for it) or the
|
1698
|
-
// region chosen has multiple international dialling prefixes.
|
1699
|
-
if (!isValidRegionCode(regionCallingFrom)) {
|
1700
|
-
logger.log(Level.WARNING,
|
1701
|
-
"Trying to format number from invalid region "
|
1702
|
-
+ regionCallingFrom
|
1703
|
-
+ ". International formatting applied.");
|
1704
|
-
}
|
1705
|
-
prefixNumberWithCountryCallingCode(countryCode,
|
1706
|
-
PhoneNumberFormat.INTERNATIONAL,
|
1707
|
-
formattedNumber);
|
1708
|
-
}
|
1709
|
-
return formattedNumber.toString();
|
1710
|
-
}
|
1711
|
-
|
1712
|
-
/**
|
1713
|
-
* Gets the national significant number of the a phone number. Note a national significant number
|
1714
|
-
* doesn't contain a national prefix or any formatting.
|
1715
|
-
*
|
1716
|
-
* @param number the phone number for which the national significant number is needed
|
1717
|
-
* @return the national significant number of the PhoneNumber object passed in
|
1718
|
-
*/
|
1719
|
-
public String getNationalSignificantNumber(PhoneNumber number) {
|
1720
|
-
// If leading zero(s) have been set, we prefix this now. Note this is not a national prefix.
|
1721
|
-
StringBuilder nationalNumber = new StringBuilder();
|
1722
|
-
if (number.isItalianLeadingZero()) {
|
1723
|
-
char[] zeros = new char[number.getNumberOfLeadingZeros()];
|
1724
|
-
Arrays.fill(zeros, '0');
|
1725
|
-
nationalNumber.append(new String(zeros));
|
1726
|
-
}
|
1727
|
-
nationalNumber.append(number.getNationalNumber());
|
1728
|
-
return nationalNumber.toString();
|
1729
|
-
}
|
1730
|
-
|
1731
|
-
/**
|
1732
|
-
* A helper function that is used by format and formatByPattern.
|
1733
|
-
*/
|
1734
|
-
private void prefixNumberWithCountryCallingCode(int countryCallingCode,
|
1735
|
-
PhoneNumberFormat numberFormat,
|
1736
|
-
StringBuilder formattedNumber) {
|
1737
|
-
switch (numberFormat) {
|
1738
|
-
case E164:
|
1739
|
-
formattedNumber.insert(0, countryCallingCode).insert(0, PLUS_SIGN);
|
1740
|
-
return;
|
1741
|
-
case INTERNATIONAL:
|
1742
|
-
formattedNumber.insert(0, " ").insert(0, countryCallingCode).insert(0, PLUS_SIGN);
|
1743
|
-
return;
|
1744
|
-
case RFC3966:
|
1745
|
-
formattedNumber.insert(0, "-").insert(0, countryCallingCode).insert(0, PLUS_SIGN)
|
1746
|
-
.insert(0, RFC3966_PREFIX);
|
1747
|
-
return;
|
1748
|
-
case NATIONAL:
|
1749
|
-
default:
|
1750
|
-
return;
|
1751
|
-
}
|
1752
|
-
}
|
1753
|
-
|
1754
|
-
// Simple wrapper of formatNsn for the common case of no carrier code.
|
1755
|
-
private String formatNsn(String number, PhoneMetadata metadata, PhoneNumberFormat numberFormat) {
|
1756
|
-
return formatNsn(number, metadata, numberFormat, null);
|
1757
|
-
}
|
1758
|
-
|
1759
|
-
// Note in some regions, the national number can be written in two completely different ways
|
1760
|
-
// depending on whether it forms part of the NATIONAL format or INTERNATIONAL format. The
|
1761
|
-
// numberFormat parameter here is used to specify which format to use for those cases. If a
|
1762
|
-
// carrierCode is specified, this will be inserted into the formatted string to replace $CC.
|
1763
|
-
private String formatNsn(String number,
|
1764
|
-
PhoneMetadata metadata,
|
1765
|
-
PhoneNumberFormat numberFormat,
|
1766
|
-
String carrierCode) {
|
1767
|
-
NumberFormat[] intlNumberFormats = metadata.intlNumberFormat;
|
1768
|
-
// When the intlNumberFormats exists, we use that to format national number for the
|
1769
|
-
// INTERNATIONAL format instead of using the numberDesc.numberFormats.
|
1770
|
-
NumberFormat[] availableFormats =
|
1771
|
-
(intlNumberFormats.length == 0 || numberFormat == PhoneNumberFormat.NATIONAL)
|
1772
|
-
? metadata.numberFormat
|
1773
|
-
: metadata.intlNumberFormat;
|
1774
|
-
NumberFormat formattingPattern = chooseFormattingPatternForNumber(availableFormats, number);
|
1775
|
-
return (formattingPattern == null)
|
1776
|
-
? number
|
1777
|
-
: formatNsnUsingPattern(number, formattingPattern, numberFormat, carrierCode);
|
1778
|
-
}
|
1779
|
-
|
1780
|
-
NumberFormat chooseFormattingPatternForNumber(NumberFormat[] availableFormats,
|
1781
|
-
String nationalNumber) {
|
1782
|
-
for (NumberFormat numFormat : availableFormats) {
|
1783
|
-
int size = numFormat.leadingDigitsPattern.length;
|
1784
|
-
if (size == 0 || regexCache.getPatternForRegex(
|
1785
|
-
// We always use the last leading_digits_pattern, as it is the most detailed.
|
1786
|
-
numFormat.leadingDigitsPattern[size - 1]).matcher(nationalNumber).lookingAt()) {
|
1787
|
-
Matcher m = regexCache.getPatternForRegex(numFormat.pattern).matcher(nationalNumber);
|
1788
|
-
if (m.matches()) {
|
1789
|
-
return numFormat;
|
1790
|
-
}
|
1791
|
-
}
|
1792
|
-
}
|
1793
|
-
return null;
|
1794
|
-
}
|
1795
|
-
|
1796
|
-
// Simple wrapper of formatNsnUsingPattern for the common case of no carrier code.
|
1797
|
-
String formatNsnUsingPattern(String nationalNumber,
|
1798
|
-
NumberFormat formattingPattern,
|
1799
|
-
PhoneNumberFormat numberFormat) {
|
1800
|
-
return formatNsnUsingPattern(nationalNumber, formattingPattern, numberFormat, null);
|
1801
|
-
}
|
1802
|
-
|
1803
|
-
// Note that carrierCode is optional - if null or an empty string, no carrier code replacement
|
1804
|
-
// will take place.
|
1805
|
-
private String formatNsnUsingPattern(String nationalNumber,
|
1806
|
-
NumberFormat formattingPattern,
|
1807
|
-
PhoneNumberFormat numberFormat,
|
1808
|
-
String carrierCode) {
|
1809
|
-
String numberFormatRule = formattingPattern.format;
|
1810
|
-
Matcher m =
|
1811
|
-
regexCache.getPatternForRegex(formattingPattern.pattern).matcher(nationalNumber);
|
1812
|
-
String formattedNationalNumber = "";
|
1813
|
-
if (numberFormat == PhoneNumberFormat.NATIONAL &&
|
1814
|
-
carrierCode != null && carrierCode.length() > 0 &&
|
1815
|
-
formattingPattern.domesticCarrierCodeFormattingRule.length() > 0) {
|
1816
|
-
// Replace the $CC in the formatting rule with the desired carrier code.
|
1817
|
-
String carrierCodeFormattingRule = formattingPattern.domesticCarrierCodeFormattingRule;
|
1818
|
-
carrierCodeFormattingRule =
|
1819
|
-
CC_PATTERN.matcher(carrierCodeFormattingRule).replaceFirst(carrierCode);
|
1820
|
-
// Now replace the $FG in the formatting rule with the first group and the carrier code
|
1821
|
-
// combined in the appropriate way.
|
1822
|
-
numberFormatRule = FIRST_GROUP_PATTERN.matcher(numberFormatRule)
|
1823
|
-
.replaceFirst(carrierCodeFormattingRule);
|
1824
|
-
formattedNationalNumber = m.replaceAll(numberFormatRule);
|
1825
|
-
} else {
|
1826
|
-
// Use the national prefix formatting rule instead.
|
1827
|
-
String nationalPrefixFormattingRule = formattingPattern.nationalPrefixFormattingRule;
|
1828
|
-
if (numberFormat == PhoneNumberFormat.NATIONAL &&
|
1829
|
-
nationalPrefixFormattingRule != null &&
|
1830
|
-
nationalPrefixFormattingRule.length() > 0) {
|
1831
|
-
Matcher firstGroupMatcher = FIRST_GROUP_PATTERN.matcher(numberFormatRule);
|
1832
|
-
formattedNationalNumber =
|
1833
|
-
m.replaceAll(firstGroupMatcher.replaceFirst(nationalPrefixFormattingRule));
|
1834
|
-
} else {
|
1835
|
-
formattedNationalNumber = m.replaceAll(numberFormatRule);
|
1836
|
-
}
|
1837
|
-
}
|
1838
|
-
if (numberFormat == PhoneNumberFormat.RFC3966) {
|
1839
|
-
// Strip any leading punctuation.
|
1840
|
-
Matcher matcher = SEPARATOR_PATTERN.matcher(formattedNationalNumber);
|
1841
|
-
if (matcher.lookingAt()) {
|
1842
|
-
formattedNationalNumber = matcher.replaceFirst("");
|
1843
|
-
}
|
1844
|
-
// Replace the rest with a dash between each number group.
|
1845
|
-
formattedNationalNumber = matcher.reset(formattedNationalNumber).replaceAll("-");
|
1846
|
-
}
|
1847
|
-
return formattedNationalNumber;
|
1848
|
-
}
|
1849
|
-
|
1850
|
-
/**
|
1851
|
-
* Gets a valid number for the specified region.
|
1852
|
-
*
|
1853
|
-
* @param regionCode the region for which an example number is needed
|
1854
|
-
* @return a valid fixed-line number for the specified region. Returns null when the metadata
|
1855
|
-
* does not contain such information, or the region 001 is passed in. For 001 (representing
|
1856
|
-
* non-geographical numbers), call {@link #getExampleNumberForNonGeoEntity} instead.
|
1857
|
-
*/
|
1858
|
-
public PhoneNumber getExampleNumber(String regionCode) {
|
1859
|
-
return getExampleNumberForType(regionCode, PhoneNumberType.FIXED_LINE);
|
1860
|
-
}
|
1861
|
-
|
1862
|
-
/**
|
1863
|
-
* Gets an invalid number for the specified region. This is useful for unit-testing purposes,
|
1864
|
-
* where you want to test what will happen with an invalid number. Note that the number that is
|
1865
|
-
* returned will always be able to be parsed and will have the correct country code. It may also
|
1866
|
-
* be a valid *short* number/code for this region. Validity checking such numbers is handled with
|
1867
|
-
* {@link com.google.i18n.phonenumbers.ShortNumberInfo}.
|
1868
|
-
*
|
1869
|
-
* @param regionCode the region for which an example number is needed
|
1870
|
-
* @return an invalid number for the specified region. Returns null when an unsupported region or
|
1871
|
-
* the region 001 (Earth) is passed in.
|
1872
|
-
*/
|
1873
|
-
public PhoneNumber getInvalidExampleNumber(String regionCode) {
|
1874
|
-
if (!isValidRegionCode(regionCode)) {
|
1875
|
-
logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
|
1876
|
-
return null;
|
1877
|
-
}
|
1878
|
-
// We start off with a valid fixed-line number since every country supports this. Alternatively
|
1879
|
-
// we could start with a different number type, since fixed-line numbers typically have a wide
|
1880
|
-
// breadth of valid number lengths and we may have to make it very short before we get an
|
1881
|
-
// invalid number.
|
1882
|
-
PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode),
|
1883
|
-
PhoneNumberType.FIXED_LINE);
|
1884
|
-
if (desc.exampleNumber.equals("")) {
|
1885
|
-
// This shouldn't happen; we have a test for this.
|
1886
|
-
return null;
|
1887
|
-
}
|
1888
|
-
String exampleNumber = desc.exampleNumber;
|
1889
|
-
// Try and make the number invalid. We do this by changing the length. We try reducing the
|
1890
|
-
// length of the number, since currently no region has a number that is the same length as
|
1891
|
-
// MIN_LENGTH_FOR_NSN. This is probably quicker than making the number longer, which is another
|
1892
|
-
// alternative. We could also use the possible number pattern to extract the possible lengths of
|
1893
|
-
// the number to make this faster, but this method is only for unit-testing so simplicity is
|
1894
|
-
// preferred to performance. We don't want to return a number that can't be parsed, so we check
|
1895
|
-
// the number is long enough. We try all possible lengths because phone number plans often have
|
1896
|
-
// overlapping prefixes so the number 123456 might be valid as a fixed-line number, and 12345 as
|
1897
|
-
// a mobile number. It would be faster to loop in a different order, but we prefer numbers that
|
1898
|
-
// look closer to real numbers (and it gives us a variety of different lengths for the resulting
|
1899
|
-
// phone numbers - otherwise they would all be MIN_LENGTH_FOR_NSN digits long.)
|
1900
|
-
for (int phoneNumberLength = exampleNumber.length() - 1;
|
1901
|
-
phoneNumberLength >= MIN_LENGTH_FOR_NSN;
|
1902
|
-
phoneNumberLength--) {
|
1903
|
-
String numberToTry = exampleNumber.substring(0, phoneNumberLength);
|
1904
|
-
try {
|
1905
|
-
PhoneNumber possiblyValidNumber = parse(numberToTry, regionCode);
|
1906
|
-
if (!isValidNumber(possiblyValidNumber)) {
|
1907
|
-
return possiblyValidNumber;
|
1908
|
-
}
|
1909
|
-
} catch (NumberParseException e) {
|
1910
|
-
// Shouldn't happen: we have already checked the length, we know example numbers have
|
1911
|
-
// only valid digits, and we know the region code is fine.
|
1912
|
-
}
|
1913
|
-
}
|
1914
|
-
// We have a test to check that this doesn't happen for any of our supported regions.
|
1915
|
-
return null;
|
1916
|
-
}
|
1917
|
-
|
1918
|
-
/**
|
1919
|
-
* Gets a valid number for the specified region and number type.
|
1920
|
-
*
|
1921
|
-
* @param regionCode the region for which an example number is needed
|
1922
|
-
* @param type the type of number that is needed
|
1923
|
-
* @return a valid number for the specified region and type. Returns null when the metadata
|
1924
|
-
* does not contain such information or if an invalid region or region 001 was entered.
|
1925
|
-
* For 001 (representing non-geographical numbers), call
|
1926
|
-
* {@link #getExampleNumberForNonGeoEntity} instead.
|
1927
|
-
*/
|
1928
|
-
public PhoneNumber getExampleNumberForType(String regionCode, PhoneNumberType type) {
|
1929
|
-
// Check the region code is valid.
|
1930
|
-
if (!isValidRegionCode(regionCode)) {
|
1931
|
-
logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
|
1932
|
-
return null;
|
1933
|
-
}
|
1934
|
-
PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode), type);
|
1935
|
-
try {
|
1936
|
-
if (!desc.exampleNumber.equals("")) {
|
1937
|
-
return parse(desc.exampleNumber, regionCode);
|
1938
|
-
}
|
1939
|
-
} catch (NumberParseException e) {
|
1940
|
-
logger.log(Level.SEVERE, e.toString());
|
1941
|
-
}
|
1942
|
-
return null;
|
1943
|
-
}
|
1944
|
-
|
1945
|
-
/**
|
1946
|
-
* Gets a valid number for the specified number type (it may belong to any country).
|
1947
|
-
*
|
1948
|
-
* @param type the type of number that is needed
|
1949
|
-
* @return a valid number for the specified type. Returns null when the metadata
|
1950
|
-
* does not contain such information. This should only happen when no numbers of this type are
|
1951
|
-
* allocated anywhere in the world anymore.
|
1952
|
-
*/
|
1953
|
-
public PhoneNumber getExampleNumberForType(PhoneNumberType type) {
|
1954
|
-
for (String regionCode : getSupportedRegions()) {
|
1955
|
-
PhoneNumber exampleNumber = getExampleNumberForType(regionCode, type);
|
1956
|
-
if (exampleNumber != null) {
|
1957
|
-
return exampleNumber;
|
1958
|
-
}
|
1959
|
-
}
|
1960
|
-
// If there wasn't an example number for a region, try the non-geographical entities.
|
1961
|
-
for (int countryCallingCode : getSupportedGlobalNetworkCallingCodes()) {
|
1962
|
-
PhoneNumberDesc desc = getNumberDescByType(
|
1963
|
-
getMetadataForNonGeographicalRegion(countryCallingCode), type);
|
1964
|
-
try {
|
1965
|
-
if (!desc.exampleNumber.equals("")) {
|
1966
|
-
return parse("+" + countryCallingCode + desc.exampleNumber, UNKNOWN_REGION);
|
1967
|
-
}
|
1968
|
-
} catch (NumberParseException e) {
|
1969
|
-
logger.log(Level.SEVERE, e.toString());
|
1970
|
-
}
|
1971
|
-
}
|
1972
|
-
// There are no example numbers of this type for any country in the library.
|
1973
|
-
return null;
|
1974
|
-
}
|
1975
|
-
|
1976
|
-
/**
|
1977
|
-
* Gets a valid number for the specified country calling code for a non-geographical entity.
|
1978
|
-
*
|
1979
|
-
* @param countryCallingCode the country calling code for a non-geographical entity
|
1980
|
-
* @return a valid number for the non-geographical entity. Returns null when the metadata
|
1981
|
-
* does not contain such information, or the country calling code passed in does not belong
|
1982
|
-
* to a non-geographical entity.
|
1983
|
-
*/
|
1984
|
-
public PhoneNumber getExampleNumberForNonGeoEntity(int countryCallingCode) {
|
1985
|
-
PhoneMetadata metadata = getMetadataForNonGeographicalRegion(countryCallingCode);
|
1986
|
-
if (metadata != null) {
|
1987
|
-
PhoneNumberDesc desc = metadata.generalDesc;
|
1988
|
-
try {
|
1989
|
-
if (!desc.exampleNumber.equals("")) {
|
1990
|
-
return parse("+" + countryCallingCode + desc.exampleNumber, UNKNOWN_REGION);
|
1991
|
-
}
|
1992
|
-
} catch (NumberParseException e) {
|
1993
|
-
logger.log(Level.SEVERE, e.toString());
|
1994
|
-
}
|
1995
|
-
} else {
|
1996
|
-
logger.log(Level.WARNING,
|
1997
|
-
"Invalid or unknown country calling code provided: " + countryCallingCode);
|
1998
|
-
}
|
1999
|
-
return null;
|
2000
|
-
}
|
2001
|
-
|
2002
|
-
/**
|
2003
|
-
* Appends the formatted extension of a phone number to formattedNumber, if the phone number had
|
2004
|
-
* an extension specified.
|
2005
|
-
*/
|
2006
|
-
private void maybeAppendFormattedExtension(PhoneNumber number, PhoneMetadata metadata,
|
2007
|
-
PhoneNumberFormat numberFormat,
|
2008
|
-
StringBuilder formattedNumber) {
|
2009
|
-
if (number.hasExtension() && number.getExtension().length() > 0) {
|
2010
|
-
if (numberFormat == PhoneNumberFormat.RFC3966) {
|
2011
|
-
formattedNumber.append(RFC3966_EXTN_PREFIX).append(number.getExtension());
|
2012
|
-
} else {
|
2013
|
-
if (!metadata.preferredExtnPrefix.equals("")) {
|
2014
|
-
formattedNumber.append(metadata.preferredExtnPrefix).append(number.getExtension());
|
2015
|
-
} else {
|
2016
|
-
formattedNumber.append(DEFAULT_EXTN_PREFIX).append(number.getExtension());
|
2017
|
-
}
|
2018
|
-
}
|
2019
|
-
}
|
2020
|
-
}
|
2021
|
-
|
2022
|
-
PhoneNumberDesc getNumberDescByType(PhoneMetadata metadata, PhoneNumberType type) {
|
2023
|
-
switch (type) {
|
2024
|
-
case PREMIUM_RATE:
|
2025
|
-
return metadata.premiumRate;
|
2026
|
-
case TOLL_FREE:
|
2027
|
-
return metadata.tollFree;
|
2028
|
-
case MOBILE:
|
2029
|
-
return metadata.mobile;
|
2030
|
-
case FIXED_LINE:
|
2031
|
-
case FIXED_LINE_OR_MOBILE:
|
2032
|
-
return metadata.fixedLine;
|
2033
|
-
case SHARED_COST:
|
2034
|
-
return metadata.sharedCost;
|
2035
|
-
case VOIP:
|
2036
|
-
return metadata.voip;
|
2037
|
-
case PERSONAL_NUMBER:
|
2038
|
-
return metadata.personalNumber;
|
2039
|
-
case PAGER:
|
2040
|
-
return metadata.pager;
|
2041
|
-
case UAN:
|
2042
|
-
return metadata.uan;
|
2043
|
-
case VOICEMAIL:
|
2044
|
-
return metadata.voicemail;
|
2045
|
-
default:
|
2046
|
-
return metadata.generalDesc;
|
2047
|
-
}
|
2048
|
-
}
|
2049
|
-
|
2050
|
-
/**
|
2051
|
-
* Gets the type of a phone number.
|
2052
|
-
*
|
2053
|
-
* @param number the phone number that we want to know the type
|
2054
|
-
* @return the type of the phone number
|
2055
|
-
*/
|
2056
|
-
public PhoneNumberType getNumberType(PhoneNumber number) {
|
2057
|
-
String regionCode = getRegionCodeForNumber(number);
|
2058
|
-
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(number.getCountryCode(), regionCode);
|
2059
|
-
if (metadata == null) {
|
2060
|
-
return PhoneNumberType.UNKNOWN;
|
2061
|
-
}
|
2062
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
2063
|
-
return getNumberTypeHelper(nationalSignificantNumber, metadata);
|
2064
|
-
}
|
2065
|
-
|
2066
|
-
private PhoneNumberType getNumberTypeHelper(String nationalNumber, PhoneMetadata metadata) {
|
2067
|
-
if (!isNumberMatchingDesc(nationalNumber, metadata.generalDesc)) {
|
2068
|
-
return PhoneNumberType.UNKNOWN;
|
2069
|
-
}
|
2070
|
-
|
2071
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.premiumRate)) {
|
2072
|
-
return PhoneNumberType.PREMIUM_RATE;
|
2073
|
-
}
|
2074
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.tollFree)) {
|
2075
|
-
return PhoneNumberType.TOLL_FREE;
|
2076
|
-
}
|
2077
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.sharedCost)) {
|
2078
|
-
return PhoneNumberType.SHARED_COST;
|
2079
|
-
}
|
2080
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.voip)) {
|
2081
|
-
return PhoneNumberType.VOIP;
|
2082
|
-
}
|
2083
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.personalNumber)) {
|
2084
|
-
return PhoneNumberType.PERSONAL_NUMBER;
|
2085
|
-
}
|
2086
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.pager)) {
|
2087
|
-
return PhoneNumberType.PAGER;
|
2088
|
-
}
|
2089
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.uan)) {
|
2090
|
-
return PhoneNumberType.UAN;
|
2091
|
-
}
|
2092
|
-
if (isNumberMatchingDesc(nationalNumber, metadata.voicemail)) {
|
2093
|
-
return PhoneNumberType.VOICEMAIL;
|
2094
|
-
}
|
2095
|
-
|
2096
|
-
boolean isFixedLine = isNumberMatchingDesc(nationalNumber, metadata.fixedLine);
|
2097
|
-
if (isFixedLine) {
|
2098
|
-
if (metadata.sameMobileAndFixedLinePattern) {
|
2099
|
-
return PhoneNumberType.FIXED_LINE_OR_MOBILE;
|
2100
|
-
} else if (isNumberMatchingDesc(nationalNumber, metadata.mobile)) {
|
2101
|
-
return PhoneNumberType.FIXED_LINE_OR_MOBILE;
|
2102
|
-
}
|
2103
|
-
return PhoneNumberType.FIXED_LINE;
|
2104
|
-
}
|
2105
|
-
// Otherwise, test to see if the number is mobile. Only do this if certain that the patterns for
|
2106
|
-
// mobile and fixed line aren't the same.
|
2107
|
-
if (!metadata.sameMobileAndFixedLinePattern &&
|
2108
|
-
isNumberMatchingDesc(nationalNumber, metadata.mobile)) {
|
2109
|
-
return PhoneNumberType.MOBILE;
|
2110
|
-
}
|
2111
|
-
return PhoneNumberType.UNKNOWN;
|
2112
|
-
}
|
2113
|
-
|
2114
|
-
/**
|
2115
|
-
* Returns the metadata for the given region code or {@code null} if the region code is invalid
|
2116
|
-
* or unknown.
|
2117
|
-
*/
|
2118
|
-
PhoneMetadata getMetadataForRegion(String regionCode) {
|
2119
|
-
if (!isValidRegionCode(regionCode)) {
|
2120
|
-
return null;
|
2121
|
-
}
|
2122
|
-
return metadataSource.getMetadataForRegion(regionCode);
|
2123
|
-
}
|
2124
|
-
|
2125
|
-
PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
|
2126
|
-
if (!countryCallingCodeToRegionCodeMap.containsKey(countryCallingCode)) {
|
2127
|
-
return null;
|
2128
|
-
}
|
2129
|
-
return metadataSource.getMetadataForNonGeographicalRegion(countryCallingCode);
|
2130
|
-
}
|
2131
|
-
|
2132
|
-
boolean isNumberPossibleForDesc(String nationalNumber, PhoneNumberDesc numberDesc) {
|
2133
|
-
Matcher possibleNumberPatternMatcher =
|
2134
|
-
regexCache.getPatternForRegex(numberDesc.possibleNumberPattern)
|
2135
|
-
.matcher(nationalNumber);
|
2136
|
-
return possibleNumberPatternMatcher.matches();
|
2137
|
-
}
|
2138
|
-
|
2139
|
-
boolean isNumberMatchingDesc(String nationalNumber, PhoneNumberDesc numberDesc) {
|
2140
|
-
Matcher nationalNumberPatternMatcher =
|
2141
|
-
regexCache.getPatternForRegex(numberDesc.nationalNumberPattern)
|
2142
|
-
.matcher(nationalNumber);
|
2143
|
-
return isNumberPossibleForDesc(nationalNumber, numberDesc) &&
|
2144
|
-
nationalNumberPatternMatcher.matches();
|
2145
|
-
}
|
2146
|
-
|
2147
|
-
/**
|
2148
|
-
* Tests whether a phone number matches a valid pattern. Note this doesn't verify the number
|
2149
|
-
* is actually in use, which is impossible to tell by just looking at a number itself.
|
2150
|
-
*
|
2151
|
-
* @param number the phone number that we want to validate
|
2152
|
-
* @return a boolean that indicates whether the number is of a valid pattern
|
2153
|
-
*/
|
2154
|
-
public boolean isValidNumber(PhoneNumber number) {
|
2155
|
-
String regionCode = getRegionCodeForNumber(number);
|
2156
|
-
return isValidNumberForRegion(number, regionCode);
|
2157
|
-
}
|
2158
|
-
|
2159
|
-
/**
|
2160
|
-
* Tests whether a phone number is valid for a certain region. Note this doesn't verify the number
|
2161
|
-
* is actually in use, which is impossible to tell by just looking at a number itself. If the
|
2162
|
-
* country calling code is not the same as the country calling code for the region, this
|
2163
|
-
* immediately exits with false. After this, the specific number pattern rules for the region are
|
2164
|
-
* examined. This is useful for determining for example whether a particular number is valid for
|
2165
|
-
* Canada, rather than just a valid NANPA number.
|
2166
|
-
* Warning: In most cases, you want to use {@link #isValidNumber} instead. For example, this
|
2167
|
-
* method will mark numbers from British Crown dependencies such as the Isle of Man as invalid for
|
2168
|
-
* the region "GB" (United Kingdom), since it has its own region code, "IM", which may be
|
2169
|
-
* undesirable.
|
2170
|
-
*
|
2171
|
-
* @param number the phone number that we want to validate
|
2172
|
-
* @param regionCode the region that we want to validate the phone number for
|
2173
|
-
* @return a boolean that indicates whether the number is of a valid pattern
|
2174
|
-
*/
|
2175
|
-
public boolean isValidNumberForRegion(PhoneNumber number, String regionCode) {
|
2176
|
-
int countryCode = number.getCountryCode();
|
2177
|
-
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode);
|
2178
|
-
if ((metadata == null) ||
|
2179
|
-
(!REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode) &&
|
2180
|
-
countryCode != getCountryCodeForValidRegion(regionCode))) {
|
2181
|
-
// Either the region code was invalid, or the country calling code for this number does not
|
2182
|
-
// match that of the region code.
|
2183
|
-
return false;
|
2184
|
-
}
|
2185
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
2186
|
-
return getNumberTypeHelper(nationalSignificantNumber, metadata) != PhoneNumberType.UNKNOWN;
|
2187
|
-
}
|
2188
|
-
|
2189
|
-
/**
|
2190
|
-
* Returns the region where a phone number is from. This could be used for geocoding at the region
|
2191
|
-
* level.
|
2192
|
-
*
|
2193
|
-
* @param number the phone number whose origin we want to know
|
2194
|
-
* @return the region where the phone number is from, or null if no region matches this calling
|
2195
|
-
* code
|
2196
|
-
*/
|
2197
|
-
public String getRegionCodeForNumber(PhoneNumber number) {
|
2198
|
-
int countryCode = number.getCountryCode();
|
2199
|
-
List<String> regions = countryCallingCodeToRegionCodeMap.get(countryCode);
|
2200
|
-
if (regions == null) {
|
2201
|
-
String numberString = getNationalSignificantNumber(number);
|
2202
|
-
logger.log(Level.INFO,
|
2203
|
-
"Missing/invalid country_code (" + countryCode + ") for number " + numberString);
|
2204
|
-
return null;
|
2205
|
-
}
|
2206
|
-
if (regions.size() == 1) {
|
2207
|
-
return regions.get(0);
|
2208
|
-
} else {
|
2209
|
-
return getRegionCodeForNumberFromRegionList(number, regions);
|
2210
|
-
}
|
2211
|
-
}
|
2212
|
-
|
2213
|
-
private String getRegionCodeForNumberFromRegionList(PhoneNumber number,
|
2214
|
-
List<String> regionCodes) {
|
2215
|
-
String nationalNumber = getNationalSignificantNumber(number);
|
2216
|
-
for (String regionCode : regionCodes) {
|
2217
|
-
// If leadingDigits is present, use this. Otherwise, do full validation.
|
2218
|
-
// Metadata cannot be null because the region codes come from the country calling code map.
|
2219
|
-
PhoneMetadata metadata = getMetadataForRegion(regionCode);
|
2220
|
-
if (!metadata.leadingDigits.equals("")) {
|
2221
|
-
if (regexCache.getPatternForRegex(metadata.leadingDigits)
|
2222
|
-
.matcher(nationalNumber).lookingAt()) {
|
2223
|
-
return regionCode;
|
2224
|
-
}
|
2225
|
-
} else if (getNumberTypeHelper(nationalNumber, metadata) != PhoneNumberType.UNKNOWN) {
|
2226
|
-
return regionCode;
|
2227
|
-
}
|
2228
|
-
}
|
2229
|
-
return null;
|
2230
|
-
}
|
2231
|
-
|
2232
|
-
/**
|
2233
|
-
* Returns the region code that matches the specific country calling code. In the case of no
|
2234
|
-
* region code being found, ZZ will be returned. In the case of multiple regions, the one
|
2235
|
-
* designated in the metadata as the "main" region for this calling code will be returned. If the
|
2236
|
-
* countryCallingCode entered is valid but doesn't match a specific region (such as in the case of
|
2237
|
-
* non-geographical calling codes like 800) the value "001" will be returned (corresponding to
|
2238
|
-
* the value for World in the UN M.49 schema).
|
2239
|
-
*/
|
2240
|
-
public String getRegionCodeForCountryCode(int countryCallingCode) {
|
2241
|
-
List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
|
2242
|
-
return regionCodes == null ? UNKNOWN_REGION : regionCodes.get(0);
|
2243
|
-
}
|
2244
|
-
|
2245
|
-
/**
|
2246
|
-
* Returns a list with the region codes that match the specific country calling code. For
|
2247
|
-
* non-geographical country calling codes, the region code 001 is returned. Also, in the case
|
2248
|
-
* of no region code being found, an empty list is returned.
|
2249
|
-
*/
|
2250
|
-
public List<String> getRegionCodesForCountryCode(int countryCallingCode) {
|
2251
|
-
List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
|
2252
|
-
return Collections.unmodifiableList(regionCodes == null ? new ArrayList<String>(0)
|
2253
|
-
: regionCodes);
|
2254
|
-
}
|
2255
|
-
|
2256
|
-
/**
|
2257
|
-
* Returns the country calling code for a specific region. For example, this would be 1 for the
|
2258
|
-
* United States, and 64 for New Zealand.
|
2259
|
-
*
|
2260
|
-
* @param regionCode the region that we want to get the country calling code for
|
2261
|
-
* @return the country calling code for the region denoted by regionCode
|
2262
|
-
*/
|
2263
|
-
public int getCountryCodeForRegion(String regionCode) {
|
2264
|
-
if (!isValidRegionCode(regionCode)) {
|
2265
|
-
logger.log(Level.WARNING,
|
2266
|
-
"Invalid or missing region code ("
|
2267
|
-
+ ((regionCode == null) ? "null" : regionCode)
|
2268
|
-
+ ") provided.");
|
2269
|
-
return 0;
|
2270
|
-
}
|
2271
|
-
return getCountryCodeForValidRegion(regionCode);
|
2272
|
-
}
|
2273
|
-
|
2274
|
-
/**
|
2275
|
-
* Returns the country calling code for a specific region. For example, this would be 1 for the
|
2276
|
-
* United States, and 64 for New Zealand. Assumes the region is already valid.
|
2277
|
-
*
|
2278
|
-
* @param regionCode the region that we want to get the country calling code for
|
2279
|
-
* @return the country calling code for the region denoted by regionCode
|
2280
|
-
* @throws IllegalArgumentException if the region is invalid
|
2281
|
-
*/
|
2282
|
-
private int getCountryCodeForValidRegion(String regionCode) {
|
2283
|
-
PhoneMetadata metadata = getMetadataForRegion(regionCode);
|
2284
|
-
if (metadata == null) {
|
2285
|
-
throw new IllegalArgumentException("Invalid region code: " + regionCode);
|
2286
|
-
}
|
2287
|
-
return metadata.countryCode;
|
2288
|
-
}
|
2289
|
-
|
2290
|
-
/**
|
2291
|
-
* Returns the national dialling prefix for a specific region. For example, this would be 1 for
|
2292
|
-
* the United States, and 0 for New Zealand. Set stripNonDigits to true to strip symbols like "~"
|
2293
|
-
* (which indicates a wait for a dialling tone) from the prefix returned. If no national prefix is
|
2294
|
-
* present, we return null.
|
2295
|
-
*
|
2296
|
-
* <p>Warning: Do not use this method for do-your-own formatting - for some regions, the
|
2297
|
-
* national dialling prefix is used only for certain types of numbers. Use the library's
|
2298
|
-
* formatting functions to prefix the national prefix when required.
|
2299
|
-
*
|
2300
|
-
* @param regionCode the region that we want to get the dialling prefix for
|
2301
|
-
* @param stripNonDigits true to strip non-digits from the national dialling prefix
|
2302
|
-
* @return the dialling prefix for the region denoted by regionCode
|
2303
|
-
*/
|
2304
|
-
public String getNddPrefixForRegion(String regionCode, boolean stripNonDigits) {
|
2305
|
-
PhoneMetadata metadata = getMetadataForRegion(regionCode);
|
2306
|
-
if (metadata == null) {
|
2307
|
-
logger.log(Level.WARNING,
|
2308
|
-
"Invalid or missing region code ("
|
2309
|
-
+ ((regionCode == null) ? "null" : regionCode)
|
2310
|
-
+ ") provided.");
|
2311
|
-
return null;
|
2312
|
-
}
|
2313
|
-
String nationalPrefix = metadata.nationalPrefix;
|
2314
|
-
// If no national prefix was found, we return null.
|
2315
|
-
if (nationalPrefix.length() == 0) {
|
2316
|
-
return null;
|
2317
|
-
}
|
2318
|
-
if (stripNonDigits) {
|
2319
|
-
// Note: if any other non-numeric symbols are ever used in national prefixes, these would have
|
2320
|
-
// to be removed here as well.
|
2321
|
-
nationalPrefix = nationalPrefix.replace("~", "");
|
2322
|
-
}
|
2323
|
-
return nationalPrefix;
|
2324
|
-
}
|
2325
|
-
|
2326
|
-
/**
|
2327
|
-
* Checks if this is a region under the North American Numbering Plan Administration (NANPA).
|
2328
|
-
*
|
2329
|
-
* @return true if regionCode is one of the regions under NANPA
|
2330
|
-
*/
|
2331
|
-
public boolean isNANPACountry(String regionCode) {
|
2332
|
-
return nanpaRegions.contains(regionCode);
|
2333
|
-
}
|
2334
|
-
|
2335
|
-
/**
|
2336
|
-
* Checks whether the country calling code is from a region whose national significant number
|
2337
|
-
* could contain a leading zero. An example of such a region is Italy. Returns false if no
|
2338
|
-
* metadata for the country is found.
|
2339
|
-
*/
|
2340
|
-
boolean isLeadingZeroPossible(int countryCallingCode) {
|
2341
|
-
PhoneMetadata mainMetadataForCallingCode =
|
2342
|
-
getMetadataForRegionOrCallingCode(countryCallingCode,
|
2343
|
-
getRegionCodeForCountryCode(countryCallingCode));
|
2344
|
-
if (mainMetadataForCallingCode == null) {
|
2345
|
-
return false;
|
2346
|
-
}
|
2347
|
-
return mainMetadataForCallingCode.leadingZeroPossible;
|
2348
|
-
}
|
2349
|
-
|
2350
|
-
/**
|
2351
|
-
* Checks if the number is a valid vanity (alpha) number such as 800 MICROSOFT. A valid vanity
|
2352
|
-
* number will start with at least 3 digits and will have three or more alpha characters. This
|
2353
|
-
* does not do region-specific checks - to work out if this number is actually valid for a region,
|
2354
|
-
* it should be parsed and methods such as {@link #isPossibleNumberWithReason} and
|
2355
|
-
* {@link #isValidNumber} should be used.
|
2356
|
-
*
|
2357
|
-
* @param number the number that needs to be checked
|
2358
|
-
* @return true if the number is a valid vanity number
|
2359
|
-
*/
|
2360
|
-
public boolean isAlphaNumber(String number) {
|
2361
|
-
if (!isViablePhoneNumber(number)) {
|
2362
|
-
// Number is too short, or doesn't match the basic phone number pattern.
|
2363
|
-
return false;
|
2364
|
-
}
|
2365
|
-
StringBuilder strippedNumber = new StringBuilder(number);
|
2366
|
-
maybeStripExtension(strippedNumber);
|
2367
|
-
return VALID_ALPHA_PHONE_PATTERN.matcher(strippedNumber).matches();
|
2368
|
-
}
|
2369
|
-
|
2370
|
-
/**
|
2371
|
-
* Convenience wrapper around {@link #isPossibleNumberWithReason}. Instead of returning the reason
|
2372
|
-
* for failure, this method returns a boolean value.
|
2373
|
-
* @param number the number that needs to be checked
|
2374
|
-
* @return true if the number is possible
|
2375
|
-
*/
|
2376
|
-
public boolean isPossibleNumber(PhoneNumber number) {
|
2377
|
-
return isPossibleNumberWithReason(number) == ValidationResult.IS_POSSIBLE;
|
2378
|
-
}
|
2379
|
-
|
2380
|
-
/**
|
2381
|
-
* Helper method to check a number against a particular pattern and determine whether it matches,
|
2382
|
-
* or is too short or too long. Currently, if a number pattern suggests that numbers of length 7
|
2383
|
-
* and 10 are possible, and a number in between these possible lengths is entered, such as of
|
2384
|
-
* length 8, this will return TOO_LONG.
|
2385
|
-
*/
|
2386
|
-
private ValidationResult testNumberLengthAgainstPattern(Pattern numberPattern, String number) {
|
2387
|
-
Matcher numberMatcher = numberPattern.matcher(number);
|
2388
|
-
if (numberMatcher.matches()) {
|
2389
|
-
return ValidationResult.IS_POSSIBLE;
|
2390
|
-
}
|
2391
|
-
if (numberMatcher.lookingAt()) {
|
2392
|
-
return ValidationResult.TOO_LONG;
|
2393
|
-
} else {
|
2394
|
-
return ValidationResult.TOO_SHORT;
|
2395
|
-
}
|
2396
|
-
}
|
2397
|
-
|
2398
|
-
/**
|
2399
|
-
* Helper method to check whether a number is too short to be a regular length phone number in a
|
2400
|
-
* region.
|
2401
|
-
*/
|
2402
|
-
private boolean isShorterThanPossibleNormalNumber(PhoneMetadata regionMetadata, String number) {
|
2403
|
-
Pattern possibleNumberPattern = regexCache.getPatternForRegex(
|
2404
|
-
regionMetadata.generalDesc.possibleNumberPattern);
|
2405
|
-
return testNumberLengthAgainstPattern(possibleNumberPattern, number) ==
|
2406
|
-
ValidationResult.TOO_SHORT;
|
2407
|
-
}
|
2408
|
-
|
2409
|
-
/**
|
2410
|
-
* Check whether a phone number is a possible number. It provides a more lenient check than
|
2411
|
-
* {@link #isValidNumber} in the following sense:
|
2412
|
-
*<ol>
|
2413
|
-
* <li> It only checks the length of phone numbers. In particular, it doesn't check starting
|
2414
|
-
* digits of the number.
|
2415
|
-
* <li> It doesn't attempt to figure out the type of the number, but uses general rules which
|
2416
|
-
* applies to all types of phone numbers in a region. Therefore, it is much faster than
|
2417
|
-
* isValidNumber.
|
2418
|
-
* <li> For fixed line numbers, many regions have the concept of area code, which together with
|
2419
|
-
* subscriber number constitute the national significant number. It is sometimes okay to dial
|
2420
|
-
* the subscriber number only when dialing in the same area. This function will return
|
2421
|
-
* true if the subscriber-number-only version is passed in. On the other hand, because
|
2422
|
-
* isValidNumber validates using information on both starting digits (for fixed line
|
2423
|
-
* numbers, that would most likely be area codes) and length (obviously includes the
|
2424
|
-
* length of area codes for fixed line numbers), it will return false for the
|
2425
|
-
* subscriber-number-only version.
|
2426
|
-
* </ol>
|
2427
|
-
* @param number the number that needs to be checked
|
2428
|
-
* @return a ValidationResult object which indicates whether the number is possible
|
2429
|
-
*/
|
2430
|
-
public ValidationResult isPossibleNumberWithReason(PhoneNumber number) {
|
2431
|
-
String nationalNumber = getNationalSignificantNumber(number);
|
2432
|
-
int countryCode = number.getCountryCode();
|
2433
|
-
// Note: For Russian Fed and NANPA numbers, we just use the rules from the default region (US or
|
2434
|
-
// Russia) since the getRegionCodeForNumber will not work if the number is possible but not
|
2435
|
-
// valid. This would need to be revisited if the possible number pattern ever differed between
|
2436
|
-
// various regions within those plans.
|
2437
|
-
if (!hasValidCountryCallingCode(countryCode)) {
|
2438
|
-
return ValidationResult.INVALID_COUNTRY_CODE;
|
2439
|
-
}
|
2440
|
-
String regionCode = getRegionCodeForCountryCode(countryCode);
|
2441
|
-
// Metadata cannot be null because the country calling code is valid.
|
2442
|
-
PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode);
|
2443
|
-
Pattern possibleNumberPattern =
|
2444
|
-
regexCache.getPatternForRegex(metadata.generalDesc.possibleNumberPattern);
|
2445
|
-
return testNumberLengthAgainstPattern(possibleNumberPattern, nationalNumber);
|
2446
|
-
}
|
2447
|
-
|
2448
|
-
/**
|
2449
|
-
* Check whether a phone number is a possible number given a number in the form of a string, and
|
2450
|
-
* the region where the number could be dialed from. It provides a more lenient check than
|
2451
|
-
* {@link #isValidNumber}. See {@link #isPossibleNumber(PhoneNumber)} for details.
|
2452
|
-
*
|
2453
|
-
* <p>This method first parses the number, then invokes {@link #isPossibleNumber(PhoneNumber)}
|
2454
|
-
* with the resultant PhoneNumber object.
|
2455
|
-
*
|
2456
|
-
* @param number the number that needs to be checked, in the form of a string
|
2457
|
-
* @param regionDialingFrom the region that we are expecting the number to be dialed from.
|
2458
|
-
* Note this is different from the region where the number belongs. For example, the number
|
2459
|
-
* +1 650 253 0000 is a number that belongs to US. When written in this form, it can be
|
2460
|
-
* dialed from any region. When it is written as 00 1 650 253 0000, it can be dialed from any
|
2461
|
-
* region which uses an international dialling prefix of 00. When it is written as
|
2462
|
-
* 650 253 0000, it can only be dialed from within the US, and when written as 253 0000, it
|
2463
|
-
* can only be dialed from within a smaller area in the US (Mountain View, CA, to be more
|
2464
|
-
* specific).
|
2465
|
-
* @return true if the number is possible
|
2466
|
-
*/
|
2467
|
-
public boolean isPossibleNumber(String number, String regionDialingFrom) {
|
2468
|
-
try {
|
2469
|
-
return isPossibleNumber(parse(number, regionDialingFrom));
|
2470
|
-
} catch (NumberParseException e) {
|
2471
|
-
return false;
|
2472
|
-
}
|
2473
|
-
}
|
2474
|
-
|
2475
|
-
/**
|
2476
|
-
* Attempts to extract a valid number from a phone number that is too long to be valid, and resets
|
2477
|
-
* the PhoneNumber object passed in to that valid version. If no valid number could be extracted,
|
2478
|
-
* the PhoneNumber object passed in will not be modified.
|
2479
|
-
* @param number a PhoneNumber object which contains a number that is too long to be valid.
|
2480
|
-
* @return true if a valid phone number can be successfully extracted.
|
2481
|
-
*/
|
2482
|
-
public boolean truncateTooLongNumber(PhoneNumber number) {
|
2483
|
-
if (isValidNumber(number)) {
|
2484
|
-
return true;
|
2485
|
-
}
|
2486
|
-
PhoneNumber numberCopy = new PhoneNumber();
|
2487
|
-
numberCopy.mergeFrom(number);
|
2488
|
-
long nationalNumber = number.getNationalNumber();
|
2489
|
-
do {
|
2490
|
-
nationalNumber /= 10;
|
2491
|
-
numberCopy.setNationalNumber(nationalNumber);
|
2492
|
-
if (isPossibleNumberWithReason(numberCopy) == ValidationResult.TOO_SHORT ||
|
2493
|
-
nationalNumber == 0) {
|
2494
|
-
return false;
|
2495
|
-
}
|
2496
|
-
} while (!isValidNumber(numberCopy));
|
2497
|
-
number.setNationalNumber(nationalNumber);
|
2498
|
-
return true;
|
2499
|
-
}
|
2500
|
-
|
2501
|
-
/**
|
2502
|
-
* Gets an {@link com.google.i18n.phonenumbers.AsYouTypeFormatter} for the specific region.
|
2503
|
-
*
|
2504
|
-
* @param regionCode the region where the phone number is being entered
|
2505
|
-
* @return an {@link com.google.i18n.phonenumbers.AsYouTypeFormatter} object, which can be used
|
2506
|
-
* to format phone numbers in the specific region "as you type"
|
2507
|
-
*/
|
2508
|
-
public AsYouTypeFormatter getAsYouTypeFormatter(String regionCode) {
|
2509
|
-
return new AsYouTypeFormatter(regionCode);
|
2510
|
-
}
|
2511
|
-
|
2512
|
-
// Extracts country calling code from fullNumber, returns it and places the remaining number in
|
2513
|
-
// nationalNumber. It assumes that the leading plus sign or IDD has already been removed. Returns
|
2514
|
-
// 0 if fullNumber doesn't start with a valid country calling code, and leaves nationalNumber
|
2515
|
-
// unmodified.
|
2516
|
-
int extractCountryCode(StringBuilder fullNumber, StringBuilder nationalNumber) {
|
2517
|
-
if ((fullNumber.length() == 0) || (fullNumber.charAt(0) == '0')) {
|
2518
|
-
// Country codes do not begin with a '0'.
|
2519
|
-
return 0;
|
2520
|
-
}
|
2521
|
-
int potentialCountryCode;
|
2522
|
-
int numberLength = fullNumber.length();
|
2523
|
-
for (int i = 1; i <= MAX_LENGTH_COUNTRY_CODE && i <= numberLength; i++) {
|
2524
|
-
potentialCountryCode = Integer.parseInt(fullNumber.substring(0, i));
|
2525
|
-
if (countryCallingCodeToRegionCodeMap.containsKey(potentialCountryCode)) {
|
2526
|
-
nationalNumber.append(fullNumber.substring(i));
|
2527
|
-
return potentialCountryCode;
|
2528
|
-
}
|
2529
|
-
}
|
2530
|
-
return 0;
|
2531
|
-
}
|
2532
|
-
|
2533
|
-
/**
|
2534
|
-
* Tries to extract a country calling code from a number. This method will return zero if no
|
2535
|
-
* country calling code is considered to be present. Country calling codes are extracted in the
|
2536
|
-
* following ways:
|
2537
|
-
* <ul>
|
2538
|
-
* <li> by stripping the international dialing prefix of the region the person is dialing from,
|
2539
|
-
* if this is present in the number, and looking at the next digits
|
2540
|
-
* <li> by stripping the '+' sign if present and then looking at the next digits
|
2541
|
-
* <li> by comparing the start of the number and the country calling code of the default region.
|
2542
|
-
* If the number is not considered possible for the numbering plan of the default region
|
2543
|
-
* initially, but starts with the country calling code of this region, validation will be
|
2544
|
-
* reattempted after stripping this country calling code. If this number is considered a
|
2545
|
-
* possible number, then the first digits will be considered the country calling code and
|
2546
|
-
* removed as such.
|
2547
|
-
* </ul>
|
2548
|
-
* It will throw a NumberParseException if the number starts with a '+' but the country calling
|
2549
|
-
* code supplied after this does not match that of any known region.
|
2550
|
-
*
|
2551
|
-
* @param number non-normalized telephone number that we wish to extract a country calling
|
2552
|
-
* code from - may begin with '+'
|
2553
|
-
* @param defaultRegionMetadata metadata about the region this number may be from
|
2554
|
-
* @param nationalNumber a string buffer to store the national significant number in, in the case
|
2555
|
-
* that a country calling code was extracted. The number is appended to any existing contents.
|
2556
|
-
* If no country calling code was extracted, this will be left unchanged.
|
2557
|
-
* @param keepRawInput true if the country_code_source and preferred_carrier_code fields of
|
2558
|
-
* phoneNumber should be populated.
|
2559
|
-
* @param phoneNumber the PhoneNumber object where the country_code and country_code_source need
|
2560
|
-
* to be populated. Note the country_code is always populated, whereas country_code_source is
|
2561
|
-
* only populated when keepCountryCodeSource is true.
|
2562
|
-
* @return the country calling code extracted or 0 if none could be extracted
|
2563
|
-
*/
|
2564
|
-
// @VisibleForTesting
|
2565
|
-
int maybeExtractCountryCode(String number, PhoneMetadata defaultRegionMetadata,
|
2566
|
-
StringBuilder nationalNumber, boolean keepRawInput,
|
2567
|
-
PhoneNumber phoneNumber)
|
2568
|
-
throws NumberParseException {
|
2569
|
-
if (number.length() == 0) {
|
2570
|
-
return 0;
|
2571
|
-
}
|
2572
|
-
StringBuilder fullNumber = new StringBuilder(number);
|
2573
|
-
// Set the default prefix to be something that will never match.
|
2574
|
-
String possibleCountryIddPrefix = "NonMatch";
|
2575
|
-
if (defaultRegionMetadata != null) {
|
2576
|
-
possibleCountryIddPrefix = defaultRegionMetadata.internationalPrefix;
|
2577
|
-
}
|
2578
|
-
|
2579
|
-
CountryCodeSource countryCodeSource =
|
2580
|
-
maybeStripInternationalPrefixAndNormalize(fullNumber, possibleCountryIddPrefix);
|
2581
|
-
if (keepRawInput) {
|
2582
|
-
phoneNumber.setCountryCodeSource(countryCodeSource);
|
2583
|
-
}
|
2584
|
-
if (countryCodeSource != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
|
2585
|
-
if (fullNumber.length() <= MIN_LENGTH_FOR_NSN) {
|
2586
|
-
throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_AFTER_IDD,
|
2587
|
-
"Phone number had an IDD, but after this was not "
|
2588
|
-
+ "long enough to be a viable phone number.");
|
2589
|
-
}
|
2590
|
-
int potentialCountryCode = extractCountryCode(fullNumber, nationalNumber);
|
2591
|
-
if (potentialCountryCode != 0) {
|
2592
|
-
phoneNumber.setCountryCode(potentialCountryCode);
|
2593
|
-
return potentialCountryCode;
|
2594
|
-
}
|
2595
|
-
|
2596
|
-
// If this fails, they must be using a strange country calling code that we don't recognize,
|
2597
|
-
// or that doesn't exist.
|
2598
|
-
throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
|
2599
|
-
"Country calling code supplied was not recognised.");
|
2600
|
-
} else if (defaultRegionMetadata != null) {
|
2601
|
-
// Check to see if the number starts with the country calling code for the default region. If
|
2602
|
-
// so, we remove the country calling code, and do some checks on the validity of the number
|
2603
|
-
// before and after.
|
2604
|
-
int defaultCountryCode = defaultRegionMetadata.countryCode;
|
2605
|
-
String defaultCountryCodeString = String.valueOf(defaultCountryCode);
|
2606
|
-
String normalizedNumber = fullNumber.toString();
|
2607
|
-
if (normalizedNumber.startsWith(defaultCountryCodeString)) {
|
2608
|
-
StringBuilder potentialNationalNumber =
|
2609
|
-
new StringBuilder(normalizedNumber.substring(defaultCountryCodeString.length()));
|
2610
|
-
PhoneNumberDesc generalDesc = defaultRegionMetadata.generalDesc;
|
2611
|
-
Pattern validNumberPattern =
|
2612
|
-
regexCache.getPatternForRegex(generalDesc.nationalNumberPattern);
|
2613
|
-
maybeStripNationalPrefixAndCarrierCode(
|
2614
|
-
potentialNationalNumber, defaultRegionMetadata, null /* Don't need the carrier code */);
|
2615
|
-
Pattern possibleNumberPattern =
|
2616
|
-
regexCache.getPatternForRegex(generalDesc.possibleNumberPattern);
|
2617
|
-
// If the number was not valid before but is valid now, or if it was too long before, we
|
2618
|
-
// consider the number with the country calling code stripped to be a better result and
|
2619
|
-
// keep that instead.
|
2620
|
-
if ((!validNumberPattern.matcher(fullNumber).matches() &&
|
2621
|
-
validNumberPattern.matcher(potentialNationalNumber).matches()) ||
|
2622
|
-
testNumberLengthAgainstPattern(possibleNumberPattern, fullNumber.toString())
|
2623
|
-
== ValidationResult.TOO_LONG) {
|
2624
|
-
nationalNumber.append(potentialNationalNumber);
|
2625
|
-
if (keepRawInput) {
|
2626
|
-
phoneNumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
|
2627
|
-
}
|
2628
|
-
phoneNumber.setCountryCode(defaultCountryCode);
|
2629
|
-
return defaultCountryCode;
|
2630
|
-
}
|
2631
|
-
}
|
2632
|
-
}
|
2633
|
-
// No country calling code present.
|
2634
|
-
phoneNumber.setCountryCode(0);
|
2635
|
-
return 0;
|
2636
|
-
}
|
2637
|
-
|
2638
|
-
/**
|
2639
|
-
* Strips the IDD from the start of the number if present. Helper function used by
|
2640
|
-
* maybeStripInternationalPrefixAndNormalize.
|
2641
|
-
*/
|
2642
|
-
private boolean parsePrefixAsIdd(Pattern iddPattern, StringBuilder number) {
|
2643
|
-
Matcher m = iddPattern.matcher(number);
|
2644
|
-
if (m.lookingAt()) {
|
2645
|
-
int matchEnd = m.end();
|
2646
|
-
// Only strip this if the first digit after the match is not a 0, since country calling codes
|
2647
|
-
// cannot begin with 0.
|
2648
|
-
Matcher digitMatcher = CAPTURING_DIGIT_PATTERN.matcher(number.substring(matchEnd));
|
2649
|
-
if (digitMatcher.find()) {
|
2650
|
-
String normalizedGroup = normalizeDigitsOnly(digitMatcher.group(1));
|
2651
|
-
if (normalizedGroup.equals("0")) {
|
2652
|
-
return false;
|
2653
|
-
}
|
2654
|
-
}
|
2655
|
-
number.delete(0, matchEnd);
|
2656
|
-
return true;
|
2657
|
-
}
|
2658
|
-
return false;
|
2659
|
-
}
|
2660
|
-
|
2661
|
-
/**
|
2662
|
-
* Strips any international prefix (such as +, 00, 011) present in the number provided, normalizes
|
2663
|
-
* the resulting number, and indicates if an international prefix was present.
|
2664
|
-
*
|
2665
|
-
* @param number the non-normalized telephone number that we wish to strip any international
|
2666
|
-
* dialing prefix from.
|
2667
|
-
* @param possibleIddPrefix the international direct dialing prefix from the region we
|
2668
|
-
* think this number may be dialed in
|
2669
|
-
* @return the corresponding CountryCodeSource if an international dialing prefix could be
|
2670
|
-
* removed from the number, otherwise CountryCodeSource.FROM_DEFAULT_COUNTRY if the number did
|
2671
|
-
* not seem to be in international format.
|
2672
|
-
*/
|
2673
|
-
// @VisibleForTesting
|
2674
|
-
CountryCodeSource maybeStripInternationalPrefixAndNormalize(
|
2675
|
-
StringBuilder number,
|
2676
|
-
String possibleIddPrefix) {
|
2677
|
-
if (number.length() == 0) {
|
2678
|
-
return CountryCodeSource.FROM_DEFAULT_COUNTRY;
|
2679
|
-
}
|
2680
|
-
// Check to see if the number begins with one or more plus signs.
|
2681
|
-
Matcher m = PLUS_CHARS_PATTERN.matcher(number);
|
2682
|
-
if (m.lookingAt()) {
|
2683
|
-
number.delete(0, m.end());
|
2684
|
-
// Can now normalize the rest of the number since we've consumed the "+" sign at the start.
|
2685
|
-
normalize(number);
|
2686
|
-
return CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN;
|
2687
|
-
}
|
2688
|
-
// Attempt to parse the first digits as an international prefix.
|
2689
|
-
Pattern iddPattern = regexCache.getPatternForRegex(possibleIddPrefix);
|
2690
|
-
normalize(number);
|
2691
|
-
return parsePrefixAsIdd(iddPattern, number)
|
2692
|
-
? CountryCodeSource.FROM_NUMBER_WITH_IDD
|
2693
|
-
: CountryCodeSource.FROM_DEFAULT_COUNTRY;
|
2694
|
-
}
|
2695
|
-
|
2696
|
-
/**
|
2697
|
-
* Strips any national prefix (such as 0, 1) present in the number provided.
|
2698
|
-
*
|
2699
|
-
* @param number the normalized telephone number that we wish to strip any national
|
2700
|
-
* dialing prefix from
|
2701
|
-
* @param metadata the metadata for the region that we think this number is from
|
2702
|
-
* @param carrierCode a place to insert the carrier code if one is extracted
|
2703
|
-
* @return true if a national prefix or carrier code (or both) could be extracted.
|
2704
|
-
*/
|
2705
|
-
// @VisibleForTesting
|
2706
|
-
boolean maybeStripNationalPrefixAndCarrierCode(
|
2707
|
-
StringBuilder number, PhoneMetadata metadata, StringBuilder carrierCode) {
|
2708
|
-
int numberLength = number.length();
|
2709
|
-
String possibleNationalPrefix = metadata.nationalPrefixForParsing;
|
2710
|
-
if (numberLength == 0 || possibleNationalPrefix.length() == 0) {
|
2711
|
-
// Early return for numbers of zero length.
|
2712
|
-
return false;
|
2713
|
-
}
|
2714
|
-
// Attempt to parse the first digits as a national prefix.
|
2715
|
-
Matcher prefixMatcher = regexCache.getPatternForRegex(possibleNationalPrefix).matcher(number);
|
2716
|
-
if (prefixMatcher.lookingAt()) {
|
2717
|
-
Pattern nationalNumberRule =
|
2718
|
-
regexCache.getPatternForRegex(metadata.generalDesc.nationalNumberPattern);
|
2719
|
-
// Check if the original number is viable.
|
2720
|
-
boolean isViableOriginalNumber = nationalNumberRule.matcher(number).matches();
|
2721
|
-
// prefixMatcher.group(numOfGroups) == null implies nothing was captured by the capturing
|
2722
|
-
// groups in possibleNationalPrefix; therefore, no transformation is necessary, and we just
|
2723
|
-
// remove the national prefix.
|
2724
|
-
int numOfGroups = prefixMatcher.groupCount();
|
2725
|
-
String transformRule = metadata.nationalPrefixTransformRule;
|
2726
|
-
if (transformRule == null || transformRule.length() == 0 ||
|
2727
|
-
prefixMatcher.group(numOfGroups) == null) {
|
2728
|
-
// If the original number was viable, and the resultant number is not, we return.
|
2729
|
-
if (isViableOriginalNumber &&
|
2730
|
-
!nationalNumberRule.matcher(number.substring(prefixMatcher.end())).matches()) {
|
2731
|
-
return false;
|
2732
|
-
}
|
2733
|
-
if (carrierCode != null && numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {
|
2734
|
-
carrierCode.append(prefixMatcher.group(1));
|
2735
|
-
}
|
2736
|
-
number.delete(0, prefixMatcher.end());
|
2737
|
-
return true;
|
2738
|
-
} else {
|
2739
|
-
// Check that the resultant number is still viable. If not, return. Check this by copying
|
2740
|
-
// the string buffer and making the transformation on the copy first.
|
2741
|
-
StringBuilder transformedNumber = new StringBuilder(number);
|
2742
|
-
transformedNumber.replace(0, numberLength, prefixMatcher.replaceFirst(transformRule));
|
2743
|
-
if (isViableOriginalNumber &&
|
2744
|
-
!nationalNumberRule.matcher(transformedNumber.toString()).matches()) {
|
2745
|
-
return false;
|
2746
|
-
}
|
2747
|
-
if (carrierCode != null && numOfGroups > 1) {
|
2748
|
-
carrierCode.append(prefixMatcher.group(1));
|
2749
|
-
}
|
2750
|
-
number.replace(0, number.length(), transformedNumber.toString());
|
2751
|
-
return true;
|
2752
|
-
}
|
2753
|
-
}
|
2754
|
-
return false;
|
2755
|
-
}
|
2756
|
-
|
2757
|
-
/**
|
2758
|
-
* Strips any extension (as in, the part of the number dialled after the call is connected,
|
2759
|
-
* usually indicated with extn, ext, x or similar) from the end of the number, and returns it.
|
2760
|
-
*
|
2761
|
-
* @param number the non-normalized telephone number that we wish to strip the extension from
|
2762
|
-
* @return the phone extension
|
2763
|
-
*/
|
2764
|
-
// @VisibleForTesting
|
2765
|
-
String maybeStripExtension(StringBuilder number) {
|
2766
|
-
Matcher m = EXTN_PATTERN.matcher(number);
|
2767
|
-
// If we find a potential extension, and the number preceding this is a viable number, we assume
|
2768
|
-
// it is an extension.
|
2769
|
-
if (m.find() && isViablePhoneNumber(number.substring(0, m.start()))) {
|
2770
|
-
// The numbers are captured into groups in the regular expression.
|
2771
|
-
for (int i = 1, length = m.groupCount(); i <= length; i++) {
|
2772
|
-
if (m.group(i) != null) {
|
2773
|
-
// We go through the capturing groups until we find one that captured some digits. If none
|
2774
|
-
// did, then we will return the empty string.
|
2775
|
-
String extension = m.group(i);
|
2776
|
-
number.delete(m.start(), number.length());
|
2777
|
-
return extension;
|
2778
|
-
}
|
2779
|
-
}
|
2780
|
-
}
|
2781
|
-
return "";
|
2782
|
-
}
|
2783
|
-
|
2784
|
-
/**
|
2785
|
-
* Checks to see that the region code used is valid, or if it is not valid, that the number to
|
2786
|
-
* parse starts with a + symbol so that we can attempt to infer the region from the number.
|
2787
|
-
* Returns false if it cannot use the region provided and the region cannot be inferred.
|
2788
|
-
*/
|
2789
|
-
private boolean checkRegionForParsing(String numberToParse, String defaultRegion) {
|
2790
|
-
if (!isValidRegionCode(defaultRegion)) {
|
2791
|
-
// If the number is null or empty, we can't infer the region.
|
2792
|
-
if ((numberToParse == null) || (numberToParse.length() == 0) ||
|
2793
|
-
!PLUS_CHARS_PATTERN.matcher(numberToParse).lookingAt()) {
|
2794
|
-
return false;
|
2795
|
-
}
|
2796
|
-
}
|
2797
|
-
return true;
|
2798
|
-
}
|
2799
|
-
|
2800
|
-
/**
|
2801
|
-
* Parses a string and returns it as a phone number in proto buffer format. The method is quite
|
2802
|
-
* lenient and looks for a number in the input text (raw input) and does not check whether the
|
2803
|
-
* string is definitely only a phone number. To do this, it ignores punctuation and white-space,
|
2804
|
-
* as well as any text before the number (e.g. a leading "Tel: ") and trims the non-number bits.
|
2805
|
-
* It will accept a number in any format (E164, national, international etc), assuming it can be
|
2806
|
-
* interpreted with the defaultRegion supplied. It also attempts to convert any alpha characters
|
2807
|
-
* into digits if it thinks this is a vanity number of the type "1800 MICROSOFT".
|
2808
|
-
*
|
2809
|
-
* <p> This method will throw a {@link com.google.i18n.phonenumbers.NumberParseException} if the
|
2810
|
-
* number is not considered to be a possible number. Note that validation of whether the number
|
2811
|
-
* is actually a valid number for a particular region is not performed. This can be done
|
2812
|
-
* separately with {@link #isValidNumber}.
|
2813
|
-
*
|
2814
|
-
* @param numberToParse number that we are attempting to parse. This can contain formatting
|
2815
|
-
* such as +, ( and -, as well as a phone number extension. It can also
|
2816
|
-
* be provided in RFC3966 format.
|
2817
|
-
* @param defaultRegion region that we are expecting the number to be from. This is only used
|
2818
|
-
* if the number being parsed is not written in international format.
|
2819
|
-
* The country_code for the number in this case would be stored as that
|
2820
|
-
* of the default region supplied. If the number is guaranteed to
|
2821
|
-
* start with a '+' followed by the country calling code, then
|
2822
|
-
* "ZZ" or null can be supplied.
|
2823
|
-
* @return a phone number proto buffer filled with the parsed number
|
2824
|
-
* @throws NumberParseException if the string is not considered to be a viable phone number (e.g.
|
2825
|
-
* too few or too many digits) or if no default region was supplied
|
2826
|
-
* and the number is not in international format (does not start
|
2827
|
-
* with +)
|
2828
|
-
*/
|
2829
|
-
public PhoneNumber parse(String numberToParse, String defaultRegion)
|
2830
|
-
throws NumberParseException {
|
2831
|
-
PhoneNumber phoneNumber = new PhoneNumber();
|
2832
|
-
parse(numberToParse, defaultRegion, phoneNumber);
|
2833
|
-
return phoneNumber;
|
2834
|
-
}
|
2835
|
-
|
2836
|
-
/**
|
2837
|
-
* Same as {@link #parse(String, String)}, but accepts mutable PhoneNumber as a parameter to
|
2838
|
-
* decrease object creation when invoked many times.
|
2839
|
-
*/
|
2840
|
-
public void parse(String numberToParse, String defaultRegion, PhoneNumber phoneNumber)
|
2841
|
-
throws NumberParseException {
|
2842
|
-
parseHelper(numberToParse, defaultRegion, false, true, phoneNumber);
|
2843
|
-
}
|
2844
|
-
|
2845
|
-
/**
|
2846
|
-
* Parses a string and returns it in proto buffer format. This method differs from {@link #parse}
|
2847
|
-
* in that it always populates the raw_input field of the protocol buffer with numberToParse as
|
2848
|
-
* well as the country_code_source field.
|
2849
|
-
*
|
2850
|
-
* @param numberToParse number that we are attempting to parse. This can contain formatting
|
2851
|
-
* such as +, ( and -, as well as a phone number extension.
|
2852
|
-
* @param defaultRegion region that we are expecting the number to be from. This is only used
|
2853
|
-
* if the number being parsed is not written in international format.
|
2854
|
-
* The country calling code for the number in this case would be stored
|
2855
|
-
* as that of the default region supplied.
|
2856
|
-
* @return a phone number proto buffer filled with the parsed number
|
2857
|
-
* @throws NumberParseException if the string is not considered to be a viable phone number or if
|
2858
|
-
* no default region was supplied
|
2859
|
-
*/
|
2860
|
-
public PhoneNumber parseAndKeepRawInput(String numberToParse, String defaultRegion)
|
2861
|
-
throws NumberParseException {
|
2862
|
-
PhoneNumber phoneNumber = new PhoneNumber();
|
2863
|
-
parseAndKeepRawInput(numberToParse, defaultRegion, phoneNumber);
|
2864
|
-
return phoneNumber;
|
2865
|
-
}
|
2866
|
-
|
2867
|
-
/**
|
2868
|
-
* Same as{@link #parseAndKeepRawInput(String, String)}, but accepts a mutable PhoneNumber as
|
2869
|
-
* a parameter to decrease object creation when invoked many times.
|
2870
|
-
*/
|
2871
|
-
public void parseAndKeepRawInput(String numberToParse, String defaultRegion,
|
2872
|
-
PhoneNumber phoneNumber)
|
2873
|
-
throws NumberParseException {
|
2874
|
-
parseHelper(numberToParse, defaultRegion, true, true, phoneNumber);
|
2875
|
-
}
|
2876
|
-
|
2877
|
-
/**
|
2878
|
-
* Returns an iterable over all {@link PhoneNumberMatch PhoneNumberMatches} in {@code text}. This
|
2879
|
-
* is a shortcut for {@link #findNumbers(CharSequence, String, Leniency, long)
|
2880
|
-
* getMatcher(text, defaultRegion, Leniency.VALID, Long.MAX_VALUE)}.
|
2881
|
-
*
|
2882
|
-
* @param text the text to search for phone numbers, null for no text
|
2883
|
-
* @param defaultRegion region that we are expecting the number to be from. This is only used
|
2884
|
-
* if the number being parsed is not written in international format. The
|
2885
|
-
* country_code for the number in this case would be stored as that of
|
2886
|
-
* the default region supplied. May be null if only international
|
2887
|
-
* numbers are expected.
|
2888
|
-
*/
|
2889
|
-
public Iterable<PhoneNumberMatch> findNumbers(CharSequence text, String defaultRegion) {
|
2890
|
-
return findNumbers(text, defaultRegion, Leniency.VALID, Long.MAX_VALUE);
|
2891
|
-
}
|
2892
|
-
|
2893
|
-
/**
|
2894
|
-
* Returns an iterable over all {@link PhoneNumberMatch PhoneNumberMatches} in {@code text}.
|
2895
|
-
*
|
2896
|
-
* @param text the text to search for phone numbers, null for no text
|
2897
|
-
* @param defaultRegion region that we are expecting the number to be from. This is only used
|
2898
|
-
* if the number being parsed is not written in international format. The
|
2899
|
-
* country_code for the number in this case would be stored as that of
|
2900
|
-
* the default region supplied. May be null if only international
|
2901
|
-
* numbers are expected.
|
2902
|
-
* @param leniency the leniency to use when evaluating candidate phone numbers
|
2903
|
-
* @param maxTries the maximum number of invalid numbers to try before giving up on the
|
2904
|
-
* text. This is to cover degenerate cases where the text has a lot of
|
2905
|
-
* false positives in it. Must be {@code >= 0}.
|
2906
|
-
*/
|
2907
|
-
public Iterable<PhoneNumberMatch> findNumbers(
|
2908
|
-
final CharSequence text, final String defaultRegion, final Leniency leniency,
|
2909
|
-
final long maxTries) {
|
2910
|
-
|
2911
|
-
return new Iterable<PhoneNumberMatch>() {
|
2912
|
-
@Override
|
2913
|
-
public Iterator<PhoneNumberMatch> iterator() {
|
2914
|
-
return new PhoneNumberMatcher(
|
2915
|
-
PhoneNumberUtil.this, text, defaultRegion, leniency, maxTries);
|
2916
|
-
}
|
2917
|
-
};
|
2918
|
-
}
|
2919
|
-
|
2920
|
-
/**
|
2921
|
-
* A helper function to set the values related to leading zeros in a PhoneNumber.
|
2922
|
-
*/
|
2923
|
-
static void setItalianLeadingZerosForPhoneNumber(String nationalNumber, PhoneNumber phoneNumber) {
|
2924
|
-
if (nationalNumber.length() > 1 && nationalNumber.charAt(0) == '0') {
|
2925
|
-
phoneNumber.setItalianLeadingZero(true);
|
2926
|
-
int numberOfLeadingZeros = 1;
|
2927
|
-
// Note that if the national number is all "0"s, the last "0" is not counted as a leading
|
2928
|
-
// zero.
|
2929
|
-
while (numberOfLeadingZeros < nationalNumber.length() - 1 &&
|
2930
|
-
nationalNumber.charAt(numberOfLeadingZeros) == '0') {
|
2931
|
-
numberOfLeadingZeros++;
|
2932
|
-
}
|
2933
|
-
if (numberOfLeadingZeros != 1) {
|
2934
|
-
phoneNumber.setNumberOfLeadingZeros(numberOfLeadingZeros);
|
2935
|
-
}
|
2936
|
-
}
|
2937
|
-
}
|
2938
|
-
|
2939
|
-
/**
|
2940
|
-
* Parses a string and fills up the phoneNumber. This method is the same as the public
|
2941
|
-
* parse() method, with the exception that it allows the default region to be null, for use by
|
2942
|
-
* isNumberMatch(). checkRegion should be set to false if it is permitted for the default region
|
2943
|
-
* to be null or unknown ("ZZ").
|
2944
|
-
*/
|
2945
|
-
private void parseHelper(String numberToParse, String defaultRegion, boolean keepRawInput,
|
2946
|
-
boolean checkRegion, PhoneNumber phoneNumber)
|
2947
|
-
throws NumberParseException {
|
2948
|
-
if (numberToParse == null) {
|
2949
|
-
throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER,
|
2950
|
-
"The phone number supplied was null.");
|
2951
|
-
} else if (numberToParse.length() > MAX_INPUT_STRING_LENGTH) {
|
2952
|
-
throw new NumberParseException(NumberParseException.ErrorType.TOO_LONG,
|
2953
|
-
"The string supplied was too long to parse.");
|
2954
|
-
}
|
2955
|
-
|
2956
|
-
StringBuilder nationalNumber = new StringBuilder();
|
2957
|
-
buildNationalNumberForParsing(numberToParse, nationalNumber);
|
2958
|
-
|
2959
|
-
if (!isViablePhoneNumber(nationalNumber.toString())) {
|
2960
|
-
throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER,
|
2961
|
-
"The string supplied did not seem to be a phone number.");
|
2962
|
-
}
|
2963
|
-
|
2964
|
-
// Check the region supplied is valid, or that the extracted number starts with some sort of +
|
2965
|
-
// sign so the number's region can be determined.
|
2966
|
-
if (checkRegion && !checkRegionForParsing(nationalNumber.toString(), defaultRegion)) {
|
2967
|
-
throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
|
2968
|
-
"Missing or invalid default region.");
|
2969
|
-
}
|
2970
|
-
|
2971
|
-
if (keepRawInput) {
|
2972
|
-
phoneNumber.setRawInput(numberToParse);
|
2973
|
-
}
|
2974
|
-
// Attempt to parse extension first, since it doesn't require region-specific data and we want
|
2975
|
-
// to have the non-normalised number here.
|
2976
|
-
String extension = maybeStripExtension(nationalNumber);
|
2977
|
-
if (extension.length() > 0) {
|
2978
|
-
phoneNumber.setExtension(extension);
|
2979
|
-
}
|
2980
|
-
|
2981
|
-
PhoneMetadata regionMetadata = getMetadataForRegion(defaultRegion);
|
2982
|
-
// Check to see if the number is given in international format so we know whether this number is
|
2983
|
-
// from the default region or not.
|
2984
|
-
StringBuilder normalizedNationalNumber = new StringBuilder();
|
2985
|
-
int countryCode = 0;
|
2986
|
-
try {
|
2987
|
-
// TODO: This method should really just take in the string buffer that has already
|
2988
|
-
// been created, and just remove the prefix, rather than taking in a string and then
|
2989
|
-
// outputting a string buffer.
|
2990
|
-
countryCode = maybeExtractCountryCode(nationalNumber.toString(), regionMetadata,
|
2991
|
-
normalizedNationalNumber, keepRawInput, phoneNumber);
|
2992
|
-
} catch (NumberParseException e) {
|
2993
|
-
Matcher matcher = PLUS_CHARS_PATTERN.matcher(nationalNumber.toString());
|
2994
|
-
if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE &&
|
2995
|
-
matcher.lookingAt()) {
|
2996
|
-
// Strip the plus-char, and try again.
|
2997
|
-
countryCode = maybeExtractCountryCode(nationalNumber.substring(matcher.end()),
|
2998
|
-
regionMetadata, normalizedNationalNumber,
|
2999
|
-
keepRawInput, phoneNumber);
|
3000
|
-
if (countryCode == 0) {
|
3001
|
-
throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
|
3002
|
-
"Could not interpret numbers after plus-sign.");
|
3003
|
-
}
|
3004
|
-
} else {
|
3005
|
-
throw new NumberParseException(e.getErrorType(), e.getMessage());
|
3006
|
-
}
|
3007
|
-
}
|
3008
|
-
if (countryCode != 0) {
|
3009
|
-
String phoneNumberRegion = getRegionCodeForCountryCode(countryCode);
|
3010
|
-
if (!phoneNumberRegion.equals(defaultRegion)) {
|
3011
|
-
// Metadata cannot be null because the country calling code is valid.
|
3012
|
-
regionMetadata = getMetadataForRegionOrCallingCode(countryCode, phoneNumberRegion);
|
3013
|
-
}
|
3014
|
-
} else {
|
3015
|
-
// If no extracted country calling code, use the region supplied instead. The national number
|
3016
|
-
// is just the normalized version of the number we were given to parse.
|
3017
|
-
normalize(nationalNumber);
|
3018
|
-
normalizedNationalNumber.append(nationalNumber);
|
3019
|
-
if (defaultRegion != null) {
|
3020
|
-
countryCode = regionMetadata.countryCode;
|
3021
|
-
phoneNumber.setCountryCode(countryCode);
|
3022
|
-
} else if (keepRawInput) {
|
3023
|
-
phoneNumber.clearCountryCodeSource();
|
3024
|
-
}
|
3025
|
-
}
|
3026
|
-
if (normalizedNationalNumber.length() < MIN_LENGTH_FOR_NSN) {
|
3027
|
-
throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_NSN,
|
3028
|
-
"The string supplied is too short to be a phone number.");
|
3029
|
-
}
|
3030
|
-
if (regionMetadata != null) {
|
3031
|
-
StringBuilder carrierCode = new StringBuilder();
|
3032
|
-
StringBuilder potentialNationalNumber = new StringBuilder(normalizedNationalNumber);
|
3033
|
-
maybeStripNationalPrefixAndCarrierCode(potentialNationalNumber, regionMetadata, carrierCode);
|
3034
|
-
// We require that the NSN remaining after stripping the national prefix and carrier code be
|
3035
|
-
// of a possible length for the region. Otherwise, we don't do the stripping, since the
|
3036
|
-
// original number could be a valid short number.
|
3037
|
-
if (!isShorterThanPossibleNormalNumber(regionMetadata, potentialNationalNumber.toString())) {
|
3038
|
-
normalizedNationalNumber = potentialNationalNumber;
|
3039
|
-
if (keepRawInput) {
|
3040
|
-
phoneNumber.setPreferredDomesticCarrierCode(carrierCode.toString());
|
3041
|
-
}
|
3042
|
-
}
|
3043
|
-
}
|
3044
|
-
int lengthOfNationalNumber = normalizedNationalNumber.length();
|
3045
|
-
if (lengthOfNationalNumber < MIN_LENGTH_FOR_NSN) {
|
3046
|
-
throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_NSN,
|
3047
|
-
"The string supplied is too short to be a phone number.");
|
3048
|
-
}
|
3049
|
-
if (lengthOfNationalNumber > MAX_LENGTH_FOR_NSN) {
|
3050
|
-
throw new NumberParseException(NumberParseException.ErrorType.TOO_LONG,
|
3051
|
-
"The string supplied is too long to be a phone number.");
|
3052
|
-
}
|
3053
|
-
setItalianLeadingZerosForPhoneNumber(normalizedNationalNumber.toString(), phoneNumber);
|
3054
|
-
phoneNumber.setNationalNumber(Long.parseLong(normalizedNationalNumber.toString()));
|
3055
|
-
}
|
3056
|
-
|
3057
|
-
/**
|
3058
|
-
* Converts numberToParse to a form that we can parse and write it to nationalNumber if it is
|
3059
|
-
* written in RFC3966; otherwise extract a possible number out of it and write to nationalNumber.
|
3060
|
-
*/
|
3061
|
-
private void buildNationalNumberForParsing(String numberToParse, StringBuilder nationalNumber) {
|
3062
|
-
int indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT);
|
3063
|
-
if (indexOfPhoneContext > 0) {
|
3064
|
-
int phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT.length();
|
3065
|
-
// If the phone context contains a phone number prefix, we need to capture it, whereas domains
|
3066
|
-
// will be ignored.
|
3067
|
-
if (numberToParse.charAt(phoneContextStart) == PLUS_SIGN) {
|
3068
|
-
// Additional parameters might follow the phone context. If so, we will remove them here
|
3069
|
-
// because the parameters after phone context are not important for parsing the
|
3070
|
-
// phone number.
|
3071
|
-
int phoneContextEnd = numberToParse.indexOf(';', phoneContextStart);
|
3072
|
-
if (phoneContextEnd > 0) {
|
3073
|
-
nationalNumber.append(numberToParse.substring(phoneContextStart, phoneContextEnd));
|
3074
|
-
} else {
|
3075
|
-
nationalNumber.append(numberToParse.substring(phoneContextStart));
|
3076
|
-
}
|
3077
|
-
}
|
3078
|
-
|
3079
|
-
// Now append everything between the "tel:" prefix and the phone-context. This should include
|
3080
|
-
// the national number, an optional extension or isdn-subaddress component. Note we also
|
3081
|
-
// handle the case when "tel:" is missing, as we have seen in some of the phone number inputs.
|
3082
|
-
// In that case, we append everything from the beginning.
|
3083
|
-
int indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX);
|
3084
|
-
int indexOfNationalNumber = (indexOfRfc3966Prefix >= 0) ?
|
3085
|
-
indexOfRfc3966Prefix + RFC3966_PREFIX.length() : 0;
|
3086
|
-
nationalNumber.append(numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext));
|
3087
|
-
} else {
|
3088
|
-
// Extract a possible number from the string passed in (this strips leading characters that
|
3089
|
-
// could not be the start of a phone number.)
|
3090
|
-
nationalNumber.append(extractPossibleNumber(numberToParse));
|
3091
|
-
}
|
3092
|
-
|
3093
|
-
// Delete the isdn-subaddress and everything after it if it is present. Note extension won't
|
3094
|
-
// appear at the same time with isdn-subaddress according to paragraph 5.3 of the RFC3966 spec,
|
3095
|
-
int indexOfIsdn = nationalNumber.indexOf(RFC3966_ISDN_SUBADDRESS);
|
3096
|
-
if (indexOfIsdn > 0) {
|
3097
|
-
nationalNumber.delete(indexOfIsdn, nationalNumber.length());
|
3098
|
-
}
|
3099
|
-
// If both phone context and isdn-subaddress are absent but other parameters are present, the
|
3100
|
-
// parameters are left in nationalNumber. This is because we are concerned about deleting
|
3101
|
-
// content from a potential number string when there is no strong evidence that the number is
|
3102
|
-
// actually written in RFC3966.
|
3103
|
-
}
|
3104
|
-
|
3105
|
-
/**
|
3106
|
-
* Takes two phone numbers and compares them for equality.
|
3107
|
-
*
|
3108
|
-
* <p>Returns EXACT_MATCH if the country_code, NSN, presence of a leading zero for Italian numbers
|
3109
|
-
* and any extension present are the same.
|
3110
|
-
* Returns NSN_MATCH if either or both has no region specified, and the NSNs and extensions are
|
3111
|
-
* the same.
|
3112
|
-
* Returns SHORT_NSN_MATCH if either or both has no region specified, or the region specified is
|
3113
|
-
* the same, and one NSN could be a shorter version of the other number. This includes the case
|
3114
|
-
* where one has an extension specified, and the other does not.
|
3115
|
-
* Returns NO_MATCH otherwise.
|
3116
|
-
* For example, the numbers +1 345 657 1234 and 657 1234 are a SHORT_NSN_MATCH.
|
3117
|
-
* The numbers +1 345 657 1234 and 345 657 are a NO_MATCH.
|
3118
|
-
*
|
3119
|
-
* @param firstNumberIn first number to compare
|
3120
|
-
* @param secondNumberIn second number to compare
|
3121
|
-
*
|
3122
|
-
* @return NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH or EXACT_MATCH depending on the level of equality
|
3123
|
-
* of the two numbers, described in the method definition.
|
3124
|
-
*/
|
3125
|
-
public MatchType isNumberMatch(PhoneNumber firstNumberIn, PhoneNumber secondNumberIn) {
|
3126
|
-
// Make copies of the phone number so that the numbers passed in are not edited.
|
3127
|
-
PhoneNumber firstNumber = new PhoneNumber();
|
3128
|
-
firstNumber.mergeFrom(firstNumberIn);
|
3129
|
-
PhoneNumber secondNumber = new PhoneNumber();
|
3130
|
-
secondNumber.mergeFrom(secondNumberIn);
|
3131
|
-
// First clear raw_input, country_code_source and preferred_domestic_carrier_code fields and any
|
3132
|
-
// empty-string extensions so that we can use the proto-buffer equality method.
|
3133
|
-
firstNumber.clearRawInput();
|
3134
|
-
firstNumber.clearCountryCodeSource();
|
3135
|
-
firstNumber.clearPreferredDomesticCarrierCode();
|
3136
|
-
secondNumber.clearRawInput();
|
3137
|
-
secondNumber.clearCountryCodeSource();
|
3138
|
-
secondNumber.clearPreferredDomesticCarrierCode();
|
3139
|
-
if (firstNumber.hasExtension() &&
|
3140
|
-
firstNumber.getExtension().length() == 0) {
|
3141
|
-
firstNumber.clearExtension();
|
3142
|
-
}
|
3143
|
-
if (secondNumber.hasExtension() &&
|
3144
|
-
secondNumber.getExtension().length() == 0) {
|
3145
|
-
secondNumber.clearExtension();
|
3146
|
-
}
|
3147
|
-
// Early exit if both had extensions and these are different.
|
3148
|
-
if (firstNumber.hasExtension() && secondNumber.hasExtension() &&
|
3149
|
-
!firstNumber.getExtension().equals(secondNumber.getExtension())) {
|
3150
|
-
return MatchType.NO_MATCH;
|
3151
|
-
}
|
3152
|
-
int firstNumberCountryCode = firstNumber.getCountryCode();
|
3153
|
-
int secondNumberCountryCode = secondNumber.getCountryCode();
|
3154
|
-
// Both had country_code specified.
|
3155
|
-
if (firstNumberCountryCode != 0 && secondNumberCountryCode != 0) {
|
3156
|
-
if (firstNumber.exactlySameAs(secondNumber)) {
|
3157
|
-
return MatchType.EXACT_MATCH;
|
3158
|
-
} else if (firstNumberCountryCode == secondNumberCountryCode &&
|
3159
|
-
isNationalNumberSuffixOfTheOther(firstNumber, secondNumber)) {
|
3160
|
-
// A SHORT_NSN_MATCH occurs if there is a difference because of the presence or absence of
|
3161
|
-
// an 'Italian leading zero', the presence or absence of an extension, or one NSN being a
|
3162
|
-
// shorter variant of the other.
|
3163
|
-
return MatchType.SHORT_NSN_MATCH;
|
3164
|
-
}
|
3165
|
-
// This is not a match.
|
3166
|
-
return MatchType.NO_MATCH;
|
3167
|
-
}
|
3168
|
-
// Checks cases where one or both country_code fields were not specified. To make equality
|
3169
|
-
// checks easier, we first set the country_code fields to be equal.
|
3170
|
-
firstNumber.setCountryCode(secondNumberCountryCode);
|
3171
|
-
// If all else was the same, then this is an NSN_MATCH.
|
3172
|
-
if (firstNumber.exactlySameAs(secondNumber)) {
|
3173
|
-
return MatchType.NSN_MATCH;
|
3174
|
-
}
|
3175
|
-
if (isNationalNumberSuffixOfTheOther(firstNumber, secondNumber)) {
|
3176
|
-
return MatchType.SHORT_NSN_MATCH;
|
3177
|
-
}
|
3178
|
-
return MatchType.NO_MATCH;
|
3179
|
-
}
|
3180
|
-
|
3181
|
-
// Returns true when one national number is the suffix of the other or both are the same.
|
3182
|
-
private boolean isNationalNumberSuffixOfTheOther(PhoneNumber firstNumber,
|
3183
|
-
PhoneNumber secondNumber) {
|
3184
|
-
String firstNumberNationalNumber = String.valueOf(firstNumber.getNationalNumber());
|
3185
|
-
String secondNumberNationalNumber = String.valueOf(secondNumber.getNationalNumber());
|
3186
|
-
// Note that endsWith returns true if the numbers are equal.
|
3187
|
-
return firstNumberNationalNumber.endsWith(secondNumberNationalNumber) ||
|
3188
|
-
secondNumberNationalNumber.endsWith(firstNumberNationalNumber);
|
3189
|
-
}
|
3190
|
-
|
3191
|
-
/**
|
3192
|
-
* Takes two phone numbers as strings and compares them for equality. This is a convenience
|
3193
|
-
* wrapper for {@link #isNumberMatch(PhoneNumber, PhoneNumber)}. No default region is known.
|
3194
|
-
*
|
3195
|
-
* @param firstNumber first number to compare. Can contain formatting, and can have country
|
3196
|
-
* calling code specified with + at the start.
|
3197
|
-
* @param secondNumber second number to compare. Can contain formatting, and can have country
|
3198
|
-
* calling code specified with + at the start.
|
3199
|
-
* @return NOT_A_NUMBER, NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH, EXACT_MATCH. See
|
3200
|
-
* {@link #isNumberMatch(PhoneNumber, PhoneNumber)} for more details.
|
3201
|
-
*/
|
3202
|
-
public MatchType isNumberMatch(String firstNumber, String secondNumber) {
|
3203
|
-
try {
|
3204
|
-
PhoneNumber firstNumberAsProto = parse(firstNumber, UNKNOWN_REGION);
|
3205
|
-
return isNumberMatch(firstNumberAsProto, secondNumber);
|
3206
|
-
} catch (NumberParseException e) {
|
3207
|
-
if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
|
3208
|
-
try {
|
3209
|
-
PhoneNumber secondNumberAsProto = parse(secondNumber, UNKNOWN_REGION);
|
3210
|
-
return isNumberMatch(secondNumberAsProto, firstNumber);
|
3211
|
-
} catch (NumberParseException e2) {
|
3212
|
-
if (e2.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
|
3213
|
-
try {
|
3214
|
-
PhoneNumber firstNumberProto = new PhoneNumber();
|
3215
|
-
PhoneNumber secondNumberProto = new PhoneNumber();
|
3216
|
-
parseHelper(firstNumber, null, false, false, firstNumberProto);
|
3217
|
-
parseHelper(secondNumber, null, false, false, secondNumberProto);
|
3218
|
-
return isNumberMatch(firstNumberProto, secondNumberProto);
|
3219
|
-
} catch (NumberParseException e3) {
|
3220
|
-
// Fall through and return MatchType.NOT_A_NUMBER.
|
3221
|
-
}
|
3222
|
-
}
|
3223
|
-
}
|
3224
|
-
}
|
3225
|
-
}
|
3226
|
-
// One or more of the phone numbers we are trying to match is not a viable phone number.
|
3227
|
-
return MatchType.NOT_A_NUMBER;
|
3228
|
-
}
|
3229
|
-
|
3230
|
-
/**
|
3231
|
-
* Takes two phone numbers and compares them for equality. This is a convenience wrapper for
|
3232
|
-
* {@link #isNumberMatch(PhoneNumber, PhoneNumber)}. No default region is known.
|
3233
|
-
*
|
3234
|
-
* @param firstNumber first number to compare in proto buffer format.
|
3235
|
-
* @param secondNumber second number to compare. Can contain formatting, and can have country
|
3236
|
-
* calling code specified with + at the start.
|
3237
|
-
* @return NOT_A_NUMBER, NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH, EXACT_MATCH. See
|
3238
|
-
* {@link #isNumberMatch(PhoneNumber, PhoneNumber)} for more details.
|
3239
|
-
*/
|
3240
|
-
public MatchType isNumberMatch(PhoneNumber firstNumber, String secondNumber) {
|
3241
|
-
// First see if the second number has an implicit country calling code, by attempting to parse
|
3242
|
-
// it.
|
3243
|
-
try {
|
3244
|
-
PhoneNumber secondNumberAsProto = parse(secondNumber, UNKNOWN_REGION);
|
3245
|
-
return isNumberMatch(firstNumber, secondNumberAsProto);
|
3246
|
-
} catch (NumberParseException e) {
|
3247
|
-
if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
|
3248
|
-
// The second number has no country calling code. EXACT_MATCH is no longer possible.
|
3249
|
-
// We parse it as if the region was the same as that for the first number, and if
|
3250
|
-
// EXACT_MATCH is returned, we replace this with NSN_MATCH.
|
3251
|
-
String firstNumberRegion = getRegionCodeForCountryCode(firstNumber.getCountryCode());
|
3252
|
-
try {
|
3253
|
-
if (!firstNumberRegion.equals(UNKNOWN_REGION)) {
|
3254
|
-
PhoneNumber secondNumberWithFirstNumberRegion = parse(secondNumber, firstNumberRegion);
|
3255
|
-
MatchType match = isNumberMatch(firstNumber, secondNumberWithFirstNumberRegion);
|
3256
|
-
if (match == MatchType.EXACT_MATCH) {
|
3257
|
-
return MatchType.NSN_MATCH;
|
3258
|
-
}
|
3259
|
-
return match;
|
3260
|
-
} else {
|
3261
|
-
// If the first number didn't have a valid country calling code, then we parse the
|
3262
|
-
// second number without one as well.
|
3263
|
-
PhoneNumber secondNumberProto = new PhoneNumber();
|
3264
|
-
parseHelper(secondNumber, null, false, false, secondNumberProto);
|
3265
|
-
return isNumberMatch(firstNumber, secondNumberProto);
|
3266
|
-
}
|
3267
|
-
} catch (NumberParseException e2) {
|
3268
|
-
// Fall-through to return NOT_A_NUMBER.
|
3269
|
-
}
|
3270
|
-
}
|
3271
|
-
}
|
3272
|
-
// One or more of the phone numbers we are trying to match is not a viable phone number.
|
3273
|
-
return MatchType.NOT_A_NUMBER;
|
3274
|
-
}
|
3275
|
-
|
3276
|
-
/**
|
3277
|
-
* Returns true if the number can be dialled from outside the region, or unknown. If the number
|
3278
|
-
* can only be dialled from within the region, returns false. Does not check the number is a valid
|
3279
|
-
* number. Note that, at the moment, this method does not handle short numbers.
|
3280
|
-
* TODO: Make this method public when we have enough metadata to make it worthwhile.
|
3281
|
-
*
|
3282
|
-
* @param number the phone-number for which we want to know whether it is diallable from
|
3283
|
-
* outside the region
|
3284
|
-
*/
|
3285
|
-
// @VisibleForTesting
|
3286
|
-
boolean canBeInternationallyDialled(PhoneNumber number) {
|
3287
|
-
PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
|
3288
|
-
if (metadata == null) {
|
3289
|
-
// Note numbers belonging to non-geographical entities (e.g. +800 numbers) are always
|
3290
|
-
// internationally diallable, and will be caught here.
|
3291
|
-
return true;
|
3292
|
-
}
|
3293
|
-
String nationalSignificantNumber = getNationalSignificantNumber(number);
|
3294
|
-
return !isNumberMatchingDesc(nationalSignificantNumber, metadata.noInternationalDialling);
|
3295
|
-
}
|
3296
|
-
|
3297
|
-
/**
|
3298
|
-
* Returns true if the supplied region supports mobile number portability. Returns false for
|
3299
|
-
* invalid, unknown or regions that don't support mobile number portability.
|
3300
|
-
*
|
3301
|
-
* @param regionCode the region for which we want to know whether it supports mobile number
|
3302
|
-
* portability or not.
|
3303
|
-
*/
|
3304
|
-
public boolean isMobileNumberPortableRegion(String regionCode) {
|
3305
|
-
PhoneMetadata metadata = getMetadataForRegion(regionCode);
|
3306
|
-
if (metadata == null) {
|
3307
|
-
logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
|
3308
|
-
return false;
|
3309
|
-
}
|
3310
|
-
return metadata.mobileNumberPortableRegion;
|
3311
|
-
}
|
3312
|
-
}
|