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
@@ -1,201 +0,0 @@
|
|
1
|
-
// Copyright (C) 2011 The Libphonenumber Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
//
|
15
|
-
// Author: Lara Rennie
|
16
|
-
// Author: Tao Huang
|
17
|
-
//
|
18
|
-
// This is a direct port from PhoneNumberMatcher.java.
|
19
|
-
// Changes to this class should also happen to the Java version, whenever it
|
20
|
-
// makes sense.
|
21
|
-
|
22
|
-
#ifndef I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
|
23
|
-
#define I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
|
24
|
-
|
25
|
-
#include <string>
|
26
|
-
#include <vector>
|
27
|
-
|
28
|
-
#include "phonenumbers/base/basictypes.h"
|
29
|
-
#include "phonenumbers/base/memory/scoped_ptr.h"
|
30
|
-
#include "phonenumbers/callback.h"
|
31
|
-
#include "phonenumbers/regexp_adapter.h"
|
32
|
-
|
33
|
-
namespace i18n {
|
34
|
-
namespace phonenumbers {
|
35
|
-
|
36
|
-
template <class R, class A1, class A2, class A3, class A4>
|
37
|
-
class ResultCallback4;
|
38
|
-
|
39
|
-
using std::string;
|
40
|
-
using std::vector;
|
41
|
-
|
42
|
-
class AlternateFormats;
|
43
|
-
class NumberFormat;
|
44
|
-
class PhoneNumber;
|
45
|
-
class PhoneNumberMatch;
|
46
|
-
class PhoneNumberMatcherRegExps;
|
47
|
-
class PhoneNumberUtil;
|
48
|
-
|
49
|
-
class PhoneNumberMatcher {
|
50
|
-
friend class PhoneNumberMatcherTest;
|
51
|
-
public:
|
52
|
-
// Leniency when finding potential phone numbers in text segments. The levels
|
53
|
-
// here are ordered in increasing strictness.
|
54
|
-
enum Leniency {
|
55
|
-
// Phone numbers accepted are possible, but not necessarily valid.
|
56
|
-
POSSIBLE,
|
57
|
-
// Phone numbers accepted are possible and valid.
|
58
|
-
VALID,
|
59
|
-
// Phone numbers accepted are valid and are grouped in a possible way for
|
60
|
-
// this locale. For example, a US number written as "65 02 53 00 00" is not
|
61
|
-
// accepted at this leniency level, whereas "650 253 0000" or "6502530000"
|
62
|
-
// are. Numbers with more than one '/' symbol are also dropped at this
|
63
|
-
// level.
|
64
|
-
// Warning: The next two levels might result in lower coverage especially
|
65
|
-
// for regions outside of country code "+1". If you are not sure about which
|
66
|
-
// level to use, you can send an e-mail to the discussion group
|
67
|
-
// http://groups.google.com/group/libphonenumber-discuss/
|
68
|
-
STRICT_GROUPING,
|
69
|
-
// Phone numbers accepted are valid and are grouped in the same way that we
|
70
|
-
// would have formatted it, or as a single block. For example, a US number
|
71
|
-
// written as "650 2530000" is not accepted at this leniency level, whereas
|
72
|
-
// "650 253 0000" or "6502530000" are.
|
73
|
-
EXACT_GROUPING,
|
74
|
-
};
|
75
|
-
|
76
|
-
// Constructs a phone number matcher.
|
77
|
-
PhoneNumberMatcher(const PhoneNumberUtil& util,
|
78
|
-
const string& text,
|
79
|
-
const string& region_code,
|
80
|
-
Leniency leniency,
|
81
|
-
int max_tries);
|
82
|
-
|
83
|
-
// Wrapper to construct a phone number matcher, with no limitation on the
|
84
|
-
// number of retries and VALID Leniency.
|
85
|
-
PhoneNumberMatcher(const string& text,
|
86
|
-
const string& region_code);
|
87
|
-
|
88
|
-
~PhoneNumberMatcher();
|
89
|
-
|
90
|
-
// Returns true if the text sequence has another match.
|
91
|
-
bool HasNext();
|
92
|
-
|
93
|
-
// Gets next match from text sequence.
|
94
|
-
bool Next(PhoneNumberMatch* match);
|
95
|
-
|
96
|
-
private:
|
97
|
-
// The potential states of a PhoneNumberMatcher.
|
98
|
-
enum State {
|
99
|
-
NOT_READY,
|
100
|
-
READY,
|
101
|
-
DONE,
|
102
|
-
};
|
103
|
-
|
104
|
-
// Attempts to extract a match from a candidate string. Returns true if a
|
105
|
-
// match is found, otherwise returns false. The value "offset" refers to the
|
106
|
-
// start index of the candidate string within the overall text.
|
107
|
-
bool Find(int index, PhoneNumberMatch* match);
|
108
|
-
|
109
|
-
// Checks a number was formatted with a national prefix, if the number was
|
110
|
-
// found in national format, and a national prefix is required for that
|
111
|
-
// number. Returns false if the number needed to have a national prefix and
|
112
|
-
// none was found.
|
113
|
-
bool IsNationalPrefixPresentIfRequired(const PhoneNumber& number) const;
|
114
|
-
|
115
|
-
// Attempts to extract a match from candidate. Returns true if the match was
|
116
|
-
// found, otherwise returns false.
|
117
|
-
bool ExtractMatch(const string& candidate, int offset,
|
118
|
-
PhoneNumberMatch* match);
|
119
|
-
|
120
|
-
// Attempts to extract a match from a candidate string if the whole candidate
|
121
|
-
// does not qualify as a match. Returns true if a match is found, otherwise
|
122
|
-
// returns false.
|
123
|
-
bool ExtractInnerMatch(const string& candidate, int offset,
|
124
|
-
PhoneNumberMatch* match);
|
125
|
-
|
126
|
-
// Parses a phone number from the candidate using PhoneNumberUtil::Parse() and
|
127
|
-
// verifies it matches the requested leniency. If parsing and verification
|
128
|
-
// succeed, returns true, otherwise this method returns false;
|
129
|
-
bool ParseAndVerify(const string& candidate, int offset,
|
130
|
-
PhoneNumberMatch* match);
|
131
|
-
|
132
|
-
bool CheckNumberGroupingIsValid(
|
133
|
-
const PhoneNumber& phone_number,
|
134
|
-
const string& candidate,
|
135
|
-
ResultCallback4<bool, const PhoneNumberUtil&, const PhoneNumber&,
|
136
|
-
const string&, const vector<string>&>* checker) const;
|
137
|
-
|
138
|
-
void GetNationalNumberGroups(
|
139
|
-
const PhoneNumber& number,
|
140
|
-
const NumberFormat* formatting_pattern,
|
141
|
-
vector<string>* digit_blocks) const;
|
142
|
-
|
143
|
-
bool AllNumberGroupsAreExactlyPresent(
|
144
|
-
const PhoneNumberUtil& util,
|
145
|
-
const PhoneNumber& phone_number,
|
146
|
-
const string& normalized_candidate,
|
147
|
-
const vector<string>& formatted_number_groups) const;
|
148
|
-
|
149
|
-
bool VerifyAccordingToLeniency(Leniency leniency, const PhoneNumber& number,
|
150
|
-
const string& candidate) const;
|
151
|
-
|
152
|
-
// In interface for testing purposes.
|
153
|
-
static bool ContainsMoreThanOneSlashInNationalNumber(
|
154
|
-
const PhoneNumber& number,
|
155
|
-
const string& candidate,
|
156
|
-
const PhoneNumberUtil& util);
|
157
|
-
|
158
|
-
// Helper method to determine if a character is a Latin-script letter or not.
|
159
|
-
// For our purposes, combining marks should also return true since we assume
|
160
|
-
// they have been added to a preceding Latin character.
|
161
|
-
static bool IsLatinLetter(char32 letter);
|
162
|
-
|
163
|
-
// Helper class holding useful regular expressions.
|
164
|
-
const PhoneNumberMatcherRegExps* reg_exps_;
|
165
|
-
|
166
|
-
// Helper class holding loaded data containing alternate ways phone numbers
|
167
|
-
// might be formatted for certain regions.
|
168
|
-
const AlternateFormats* alternate_formats_;
|
169
|
-
|
170
|
-
// The phone number utility;
|
171
|
-
const PhoneNumberUtil& phone_util_;
|
172
|
-
|
173
|
-
// The text searched for phone numbers;
|
174
|
-
const string text_;
|
175
|
-
|
176
|
-
// The region(country) to assume for phone numbers without an international
|
177
|
-
// prefix.
|
178
|
-
const string preferred_region_;
|
179
|
-
|
180
|
-
// The degree of validation requested.
|
181
|
-
Leniency leniency_;
|
182
|
-
|
183
|
-
// The maximum number of retries after matching an invalid number.
|
184
|
-
int max_tries_;
|
185
|
-
|
186
|
-
// The iteration tristate.
|
187
|
-
State state_;
|
188
|
-
|
189
|
-
// The last successful match, NULL unless in State.READY.
|
190
|
-
scoped_ptr<PhoneNumberMatch> last_match_;
|
191
|
-
|
192
|
-
// The next index to start searching at. Undefined in State.DONE.
|
193
|
-
int search_index_;
|
194
|
-
|
195
|
-
DISALLOW_COPY_AND_ASSIGN(PhoneNumberMatcher);
|
196
|
-
};
|
197
|
-
|
198
|
-
} // namespace phonenumbers
|
199
|
-
} // namespace i18n
|
200
|
-
|
201
|
-
#endif // I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
|
@@ -1,2926 +0,0 @@
|
|
1
|
-
// Copyright (C) 2009 The Libphonenumber Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
|
15
|
-
// Author: Shaopeng Jia
|
16
|
-
// Open-sourced by: Philippe Liard
|
17
|
-
|
18
|
-
#include "phonenumbers/phonenumberutil.h"
|
19
|
-
|
20
|
-
#include <string.h>
|
21
|
-
#include <algorithm>
|
22
|
-
#include <cctype>
|
23
|
-
#include <iterator>
|
24
|
-
#include <map>
|
25
|
-
#include <utility>
|
26
|
-
#include <vector>
|
27
|
-
|
28
|
-
#include <google/protobuf/message_lite.h>
|
29
|
-
#include <unicode/uchar.h>
|
30
|
-
#include <unicode/utf8.h>
|
31
|
-
|
32
|
-
#include "phonenumbers/asyoutypeformatter.h"
|
33
|
-
#include "phonenumbers/base/basictypes.h"
|
34
|
-
#include "phonenumbers/base/logging.h"
|
35
|
-
#include "phonenumbers/base/memory/singleton.h"
|
36
|
-
#include "phonenumbers/default_logger.h"
|
37
|
-
#include "phonenumbers/encoding_utils.h"
|
38
|
-
#include "phonenumbers/metadata.h"
|
39
|
-
#include "phonenumbers/normalize_utf8.h"
|
40
|
-
#include "phonenumbers/phonemetadata.pb.h"
|
41
|
-
#include "phonenumbers/phonenumber.h"
|
42
|
-
#include "phonenumbers/phonenumber.pb.h"
|
43
|
-
#include "phonenumbers/regexp_adapter.h"
|
44
|
-
#include "phonenumbers/regexp_cache.h"
|
45
|
-
#include "phonenumbers/regexp_factory.h"
|
46
|
-
#include "phonenumbers/region_code.h"
|
47
|
-
#include "phonenumbers/stl_util.h"
|
48
|
-
#include "phonenumbers/stringutil.h"
|
49
|
-
#include "phonenumbers/utf/unicodetext.h"
|
50
|
-
#include "phonenumbers/utf/utf.h"
|
51
|
-
|
52
|
-
namespace i18n {
|
53
|
-
namespace phonenumbers {
|
54
|
-
|
55
|
-
using google::protobuf::RepeatedPtrField;
|
56
|
-
|
57
|
-
// static constants
|
58
|
-
const size_t PhoneNumberUtil::kMinLengthForNsn;
|
59
|
-
const size_t PhoneNumberUtil::kMaxLengthForNsn;
|
60
|
-
const size_t PhoneNumberUtil::kMaxLengthCountryCode;
|
61
|
-
const int PhoneNumberUtil::kNanpaCountryCode;
|
62
|
-
|
63
|
-
// static
|
64
|
-
const char PhoneNumberUtil::kPlusChars[] = "+\xEF\xBC\x8B"; /* "++" */
|
65
|
-
// To find out the unicode code-point of the characters below in vim, highlight
|
66
|
-
// the character and type 'ga'. Note that the - is used to express ranges of
|
67
|
-
// full-width punctuation below, as well as being present in the expression
|
68
|
-
// itself. In emacs, you can use M-x unicode-what to query information about the
|
69
|
-
// unicode character.
|
70
|
-
// static
|
71
|
-
const char PhoneNumberUtil::kValidPunctuation[] =
|
72
|
-
/* "-x‐-―−ー--/ <U+200B><U+2060> ()()[].\\[\\]/~⁓∼" */
|
73
|
-
"-x\xE2\x80\x90-\xE2\x80\x95\xE2\x88\x92\xE3\x83\xBC\xEF\xBC\x8D-\xEF\xBC"
|
74
|
-
"\x8F \xC2\xA0\xC2\xAD\xE2\x80\x8B\xE2\x81\xA0\xE3\x80\x80()\xEF\xBC\x88"
|
75
|
-
"\xEF\xBC\x89\xEF\xBC\xBB\xEF\xBC\xBD.\\[\\]/~\xE2\x81\x93\xE2\x88\xBC";
|
76
|
-
|
77
|
-
// static
|
78
|
-
const char PhoneNumberUtil::kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x";
|
79
|
-
|
80
|
-
// static
|
81
|
-
const char PhoneNumberUtil::kRegionCodeForNonGeoEntity[] = "001";
|
82
|
-
|
83
|
-
namespace {
|
84
|
-
|
85
|
-
// The prefix that needs to be inserted in front of a Colombian landline
|
86
|
-
// number when dialed from a mobile phone in Colombia.
|
87
|
-
const char kColombiaMobileToFixedLinePrefix[] = "3";
|
88
|
-
|
89
|
-
// The kPlusSign signifies the international prefix.
|
90
|
-
const char kPlusSign[] = "+";
|
91
|
-
|
92
|
-
const char kStarSign[] = "*";
|
93
|
-
|
94
|
-
const char kRfc3966ExtnPrefix[] = ";ext=";
|
95
|
-
const char kRfc3966Prefix[] = "tel:";
|
96
|
-
const char kRfc3966PhoneContext[] = ";phone-context=";
|
97
|
-
const char kRfc3966IsdnSubaddress[] = ";isub=";
|
98
|
-
|
99
|
-
const char kDigits[] = "\\p{Nd}";
|
100
|
-
// We accept alpha characters in phone numbers, ASCII only. We store lower-case
|
101
|
-
// here only since our regular expressions are case-insensitive.
|
102
|
-
const char kValidAlpha[] = "a-z";
|
103
|
-
|
104
|
-
// Default extension prefix to use when formatting. This will be put in front of
|
105
|
-
// any extension component of the number, after the main national number is
|
106
|
-
// formatted. For example, if you wish the default extension formatting to be "
|
107
|
-
// extn: 3456", then you should specify " extn: " here as the default extension
|
108
|
-
// prefix. This can be overridden by region-specific preferences.
|
109
|
-
const char kDefaultExtnPrefix[] = " ext. ";
|
110
|
-
|
111
|
-
// One-character symbols that can be used to indicate an extension.
|
112
|
-
const char kSingleExtnSymbolsForMatching[] =
|
113
|
-
"x\xEF\xBD\x98#\xEF\xBC\x83~\xEF\xBD\x9E";
|
114
|
-
|
115
|
-
bool LoadCompiledInMetadata(PhoneMetadataCollection* metadata) {
|
116
|
-
if (!metadata->ParseFromArray(metadata_get(), metadata_size())) {
|
117
|
-
LOG(ERROR) << "Could not parse binary data.";
|
118
|
-
return false;
|
119
|
-
}
|
120
|
-
return true;
|
121
|
-
}
|
122
|
-
|
123
|
-
// Returns a pointer to the description inside the metadata of the appropriate
|
124
|
-
// type.
|
125
|
-
const PhoneNumberDesc* GetNumberDescByType(
|
126
|
-
const PhoneMetadata& metadata,
|
127
|
-
PhoneNumberUtil::PhoneNumberType type) {
|
128
|
-
switch (type) {
|
129
|
-
case PhoneNumberUtil::PREMIUM_RATE:
|
130
|
-
return &metadata.premium_rate();
|
131
|
-
case PhoneNumberUtil::TOLL_FREE:
|
132
|
-
return &metadata.toll_free();
|
133
|
-
case PhoneNumberUtil::MOBILE:
|
134
|
-
return &metadata.mobile();
|
135
|
-
case PhoneNumberUtil::FIXED_LINE:
|
136
|
-
case PhoneNumberUtil::FIXED_LINE_OR_MOBILE:
|
137
|
-
return &metadata.fixed_line();
|
138
|
-
case PhoneNumberUtil::SHARED_COST:
|
139
|
-
return &metadata.shared_cost();
|
140
|
-
case PhoneNumberUtil::VOIP:
|
141
|
-
return &metadata.voip();
|
142
|
-
case PhoneNumberUtil::PERSONAL_NUMBER:
|
143
|
-
return &metadata.personal_number();
|
144
|
-
case PhoneNumberUtil::PAGER:
|
145
|
-
return &metadata.pager();
|
146
|
-
case PhoneNumberUtil::UAN:
|
147
|
-
return &metadata.uan();
|
148
|
-
case PhoneNumberUtil::VOICEMAIL:
|
149
|
-
return &metadata.voicemail();
|
150
|
-
default:
|
151
|
-
return &metadata.general_desc();
|
152
|
-
}
|
153
|
-
}
|
154
|
-
|
155
|
-
// A helper function that is used by Format and FormatByPattern.
|
156
|
-
void PrefixNumberWithCountryCallingCode(
|
157
|
-
int country_calling_code,
|
158
|
-
PhoneNumberUtil::PhoneNumberFormat number_format,
|
159
|
-
string* formatted_number) {
|
160
|
-
switch (number_format) {
|
161
|
-
case PhoneNumberUtil::E164:
|
162
|
-
formatted_number->insert(0, StrCat(kPlusSign, country_calling_code));
|
163
|
-
return;
|
164
|
-
case PhoneNumberUtil::INTERNATIONAL:
|
165
|
-
formatted_number->insert(0, StrCat(kPlusSign, country_calling_code, " "));
|
166
|
-
return;
|
167
|
-
case PhoneNumberUtil::RFC3966:
|
168
|
-
formatted_number->insert(0, StrCat(kRfc3966Prefix, kPlusSign,
|
169
|
-
country_calling_code, "-"));
|
170
|
-
return;
|
171
|
-
case PhoneNumberUtil::NATIONAL:
|
172
|
-
default:
|
173
|
-
// Do nothing.
|
174
|
-
return;
|
175
|
-
}
|
176
|
-
}
|
177
|
-
|
178
|
-
// Returns true when one national number is the suffix of the other or both are
|
179
|
-
// the same.
|
180
|
-
bool IsNationalNumberSuffixOfTheOther(const PhoneNumber& first_number,
|
181
|
-
const PhoneNumber& second_number) {
|
182
|
-
const string& first_number_national_number =
|
183
|
-
SimpleItoa(static_cast<uint64>(first_number.national_number()));
|
184
|
-
const string& second_number_national_number =
|
185
|
-
SimpleItoa(static_cast<uint64>(second_number.national_number()));
|
186
|
-
// Note that HasSuffixString returns true if the numbers are equal.
|
187
|
-
return HasSuffixString(first_number_national_number,
|
188
|
-
second_number_national_number) ||
|
189
|
-
HasSuffixString(second_number_national_number,
|
190
|
-
first_number_national_number);
|
191
|
-
}
|
192
|
-
|
193
|
-
char32 ToUnicodeCodepoint(const char* unicode_char) {
|
194
|
-
char32 codepoint;
|
195
|
-
EncodingUtils::DecodeUTF8Char(unicode_char, &codepoint);
|
196
|
-
return codepoint;
|
197
|
-
}
|
198
|
-
|
199
|
-
// Helper initialiser method to create the regular-expression pattern to match
|
200
|
-
// extensions, allowing the one-codepoint extension symbols provided by
|
201
|
-
// single_extn_symbols.
|
202
|
-
// Note that there are currently three capturing groups for the extension itself
|
203
|
-
// - if this number is changed, MaybeStripExtension needs to be updated.
|
204
|
-
string CreateExtnPattern(const string& single_extn_symbols) {
|
205
|
-
static const string capturing_extn_digits = StrCat("([", kDigits, "]{1,7})");
|
206
|
-
// The first regular expression covers RFC 3966 format, where the extension is
|
207
|
-
// added using ";ext=". The second more generic one starts with optional white
|
208
|
-
// space and ends with an optional full stop (.), followed by zero or more
|
209
|
-
// spaces/tabs and then the numbers themselves. The third one covers the
|
210
|
-
// special case of American numbers where the extension is written with a hash
|
211
|
-
// at the end, such as "- 503#".
|
212
|
-
// Note that the only capturing groups should be around the digits that you
|
213
|
-
// want to capture as part of the extension, or else parsing will fail!
|
214
|
-
// Canonical-equivalence doesn't seem to be an option with RE2, so we allow
|
215
|
-
// two options for representing the ó - the character itself, and one in the
|
216
|
-
// unicode decomposed form with the combining acute accent.
|
217
|
-
return (StrCat(
|
218
|
-
kRfc3966ExtnPrefix, capturing_extn_digits, "|"
|
219
|
-
/* "[ \\t,]*(?:e?xt(?:ensi(?:ó?|ó))?n?|e?xtn?|single_extn_symbols|"
|
220
|
-
"int|int|anexo)"
|
221
|
-
"[:\\..]?[ \\t,-]*", capturing_extn_digits, "#?|" */
|
222
|
-
"[ \xC2\xA0\\t,]*(?:e?xt(?:ensi(?:o\xCC\x81?|\xC3\xB3))?n?|"
|
223
|
-
"(?:\xEF\xBD\x85)?\xEF\xBD\x98\xEF\xBD\x94(?:\xEF\xBD\x8E)?|"
|
224
|
-
"[", single_extn_symbols, "]|int|"
|
225
|
-
"\xEF\xBD\x89\xEF\xBD\x8E\xEF\xBD\x94|anexo)"
|
226
|
-
"[:\\.\xEF\xBC\x8E]?[ \xC2\xA0\\t,-]*", capturing_extn_digits,
|
227
|
-
"#?|[- ]+([", kDigits, "]{1,5})#"));
|
228
|
-
}
|
229
|
-
|
230
|
-
// Normalizes a string of characters representing a phone number by replacing
|
231
|
-
// all characters found in the accompanying map with the values therein, and
|
232
|
-
// stripping all other characters if remove_non_matches is true.
|
233
|
-
// Parameters:
|
234
|
-
// number - a pointer to a string of characters representing a phone number to
|
235
|
-
// be normalized.
|
236
|
-
// normalization_replacements - a mapping of characters to what they should be
|
237
|
-
// replaced by in the normalized version of the phone number
|
238
|
-
// remove_non_matches - indicates whether characters that are not able to be
|
239
|
-
// replaced should be stripped from the number. If this is false, they will be
|
240
|
-
// left unchanged in the number.
|
241
|
-
void NormalizeHelper(const map<char32, char>& normalization_replacements,
|
242
|
-
bool remove_non_matches,
|
243
|
-
string* number) {
|
244
|
-
DCHECK(number);
|
245
|
-
UnicodeText number_as_unicode;
|
246
|
-
number_as_unicode.PointToUTF8(number->data(), number->size());
|
247
|
-
string normalized_number;
|
248
|
-
char unicode_char[5];
|
249
|
-
for (UnicodeText::const_iterator it = number_as_unicode.begin();
|
250
|
-
it != number_as_unicode.end();
|
251
|
-
++it) {
|
252
|
-
map<char32, char>::const_iterator found_glyph_pair =
|
253
|
-
normalization_replacements.find(*it);
|
254
|
-
if (found_glyph_pair != normalization_replacements.end()) {
|
255
|
-
normalized_number.push_back(found_glyph_pair->second);
|
256
|
-
} else if (!remove_non_matches) {
|
257
|
-
// Find out how long this unicode char is so we can append it all.
|
258
|
-
int char_len = it.get_utf8(unicode_char);
|
259
|
-
normalized_number.append(unicode_char, char_len);
|
260
|
-
}
|
261
|
-
// If neither of the above are true, we remove this character.
|
262
|
-
}
|
263
|
-
number->assign(normalized_number);
|
264
|
-
}
|
265
|
-
|
266
|
-
PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern(
|
267
|
-
const RegExp& number_pattern, const string& number) {
|
268
|
-
string extracted_number;
|
269
|
-
if (number_pattern.FullMatch(number, &extracted_number)) {
|
270
|
-
return PhoneNumberUtil::IS_POSSIBLE;
|
271
|
-
}
|
272
|
-
if (number_pattern.PartialMatch(number, &extracted_number)) {
|
273
|
-
return PhoneNumberUtil::TOO_LONG;
|
274
|
-
} else {
|
275
|
-
return PhoneNumberUtil::TOO_SHORT;
|
276
|
-
}
|
277
|
-
}
|
278
|
-
|
279
|
-
} // namespace
|
280
|
-
|
281
|
-
void PhoneNumberUtil::SetLogger(Logger* logger) {
|
282
|
-
logger_.reset(logger);
|
283
|
-
Logger::set_logger_impl(logger_.get());
|
284
|
-
}
|
285
|
-
|
286
|
-
class PhoneNumberRegExpsAndMappings {
|
287
|
-
private:
|
288
|
-
void InitializeMapsAndSets() {
|
289
|
-
diallable_char_mappings_.insert(std::make_pair('+', '+'));
|
290
|
-
diallable_char_mappings_.insert(std::make_pair('*', '*'));
|
291
|
-
// Here we insert all punctuation symbols that we wish to respect when
|
292
|
-
// formatting alpha numbers, as they show the intended number groupings.
|
293
|
-
all_plus_number_grouping_symbols_.insert(
|
294
|
-
std::make_pair(ToUnicodeCodepoint("-"), '-'));
|
295
|
-
all_plus_number_grouping_symbols_.insert(
|
296
|
-
std::make_pair(ToUnicodeCodepoint("\xEF\xBC\x8D" /* "-" */), '-'));
|
297
|
-
all_plus_number_grouping_symbols_.insert(
|
298
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x90" /* "‐" */), '-'));
|
299
|
-
all_plus_number_grouping_symbols_.insert(
|
300
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x91" /* "‑" */), '-'));
|
301
|
-
all_plus_number_grouping_symbols_.insert(
|
302
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x92" /* "‒" */), '-'));
|
303
|
-
all_plus_number_grouping_symbols_.insert(
|
304
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x93" /* "–" */), '-'));
|
305
|
-
all_plus_number_grouping_symbols_.insert(
|
306
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x94" /* "—" */), '-'));
|
307
|
-
all_plus_number_grouping_symbols_.insert(
|
308
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x80\x95" /* "―" */), '-'));
|
309
|
-
all_plus_number_grouping_symbols_.insert(
|
310
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x88\x92" /* "−" */), '-'));
|
311
|
-
all_plus_number_grouping_symbols_.insert(
|
312
|
-
std::make_pair(ToUnicodeCodepoint("/"), '/'));
|
313
|
-
all_plus_number_grouping_symbols_.insert(
|
314
|
-
std::make_pair(ToUnicodeCodepoint("\xEF\xBC\x8F" /* "/" */), '/'));
|
315
|
-
all_plus_number_grouping_symbols_.insert(
|
316
|
-
std::make_pair(ToUnicodeCodepoint(" "), ' '));
|
317
|
-
all_plus_number_grouping_symbols_.insert(
|
318
|
-
std::make_pair(ToUnicodeCodepoint("\xE3\x80\x80" /* " " */), ' '));
|
319
|
-
all_plus_number_grouping_symbols_.insert(
|
320
|
-
std::make_pair(ToUnicodeCodepoint("\xE2\x81\xA0"), ' '));
|
321
|
-
all_plus_number_grouping_symbols_.insert(
|
322
|
-
std::make_pair(ToUnicodeCodepoint("."), '.'));
|
323
|
-
all_plus_number_grouping_symbols_.insert(
|
324
|
-
std::make_pair(ToUnicodeCodepoint("\xEF\xBC\x8E" /* "." */), '.'));
|
325
|
-
// Only the upper-case letters are added here - the lower-case versions are
|
326
|
-
// added programmatically.
|
327
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("A"), '2'));
|
328
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("B"), '2'));
|
329
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("C"), '2'));
|
330
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("D"), '3'));
|
331
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("E"), '3'));
|
332
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("F"), '3'));
|
333
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("G"), '4'));
|
334
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("H"), '4'));
|
335
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("I"), '4'));
|
336
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("J"), '5'));
|
337
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("K"), '5'));
|
338
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("L"), '5'));
|
339
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("M"), '6'));
|
340
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("N"), '6'));
|
341
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("O"), '6'));
|
342
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("P"), '7'));
|
343
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("Q"), '7'));
|
344
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("R"), '7'));
|
345
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("S"), '7'));
|
346
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("T"), '8'));
|
347
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("U"), '8'));
|
348
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("V"), '8'));
|
349
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("W"), '9'));
|
350
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("X"), '9'));
|
351
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("Y"), '9'));
|
352
|
-
alpha_mappings_.insert(std::make_pair(ToUnicodeCodepoint("Z"), '9'));
|
353
|
-
map<char32, char> lower_case_mappings;
|
354
|
-
map<char32, char> alpha_letters;
|
355
|
-
for (map<char32, char>::const_iterator it = alpha_mappings_.begin();
|
356
|
-
it != alpha_mappings_.end();
|
357
|
-
++it) {
|
358
|
-
// Convert all the upper-case ASCII letters to lower-case.
|
359
|
-
if (it->first < 128) {
|
360
|
-
char letter_as_upper = static_cast<char>(it->first);
|
361
|
-
char32 letter_as_lower = static_cast<char32>(tolower(letter_as_upper));
|
362
|
-
lower_case_mappings.insert(std::make_pair(letter_as_lower, it->second));
|
363
|
-
// Add the letters in both variants to the alpha_letters map. This just
|
364
|
-
// pairs each letter with its upper-case representation so that it can
|
365
|
-
// be retained when normalising alpha numbers.
|
366
|
-
alpha_letters.insert(std::make_pair(letter_as_lower, letter_as_upper));
|
367
|
-
alpha_letters.insert(std::make_pair(it->first, letter_as_upper));
|
368
|
-
}
|
369
|
-
}
|
370
|
-
// In the Java version we don't insert the lower-case mappings in the map,
|
371
|
-
// because we convert to upper case on the fly. Doing this here would
|
372
|
-
// involve pulling in all of ICU, which we don't want to do if we don't have
|
373
|
-
// to.
|
374
|
-
alpha_mappings_.insert(lower_case_mappings.begin(),
|
375
|
-
lower_case_mappings.end());
|
376
|
-
alpha_phone_mappings_.insert(alpha_mappings_.begin(),
|
377
|
-
alpha_mappings_.end());
|
378
|
-
all_plus_number_grouping_symbols_.insert(alpha_letters.begin(),
|
379
|
-
alpha_letters.end());
|
380
|
-
// Add the ASCII digits so that they don't get deleted by NormalizeHelper().
|
381
|
-
for (char c = '0'; c <= '9'; ++c) {
|
382
|
-
diallable_char_mappings_.insert(std::make_pair(c, c));
|
383
|
-
alpha_phone_mappings_.insert(std::make_pair(c, c));
|
384
|
-
all_plus_number_grouping_symbols_.insert(std::make_pair(c, c));
|
385
|
-
}
|
386
|
-
|
387
|
-
mobile_token_mappings_.insert(std::make_pair(52, '1'));
|
388
|
-
mobile_token_mappings_.insert(std::make_pair(54, '9'));
|
389
|
-
geo_mobile_countries_without_mobile_area_codes_.insert(86); // China
|
390
|
-
geo_mobile_countries_.insert(52); // Mexico
|
391
|
-
geo_mobile_countries_.insert(54); // Argentina
|
392
|
-
geo_mobile_countries_.insert(55); // Brazil
|
393
|
-
// Indonesia: some prefixes only (fixed CMDA wireless)
|
394
|
-
geo_mobile_countries_.insert(62);
|
395
|
-
geo_mobile_countries_.insert(
|
396
|
-
geo_mobile_countries_without_mobile_area_codes_.begin(),
|
397
|
-
geo_mobile_countries_without_mobile_area_codes_.end());
|
398
|
-
}
|
399
|
-
|
400
|
-
// Small string helpers since StrCat has a maximum number of arguments. These
|
401
|
-
// are both used to build valid_phone_number_.
|
402
|
-
const string punctuation_and_star_sign_;
|
403
|
-
const string min_length_phone_number_pattern_;
|
404
|
-
|
405
|
-
// Regular expression of viable phone numbers. This is location independent.
|
406
|
-
// Checks we have at least three leading digits, and only valid punctuation,
|
407
|
-
// alpha characters and digits in the phone number. Does not include extension
|
408
|
-
// data. The symbol 'x' is allowed here as valid punctuation since it is often
|
409
|
-
// used as a placeholder for carrier codes, for example in Brazilian phone
|
410
|
-
// numbers. We also allow multiple plus-signs at the start.
|
411
|
-
// Corresponds to the following:
|
412
|
-
// [digits]{minLengthNsn}|
|
413
|
-
// plus_sign*(([punctuation]|[star])*[digits]){3,}
|
414
|
-
// ([punctuation]|[star]|[digits]|[alpha])*
|
415
|
-
//
|
416
|
-
// The first reg-ex is to allow short numbers (two digits long) to be parsed
|
417
|
-
// if they are entered as "15" etc, but only if there is no punctuation in
|
418
|
-
// them. The second expression restricts the number of digits to three or
|
419
|
-
// more, but then allows them to be in international form, and to have
|
420
|
-
// alpha-characters and punctuation.
|
421
|
-
const string valid_phone_number_;
|
422
|
-
|
423
|
-
// Regexp of all possible ways to write extensions, for use when parsing. This
|
424
|
-
// will be run as a case-insensitive regexp match. Wide character versions are
|
425
|
-
// also provided after each ASCII version.
|
426
|
-
// For parsing, we are slightly more lenient in our interpretation than for
|
427
|
-
// matching. Here we allow a "comma" as a possible extension indicator. When
|
428
|
-
// matching, this is hardly ever used to indicate this.
|
429
|
-
const string extn_patterns_for_parsing_;
|
430
|
-
|
431
|
-
public:
|
432
|
-
scoped_ptr<const AbstractRegExpFactory> regexp_factory_;
|
433
|
-
scoped_ptr<RegExpCache> regexp_cache_;
|
434
|
-
|
435
|
-
// A map that contains characters that are essential when dialling. That means
|
436
|
-
// any of the characters in this map must not be removed from a number when
|
437
|
-
// dialing, otherwise the call will not reach the intended destination.
|
438
|
-
map<char32, char> diallable_char_mappings_;
|
439
|
-
// These mappings map a character (key) to a specific digit that should
|
440
|
-
// replace it for normalization purposes.
|
441
|
-
map<char32, char> alpha_mappings_;
|
442
|
-
// For performance reasons, store a map of combining alpha_mappings with ASCII
|
443
|
-
// digits.
|
444
|
-
map<char32, char> alpha_phone_mappings_;
|
445
|
-
|
446
|
-
// Separate map of all symbols that we wish to retain when formatting alpha
|
447
|
-
// numbers. This includes digits, ascii letters and number grouping symbols
|
448
|
-
// such as "-" and " ".
|
449
|
-
map<char32, char> all_plus_number_grouping_symbols_;
|
450
|
-
|
451
|
-
// Map of country calling codes that use a mobile token before the area code.
|
452
|
-
// One example of when this is relevant is when determining the length of the
|
453
|
-
// national destination code, which should be the length of the area code plus
|
454
|
-
// the length of the mobile token.
|
455
|
-
map<int, char> mobile_token_mappings_;
|
456
|
-
|
457
|
-
// Set of country codes that have geographically assigned mobile numbers (see
|
458
|
-
// geo_mobile_countries_ below) which are not based on *area codes*. For
|
459
|
-
// example, in China mobile numbers start with a carrier indicator, and beyond
|
460
|
-
// that are geographically assigned: this carrier indicator is not considered
|
461
|
-
// to be an area code.
|
462
|
-
set<int> geo_mobile_countries_without_mobile_area_codes_;
|
463
|
-
|
464
|
-
// Set of country calling codes that have geographically assigned mobile
|
465
|
-
// numbers. This may not be complete; we add calling codes case by case, as we
|
466
|
-
// find geographical mobile numbers or hear from user reports.
|
467
|
-
set<int> geo_mobile_countries_;
|
468
|
-
|
469
|
-
// Pattern that makes it easy to distinguish whether a region has a unique
|
470
|
-
// international dialing prefix or not. If a region has a unique international
|
471
|
-
// prefix (e.g. 011 in USA), it will be represented as a string that contains
|
472
|
-
// a sequence of ASCII digits. If there are multiple available international
|
473
|
-
// prefixes in a region, they will be represented as a regex string that
|
474
|
-
// always contains character(s) other than ASCII digits.
|
475
|
-
// Note this regex also includes tilde, which signals waiting for the tone.
|
476
|
-
scoped_ptr<const RegExp> unique_international_prefix_;
|
477
|
-
|
478
|
-
scoped_ptr<const RegExp> digits_pattern_;
|
479
|
-
scoped_ptr<const RegExp> capturing_digit_pattern_;
|
480
|
-
scoped_ptr<const RegExp> capturing_ascii_digits_pattern_;
|
481
|
-
|
482
|
-
// Regular expression of acceptable characters that may start a phone number
|
483
|
-
// for the purposes of parsing. This allows us to strip away meaningless
|
484
|
-
// prefixes to phone numbers that may be mistakenly given to us. This consists
|
485
|
-
// of digits, the plus symbol and arabic-indic digits. This does not contain
|
486
|
-
// alpha characters, although they may be used later in the number. It also
|
487
|
-
// does not include other punctuation, as this will be stripped later during
|
488
|
-
// parsing and is of no information value when parsing a number. The string
|
489
|
-
// starting with this valid character is captured.
|
490
|
-
// This corresponds to VALID_START_CHAR in the java version.
|
491
|
-
scoped_ptr<const RegExp> valid_start_char_pattern_;
|
492
|
-
|
493
|
-
// Regular expression of valid characters before a marker that might indicate
|
494
|
-
// a second number.
|
495
|
-
scoped_ptr<const RegExp> capture_up_to_second_number_start_pattern_;
|
496
|
-
|
497
|
-
// Regular expression of trailing characters that we want to remove. We remove
|
498
|
-
// all characters that are not alpha or numerical characters. The hash
|
499
|
-
// character is retained here, as it may signify the previous block was an
|
500
|
-
// extension. Note the capturing block at the start to capture the rest of the
|
501
|
-
// number if this was a match.
|
502
|
-
// This corresponds to UNWANTED_END_CHAR_PATTERN in the java version.
|
503
|
-
scoped_ptr<const RegExp> unwanted_end_char_pattern_;
|
504
|
-
|
505
|
-
// Regular expression of groups of valid punctuation characters.
|
506
|
-
scoped_ptr<const RegExp> separator_pattern_;
|
507
|
-
|
508
|
-
// Regexp of all possible ways to write extensions, for use when finding phone
|
509
|
-
// numbers in text. This will be run as a case-insensitive regexp match. Wide
|
510
|
-
// character versions are also provided after each ASCII version.
|
511
|
-
const string extn_patterns_for_matching_;
|
512
|
-
|
513
|
-
// Regexp of all known extension prefixes used by different regions followed
|
514
|
-
// by 1 or more valid digits, for use when parsing.
|
515
|
-
scoped_ptr<const RegExp> extn_pattern_;
|
516
|
-
|
517
|
-
// We append optionally the extension pattern to the end here, as a valid
|
518
|
-
// phone number may have an extension prefix appended, followed by 1 or more
|
519
|
-
// digits.
|
520
|
-
scoped_ptr<const RegExp> valid_phone_number_pattern_;
|
521
|
-
|
522
|
-
// We use this pattern to check if the phone number has at least three letters
|
523
|
-
// in it - if so, then we treat it as a number where some phone-number digits
|
524
|
-
// are represented by letters.
|
525
|
-
scoped_ptr<const RegExp> valid_alpha_phone_pattern_;
|
526
|
-
|
527
|
-
scoped_ptr<const RegExp> first_group_capturing_pattern_;
|
528
|
-
|
529
|
-
scoped_ptr<const RegExp> carrier_code_pattern_;
|
530
|
-
|
531
|
-
scoped_ptr<const RegExp> plus_chars_pattern_;
|
532
|
-
|
533
|
-
PhoneNumberRegExpsAndMappings()
|
534
|
-
: punctuation_and_star_sign_(StrCat(PhoneNumberUtil::kValidPunctuation,
|
535
|
-
kStarSign)),
|
536
|
-
min_length_phone_number_pattern_(
|
537
|
-
StrCat(kDigits, "{", PhoneNumberUtil::kMinLengthForNsn, "}")),
|
538
|
-
valid_phone_number_(
|
539
|
-
StrCat(min_length_phone_number_pattern_, "|[",
|
540
|
-
PhoneNumberUtil::kPlusChars, "]*(?:[",
|
541
|
-
punctuation_and_star_sign_, "]*",
|
542
|
-
kDigits, "){3,}[", kValidAlpha,
|
543
|
-
punctuation_and_star_sign_, kDigits,
|
544
|
-
"]*")),
|
545
|
-
extn_patterns_for_parsing_(
|
546
|
-
CreateExtnPattern(StrCat(",", kSingleExtnSymbolsForMatching))),
|
547
|
-
regexp_factory_(new RegExpFactory()),
|
548
|
-
regexp_cache_(new RegExpCache(*regexp_factory_.get(), 128)),
|
549
|
-
diallable_char_mappings_(),
|
550
|
-
alpha_mappings_(),
|
551
|
-
alpha_phone_mappings_(),
|
552
|
-
all_plus_number_grouping_symbols_(),
|
553
|
-
mobile_token_mappings_(),
|
554
|
-
geo_mobile_countries_without_mobile_area_codes_(),
|
555
|
-
geo_mobile_countries_(),
|
556
|
-
unique_international_prefix_(regexp_factory_->CreateRegExp(
|
557
|
-
/* "[\\d]+(?:[~⁓∼~][\\d]+)?" */
|
558
|
-
"[\\d]+(?:[~\xE2\x81\x93\xE2\x88\xBC\xEF\xBD\x9E][\\d]+)?")),
|
559
|
-
digits_pattern_(
|
560
|
-
regexp_factory_->CreateRegExp(StrCat("[", kDigits, "]*"))),
|
561
|
-
capturing_digit_pattern_(
|
562
|
-
regexp_factory_->CreateRegExp(StrCat("([", kDigits, "])"))),
|
563
|
-
capturing_ascii_digits_pattern_(
|
564
|
-
regexp_factory_->CreateRegExp("(\\d+)")),
|
565
|
-
valid_start_char_pattern_(regexp_factory_->CreateRegExp(
|
566
|
-
StrCat("[", PhoneNumberUtil::kPlusChars, kDigits, "]"))),
|
567
|
-
capture_up_to_second_number_start_pattern_(
|
568
|
-
regexp_factory_->CreateRegExp(
|
569
|
-
PhoneNumberUtil::kCaptureUpToSecondNumberStart)),
|
570
|
-
unwanted_end_char_pattern_(
|
571
|
-
regexp_factory_->CreateRegExp("[^\\p{N}\\p{L}#]")),
|
572
|
-
separator_pattern_(
|
573
|
-
regexp_factory_->CreateRegExp(
|
574
|
-
StrCat("[", PhoneNumberUtil::kValidPunctuation, "]+"))),
|
575
|
-
extn_patterns_for_matching_(
|
576
|
-
CreateExtnPattern(kSingleExtnSymbolsForMatching)),
|
577
|
-
extn_pattern_(regexp_factory_->CreateRegExp(
|
578
|
-
StrCat("(?i)(?:", extn_patterns_for_parsing_, ")$"))),
|
579
|
-
valid_phone_number_pattern_(regexp_factory_->CreateRegExp(
|
580
|
-
StrCat("(?i)", valid_phone_number_,
|
581
|
-
"(?:", extn_patterns_for_parsing_, ")?"))),
|
582
|
-
valid_alpha_phone_pattern_(regexp_factory_->CreateRegExp(
|
583
|
-
StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}"))),
|
584
|
-
// The first_group_capturing_pattern was originally set to $1 but there
|
585
|
-
// are some countries for which the first group is not used in the
|
586
|
-
// national pattern (e.g. Argentina) so the $1 group does not match
|
587
|
-
// correctly. Therefore, we use \d, so that the first group actually
|
588
|
-
// used in the pattern will be matched.
|
589
|
-
first_group_capturing_pattern_(
|
590
|
-
regexp_factory_->CreateRegExp("(\\$\\d)")),
|
591
|
-
carrier_code_pattern_(regexp_factory_->CreateRegExp("\\$CC")),
|
592
|
-
plus_chars_pattern_(
|
593
|
-
regexp_factory_->CreateRegExp(
|
594
|
-
StrCat("[", PhoneNumberUtil::kPlusChars, "]+"))) {
|
595
|
-
InitializeMapsAndSets();
|
596
|
-
}
|
597
|
-
|
598
|
-
private:
|
599
|
-
DISALLOW_COPY_AND_ASSIGN(PhoneNumberRegExpsAndMappings);
|
600
|
-
};
|
601
|
-
|
602
|
-
// Private constructor. Also takes care of initialisation.
|
603
|
-
PhoneNumberUtil::PhoneNumberUtil()
|
604
|
-
: logger_(Logger::set_logger_impl(new NullLogger())),
|
605
|
-
reg_exps_(new PhoneNumberRegExpsAndMappings),
|
606
|
-
country_calling_code_to_region_code_map_(new vector<IntRegionsPair>()),
|
607
|
-
nanpa_regions_(new set<string>()),
|
608
|
-
region_to_metadata_map_(new map<string, PhoneMetadata>()),
|
609
|
-
country_code_to_non_geographical_metadata_map_(
|
610
|
-
new map<int, PhoneMetadata>) {
|
611
|
-
Logger::set_logger_impl(logger_.get());
|
612
|
-
// TODO: Update the java version to put the contents of the init
|
613
|
-
// method inside the constructor as well to keep both in sync.
|
614
|
-
PhoneMetadataCollection metadata_collection;
|
615
|
-
if (!LoadCompiledInMetadata(&metadata_collection)) {
|
616
|
-
LOG(DFATAL) << "Could not parse compiled-in metadata.";
|
617
|
-
return;
|
618
|
-
}
|
619
|
-
// Storing data in a temporary map to make it easier to find other regions
|
620
|
-
// that share a country calling code when inserting data.
|
621
|
-
map<int, list<string>* > country_calling_code_to_region_map;
|
622
|
-
for (RepeatedPtrField<PhoneMetadata>::const_iterator it =
|
623
|
-
metadata_collection.metadata().begin();
|
624
|
-
it != metadata_collection.metadata().end();
|
625
|
-
++it) {
|
626
|
-
const string& region_code = it->id();
|
627
|
-
if (region_code == RegionCode::GetUnknown()) {
|
628
|
-
continue;
|
629
|
-
}
|
630
|
-
|
631
|
-
int country_calling_code = it->country_code();
|
632
|
-
if (kRegionCodeForNonGeoEntity == region_code) {
|
633
|
-
country_code_to_non_geographical_metadata_map_->insert(
|
634
|
-
std::make_pair(country_calling_code, *it));
|
635
|
-
} else {
|
636
|
-
region_to_metadata_map_->insert(std::make_pair(region_code, *it));
|
637
|
-
}
|
638
|
-
map<int, list<string>* >::iterator calling_code_in_map =
|
639
|
-
country_calling_code_to_region_map.find(country_calling_code);
|
640
|
-
if (calling_code_in_map != country_calling_code_to_region_map.end()) {
|
641
|
-
if (it->main_country_for_code()) {
|
642
|
-
calling_code_in_map->second->push_front(region_code);
|
643
|
-
} else {
|
644
|
-
calling_code_in_map->second->push_back(region_code);
|
645
|
-
}
|
646
|
-
} else {
|
647
|
-
// For most country calling codes, there will be only one region code.
|
648
|
-
list<string>* list_with_region_code = new list<string>();
|
649
|
-
list_with_region_code->push_back(region_code);
|
650
|
-
country_calling_code_to_region_map.insert(
|
651
|
-
std::make_pair(country_calling_code, list_with_region_code));
|
652
|
-
}
|
653
|
-
if (country_calling_code == kNanpaCountryCode) {
|
654
|
-
nanpa_regions_->insert(region_code);
|
655
|
-
}
|
656
|
-
}
|
657
|
-
|
658
|
-
country_calling_code_to_region_code_map_->insert(
|
659
|
-
country_calling_code_to_region_code_map_->begin(),
|
660
|
-
country_calling_code_to_region_map.begin(),
|
661
|
-
country_calling_code_to_region_map.end());
|
662
|
-
// Sort all the pairs in ascending order according to country calling code.
|
663
|
-
std::sort(country_calling_code_to_region_code_map_->begin(),
|
664
|
-
country_calling_code_to_region_code_map_->end(),
|
665
|
-
OrderByFirst());
|
666
|
-
}
|
667
|
-
|
668
|
-
PhoneNumberUtil::~PhoneNumberUtil() {
|
669
|
-
STLDeleteContainerPairSecondPointers(
|
670
|
-
country_calling_code_to_region_code_map_->begin(),
|
671
|
-
country_calling_code_to_region_code_map_->end());
|
672
|
-
}
|
673
|
-
|
674
|
-
void PhoneNumberUtil::GetSupportedRegions(set<string>* regions) const {
|
675
|
-
DCHECK(regions);
|
676
|
-
for (map<string, PhoneMetadata>::const_iterator it =
|
677
|
-
region_to_metadata_map_->begin(); it != region_to_metadata_map_->end();
|
678
|
-
++it) {
|
679
|
-
regions->insert(it->first);
|
680
|
-
}
|
681
|
-
}
|
682
|
-
|
683
|
-
void PhoneNumberUtil::GetSupportedGlobalNetworkCallingCodes(
|
684
|
-
set<int>* calling_codes) const {
|
685
|
-
DCHECK(calling_codes);
|
686
|
-
for (map<int, PhoneMetadata>::const_iterator it =
|
687
|
-
country_code_to_non_geographical_metadata_map_->begin();
|
688
|
-
it != country_code_to_non_geographical_metadata_map_->end(); ++it) {
|
689
|
-
calling_codes->insert(it->first);
|
690
|
-
}
|
691
|
-
}
|
692
|
-
|
693
|
-
// Public wrapper function to get a PhoneNumberUtil instance with the default
|
694
|
-
// metadata file.
|
695
|
-
// static
|
696
|
-
PhoneNumberUtil* PhoneNumberUtil::GetInstance() {
|
697
|
-
return Singleton<PhoneNumberUtil>::GetInstance();
|
698
|
-
}
|
699
|
-
|
700
|
-
const string& PhoneNumberUtil::GetExtnPatternsForMatching() const {
|
701
|
-
return reg_exps_->extn_patterns_for_matching_;
|
702
|
-
}
|
703
|
-
|
704
|
-
bool PhoneNumberUtil::StartsWithPlusCharsPattern(const string& number)
|
705
|
-
const {
|
706
|
-
const scoped_ptr<RegExpInput> number_string_piece(
|
707
|
-
reg_exps_->regexp_factory_->CreateInput(number));
|
708
|
-
return reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get());
|
709
|
-
}
|
710
|
-
|
711
|
-
bool PhoneNumberUtil::ContainsOnlyValidDigits(const string& s) const {
|
712
|
-
return reg_exps_->digits_pattern_->FullMatch(s);
|
713
|
-
}
|
714
|
-
|
715
|
-
void PhoneNumberUtil::TrimUnwantedEndChars(string* number) const {
|
716
|
-
DCHECK(number);
|
717
|
-
UnicodeText number_as_unicode;
|
718
|
-
number_as_unicode.PointToUTF8(number->data(), number->size());
|
719
|
-
char current_char[5];
|
720
|
-
int len;
|
721
|
-
UnicodeText::const_reverse_iterator reverse_it(number_as_unicode.end());
|
722
|
-
for (; reverse_it.base() != number_as_unicode.begin(); ++reverse_it) {
|
723
|
-
len = reverse_it.get_utf8(current_char);
|
724
|
-
current_char[len] = '\0';
|
725
|
-
if (!reg_exps_->unwanted_end_char_pattern_->FullMatch(current_char)) {
|
726
|
-
break;
|
727
|
-
}
|
728
|
-
}
|
729
|
-
|
730
|
-
number->assign(UnicodeText::UTF8Substring(number_as_unicode.begin(),
|
731
|
-
reverse_it.base()));
|
732
|
-
}
|
733
|
-
|
734
|
-
bool PhoneNumberUtil::IsFormatEligibleForAsYouTypeFormatter(
|
735
|
-
const string& format) const {
|
736
|
-
// A pattern that is used to determine if a numberFormat under
|
737
|
-
// availableFormats is eligible to be used by the AYTF. It is eligible when
|
738
|
-
// the format element under numberFormat contains groups of the dollar sign
|
739
|
-
// followed by a single digit, separated by valid phone number punctuation.
|
740
|
-
// This prevents invalid punctuation (such as the star sign in Israeli star
|
741
|
-
// numbers) getting into the output of the AYTF.
|
742
|
-
const RegExp& eligible_format_pattern = reg_exps_->regexp_cache_->GetRegExp(
|
743
|
-
StrCat("[", kValidPunctuation, "]*", "(\\$\\d", "[",
|
744
|
-
kValidPunctuation, "]*)+"));
|
745
|
-
return eligible_format_pattern.FullMatch(format);
|
746
|
-
}
|
747
|
-
|
748
|
-
bool PhoneNumberUtil::FormattingRuleHasFirstGroupOnly(
|
749
|
-
const string& national_prefix_formatting_rule) const {
|
750
|
-
// A pattern that is used to determine if the national prefix formatting rule
|
751
|
-
// has the first group only, i.e., does not start with the national prefix.
|
752
|
-
// Note that the pattern explicitly allows for unbalanced parentheses.
|
753
|
-
const RegExp& first_group_only_prefix_pattern =
|
754
|
-
reg_exps_->regexp_cache_->GetRegExp("\\(?\\$1\\)?");
|
755
|
-
return national_prefix_formatting_rule.empty() ||
|
756
|
-
first_group_only_prefix_pattern.FullMatch(
|
757
|
-
national_prefix_formatting_rule);
|
758
|
-
}
|
759
|
-
|
760
|
-
void PhoneNumberUtil::GetNddPrefixForRegion(const string& region_code,
|
761
|
-
bool strip_non_digits,
|
762
|
-
string* national_prefix) const {
|
763
|
-
DCHECK(national_prefix);
|
764
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
|
765
|
-
if (!metadata) {
|
766
|
-
LOG(WARNING) << "Invalid or unknown region code (" << region_code
|
767
|
-
<< ") provided.";
|
768
|
-
return;
|
769
|
-
}
|
770
|
-
national_prefix->assign(metadata->national_prefix());
|
771
|
-
if (strip_non_digits) {
|
772
|
-
// Note: if any other non-numeric symbols are ever used in national
|
773
|
-
// prefixes, these would have to be removed here as well.
|
774
|
-
strrmm(national_prefix, "~");
|
775
|
-
}
|
776
|
-
}
|
777
|
-
|
778
|
-
bool PhoneNumberUtil::IsValidRegionCode(const string& region_code) const {
|
779
|
-
return (region_to_metadata_map_->find(region_code) !=
|
780
|
-
region_to_metadata_map_->end());
|
781
|
-
}
|
782
|
-
|
783
|
-
bool PhoneNumberUtil::HasValidCountryCallingCode(
|
784
|
-
int country_calling_code) const {
|
785
|
-
// Create an IntRegionsPair with the country_code passed in, and use it to
|
786
|
-
// locate the pair with the same country_code in the sorted vector.
|
787
|
-
IntRegionsPair target_pair;
|
788
|
-
target_pair.first = country_calling_code;
|
789
|
-
return (binary_search(country_calling_code_to_region_code_map_->begin(),
|
790
|
-
country_calling_code_to_region_code_map_->end(),
|
791
|
-
target_pair, OrderByFirst()));
|
792
|
-
}
|
793
|
-
|
794
|
-
// Returns a pointer to the phone metadata for the appropriate region or NULL
|
795
|
-
// if the region code is invalid or unknown.
|
796
|
-
const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegion(
|
797
|
-
const string& region_code) const {
|
798
|
-
map<string, PhoneMetadata>::const_iterator it =
|
799
|
-
region_to_metadata_map_->find(region_code);
|
800
|
-
if (it != region_to_metadata_map_->end()) {
|
801
|
-
return &it->second;
|
802
|
-
}
|
803
|
-
return NULL;
|
804
|
-
}
|
805
|
-
|
806
|
-
const PhoneMetadata* PhoneNumberUtil::GetMetadataForNonGeographicalRegion(
|
807
|
-
int country_calling_code) const {
|
808
|
-
map<int, PhoneMetadata>::const_iterator it =
|
809
|
-
country_code_to_non_geographical_metadata_map_->find(
|
810
|
-
country_calling_code);
|
811
|
-
if (it != country_code_to_non_geographical_metadata_map_->end()) {
|
812
|
-
return &it->second;
|
813
|
-
}
|
814
|
-
return NULL;
|
815
|
-
}
|
816
|
-
|
817
|
-
void PhoneNumberUtil::Format(const PhoneNumber& number,
|
818
|
-
PhoneNumberFormat number_format,
|
819
|
-
string* formatted_number) const {
|
820
|
-
DCHECK(formatted_number);
|
821
|
-
if (number.national_number() == 0) {
|
822
|
-
const string& raw_input = number.raw_input();
|
823
|
-
if (!raw_input.empty()) {
|
824
|
-
// Unparseable numbers that kept their raw input just use that.
|
825
|
-
// This is the only case where a number can be formatted as E164 without a
|
826
|
-
// leading '+' symbol (but the original number wasn't parseable anyway).
|
827
|
-
// TODO: Consider removing the 'if' above so that unparseable
|
828
|
-
// strings without raw input format to the empty string instead of "+00".
|
829
|
-
formatted_number->assign(raw_input);
|
830
|
-
return;
|
831
|
-
}
|
832
|
-
}
|
833
|
-
int country_calling_code = number.country_code();
|
834
|
-
string national_significant_number;
|
835
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
836
|
-
if (number_format == E164) {
|
837
|
-
// Early exit for E164 case (even if the country calling code is invalid)
|
838
|
-
// since no formatting of the national number needs to be applied.
|
839
|
-
// Extensions are not formatted.
|
840
|
-
formatted_number->assign(national_significant_number);
|
841
|
-
PrefixNumberWithCountryCallingCode(country_calling_code, E164,
|
842
|
-
formatted_number);
|
843
|
-
return;
|
844
|
-
}
|
845
|
-
if (!HasValidCountryCallingCode(country_calling_code)) {
|
846
|
-
formatted_number->assign(national_significant_number);
|
847
|
-
return;
|
848
|
-
}
|
849
|
-
// Note here that all NANPA formatting rules are contained by US, so we use
|
850
|
-
// that to format NANPA numbers. The same applies to Russian Fed regions -
|
851
|
-
// rules are contained by Russia. French Indian Ocean country rules are
|
852
|
-
// contained by Réunion.
|
853
|
-
string region_code;
|
854
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
855
|
-
// Metadata cannot be NULL because the country calling code is valid (which
|
856
|
-
// means that the region code cannot be ZZ and must be one of our supported
|
857
|
-
// region codes).
|
858
|
-
const PhoneMetadata* metadata =
|
859
|
-
GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
|
860
|
-
FormatNsn(national_significant_number, *metadata, number_format,
|
861
|
-
formatted_number);
|
862
|
-
MaybeAppendFormattedExtension(number, *metadata, number_format,
|
863
|
-
formatted_number);
|
864
|
-
PrefixNumberWithCountryCallingCode(country_calling_code, number_format,
|
865
|
-
formatted_number);
|
866
|
-
}
|
867
|
-
|
868
|
-
void PhoneNumberUtil::FormatByPattern(
|
869
|
-
const PhoneNumber& number,
|
870
|
-
PhoneNumberFormat number_format,
|
871
|
-
const RepeatedPtrField<NumberFormat>& user_defined_formats,
|
872
|
-
string* formatted_number) const {
|
873
|
-
DCHECK(formatted_number);
|
874
|
-
int country_calling_code = number.country_code();
|
875
|
-
// Note GetRegionCodeForCountryCode() is used because formatting information
|
876
|
-
// for regions which share a country calling code is contained by only one
|
877
|
-
// region for performance reasons. For example, for NANPA regions it will be
|
878
|
-
// contained in the metadata for US.
|
879
|
-
string national_significant_number;
|
880
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
881
|
-
if (!HasValidCountryCallingCode(country_calling_code)) {
|
882
|
-
formatted_number->assign(national_significant_number);
|
883
|
-
return;
|
884
|
-
}
|
885
|
-
string region_code;
|
886
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
887
|
-
// Metadata cannot be NULL because the country calling code is valid.
|
888
|
-
const PhoneMetadata* metadata =
|
889
|
-
GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
|
890
|
-
const NumberFormat* formatting_pattern =
|
891
|
-
ChooseFormattingPatternForNumber(user_defined_formats,
|
892
|
-
national_significant_number);
|
893
|
-
if (!formatting_pattern) {
|
894
|
-
// If no pattern above is matched, we format the number as a whole.
|
895
|
-
formatted_number->assign(national_significant_number);
|
896
|
-
} else {
|
897
|
-
NumberFormat num_format_copy;
|
898
|
-
// Before we do a replacement of the national prefix pattern $NP with the
|
899
|
-
// national prefix, we need to copy the rule so that subsequent replacements
|
900
|
-
// for different numbers have the appropriate national prefix.
|
901
|
-
num_format_copy.MergeFrom(*formatting_pattern);
|
902
|
-
string national_prefix_formatting_rule(
|
903
|
-
formatting_pattern->national_prefix_formatting_rule());
|
904
|
-
if (!national_prefix_formatting_rule.empty()) {
|
905
|
-
const string& national_prefix = metadata->national_prefix();
|
906
|
-
if (!national_prefix.empty()) {
|
907
|
-
// Replace $NP with national prefix and $FG with the first group ($1).
|
908
|
-
GlobalReplaceSubstring("$NP", national_prefix,
|
909
|
-
&national_prefix_formatting_rule);
|
910
|
-
GlobalReplaceSubstring("$FG", "$1",
|
911
|
-
&national_prefix_formatting_rule);
|
912
|
-
num_format_copy.set_national_prefix_formatting_rule(
|
913
|
-
national_prefix_formatting_rule);
|
914
|
-
} else {
|
915
|
-
// We don't want to have a rule for how to format the national prefix if
|
916
|
-
// there isn't one.
|
917
|
-
num_format_copy.clear_national_prefix_formatting_rule();
|
918
|
-
}
|
919
|
-
}
|
920
|
-
FormatNsnUsingPattern(national_significant_number, num_format_copy,
|
921
|
-
number_format, formatted_number);
|
922
|
-
}
|
923
|
-
MaybeAppendFormattedExtension(number, *metadata, NATIONAL, formatted_number);
|
924
|
-
PrefixNumberWithCountryCallingCode(country_calling_code, number_format,
|
925
|
-
formatted_number);
|
926
|
-
}
|
927
|
-
|
928
|
-
void PhoneNumberUtil::FormatNationalNumberWithCarrierCode(
|
929
|
-
const PhoneNumber& number,
|
930
|
-
const string& carrier_code,
|
931
|
-
string* formatted_number) const {
|
932
|
-
int country_calling_code = number.country_code();
|
933
|
-
string national_significant_number;
|
934
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
935
|
-
if (!HasValidCountryCallingCode(country_calling_code)) {
|
936
|
-
formatted_number->assign(national_significant_number);
|
937
|
-
return;
|
938
|
-
}
|
939
|
-
|
940
|
-
// Note GetRegionCodeForCountryCode() is used because formatting information
|
941
|
-
// for regions which share a country calling code is contained by only one
|
942
|
-
// region for performance reasons. For example, for NANPA regions it will be
|
943
|
-
// contained in the metadata for US.
|
944
|
-
string region_code;
|
945
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
946
|
-
// Metadata cannot be NULL because the country calling code is valid.
|
947
|
-
const PhoneMetadata* metadata =
|
948
|
-
GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
|
949
|
-
FormatNsnWithCarrier(national_significant_number, *metadata, NATIONAL,
|
950
|
-
carrier_code, formatted_number);
|
951
|
-
MaybeAppendFormattedExtension(number, *metadata, NATIONAL, formatted_number);
|
952
|
-
PrefixNumberWithCountryCallingCode(country_calling_code, NATIONAL,
|
953
|
-
formatted_number);
|
954
|
-
}
|
955
|
-
|
956
|
-
const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegionOrCallingCode(
|
957
|
-
int country_calling_code, const string& region_code) const {
|
958
|
-
return kRegionCodeForNonGeoEntity == region_code
|
959
|
-
? GetMetadataForNonGeographicalRegion(country_calling_code)
|
960
|
-
: GetMetadataForRegion(region_code);
|
961
|
-
}
|
962
|
-
|
963
|
-
void PhoneNumberUtil::FormatNationalNumberWithPreferredCarrierCode(
|
964
|
-
const PhoneNumber& number,
|
965
|
-
const string& fallback_carrier_code,
|
966
|
-
string* formatted_number) const {
|
967
|
-
FormatNationalNumberWithCarrierCode(
|
968
|
-
number,
|
969
|
-
number.has_preferred_domestic_carrier_code()
|
970
|
-
? number.preferred_domestic_carrier_code()
|
971
|
-
: fallback_carrier_code,
|
972
|
-
formatted_number);
|
973
|
-
}
|
974
|
-
|
975
|
-
void PhoneNumberUtil::FormatNumberForMobileDialing(
|
976
|
-
const PhoneNumber& number,
|
977
|
-
const string& calling_from,
|
978
|
-
bool with_formatting,
|
979
|
-
string* formatted_number) const {
|
980
|
-
int country_calling_code = number.country_code();
|
981
|
-
if (!HasValidCountryCallingCode(country_calling_code)) {
|
982
|
-
formatted_number->assign(number.has_raw_input() ? number.raw_input() : "");
|
983
|
-
return;
|
984
|
-
}
|
985
|
-
|
986
|
-
formatted_number->assign("");
|
987
|
-
// Clear the extension, as that part cannot normally be dialed together with
|
988
|
-
// the main number.
|
989
|
-
PhoneNumber number_no_extension(number);
|
990
|
-
number_no_extension.clear_extension();
|
991
|
-
string region_code;
|
992
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
993
|
-
PhoneNumberType number_type = GetNumberType(number_no_extension);
|
994
|
-
bool is_valid_number = (number_type != UNKNOWN);
|
995
|
-
if (calling_from == region_code) {
|
996
|
-
bool is_fixed_line_or_mobile =
|
997
|
-
(number_type == FIXED_LINE) || (number_type == MOBILE) ||
|
998
|
-
(number_type == FIXED_LINE_OR_MOBILE);
|
999
|
-
// Carrier codes may be needed in some countries. We handle this here.
|
1000
|
-
if ((region_code == "CO") && (number_type == FIXED_LINE)) {
|
1001
|
-
FormatNationalNumberWithCarrierCode(
|
1002
|
-
number_no_extension, kColombiaMobileToFixedLinePrefix,
|
1003
|
-
formatted_number);
|
1004
|
-
} else if ((region_code == "BR") && (is_fixed_line_or_mobile)) {
|
1005
|
-
if (number_no_extension.has_preferred_domestic_carrier_code()) {
|
1006
|
-
FormatNationalNumberWithPreferredCarrierCode(number_no_extension, "",
|
1007
|
-
formatted_number);
|
1008
|
-
} else {
|
1009
|
-
// Brazilian fixed line and mobile numbers need to be dialed with a
|
1010
|
-
// carrier code when called within Brazil. Without that, most of the
|
1011
|
-
// carriers won't connect the call. Because of that, we return an empty
|
1012
|
-
// string here.
|
1013
|
-
formatted_number->assign("");
|
1014
|
-
}
|
1015
|
-
} else if (is_valid_number && region_code == "HU") {
|
1016
|
-
// The national format for HU numbers doesn't contain the national prefix,
|
1017
|
-
// because that is how numbers are normally written down. However, the
|
1018
|
-
// national prefix is obligatory when dialing from a mobile phone, except
|
1019
|
-
// for short numbers. As a result, we add it back here if it is a valid
|
1020
|
-
// regular length phone number.
|
1021
|
-
Format(number_no_extension, NATIONAL, formatted_number);
|
1022
|
-
string hu_national_prefix;
|
1023
|
-
GetNddPrefixForRegion(region_code, true /* strip non-digits */,
|
1024
|
-
&hu_national_prefix);
|
1025
|
-
formatted_number->assign(
|
1026
|
-
StrCat(hu_national_prefix, " ", *formatted_number));
|
1027
|
-
} else if (country_calling_code == kNanpaCountryCode) {
|
1028
|
-
// For NANPA countries, we output international format for numbers that
|
1029
|
-
// can be dialed internationally, since that always works, except for
|
1030
|
-
// numbers which might potentially be short numbers, which are always
|
1031
|
-
// dialled in national format.
|
1032
|
-
const PhoneMetadata* region_metadata = GetMetadataForRegion(calling_from);
|
1033
|
-
string national_number;
|
1034
|
-
GetNationalSignificantNumber(number_no_extension, &national_number);
|
1035
|
-
if (CanBeInternationallyDialled(number_no_extension) &&
|
1036
|
-
!IsShorterThanPossibleNormalNumber(region_metadata,
|
1037
|
-
national_number)) {
|
1038
|
-
Format(number_no_extension, INTERNATIONAL, formatted_number);
|
1039
|
-
} else {
|
1040
|
-
Format(number_no_extension, NATIONAL, formatted_number);
|
1041
|
-
}
|
1042
|
-
} else {
|
1043
|
-
// For non-geographical countries, and Mexican and Chilean fixed line and
|
1044
|
-
// mobile numbers, we output international format for numbers that can be
|
1045
|
-
// dialed internationally as that always works.
|
1046
|
-
if ((region_code == kRegionCodeForNonGeoEntity ||
|
1047
|
-
// MX fixed line and mobile numbers should always be formatted in
|
1048
|
-
// international format, even when dialed within MX. For national
|
1049
|
-
// format to work, a carrier code needs to be used, and the correct
|
1050
|
-
// carrier code depends on if the caller and callee are from the same
|
1051
|
-
// local area. It is trickier to get that to work correctly than
|
1052
|
-
// using international format, which is tested to work fine on all
|
1053
|
-
// carriers.
|
1054
|
-
// CL fixed line numbers need the national prefix when dialing in the
|
1055
|
-
// national format, but don't have it when used for display. The
|
1056
|
-
// reverse is true for mobile numbers. As a result, we output them in
|
1057
|
-
// the international format to make it work.
|
1058
|
-
((region_code == "MX" || region_code == "CL") &&
|
1059
|
-
is_fixed_line_or_mobile)) &&
|
1060
|
-
CanBeInternationallyDialled(number_no_extension)) {
|
1061
|
-
Format(number_no_extension, INTERNATIONAL, formatted_number);
|
1062
|
-
} else {
|
1063
|
-
Format(number_no_extension, NATIONAL, formatted_number);
|
1064
|
-
}
|
1065
|
-
}
|
1066
|
-
} else if (is_valid_number &&
|
1067
|
-
CanBeInternationallyDialled(number_no_extension)) {
|
1068
|
-
// We assume that short numbers are not diallable from outside their
|
1069
|
-
// region, so if a number is not a valid regular length phone number, we
|
1070
|
-
// treat it as if it cannot be internationally dialled.
|
1071
|
-
with_formatting
|
1072
|
-
? Format(number_no_extension, INTERNATIONAL, formatted_number)
|
1073
|
-
: Format(number_no_extension, E164, formatted_number);
|
1074
|
-
return;
|
1075
|
-
}
|
1076
|
-
if (!with_formatting) {
|
1077
|
-
NormalizeDiallableCharsOnly(formatted_number);
|
1078
|
-
}
|
1079
|
-
}
|
1080
|
-
|
1081
|
-
void PhoneNumberUtil::FormatOutOfCountryCallingNumber(
|
1082
|
-
const PhoneNumber& number,
|
1083
|
-
const string& calling_from,
|
1084
|
-
string* formatted_number) const {
|
1085
|
-
DCHECK(formatted_number);
|
1086
|
-
if (!IsValidRegionCode(calling_from)) {
|
1087
|
-
VLOG(1) << "Trying to format number from invalid region " << calling_from
|
1088
|
-
<< ". International formatting applied.";
|
1089
|
-
Format(number, INTERNATIONAL, formatted_number);
|
1090
|
-
return;
|
1091
|
-
}
|
1092
|
-
int country_code = number.country_code();
|
1093
|
-
string national_significant_number;
|
1094
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
1095
|
-
if (!HasValidCountryCallingCode(country_code)) {
|
1096
|
-
formatted_number->assign(national_significant_number);
|
1097
|
-
return;
|
1098
|
-
}
|
1099
|
-
if (country_code == kNanpaCountryCode) {
|
1100
|
-
if (IsNANPACountry(calling_from)) {
|
1101
|
-
// For NANPA regions, return the national format for these regions but
|
1102
|
-
// prefix it with the country calling code.
|
1103
|
-
Format(number, NATIONAL, formatted_number);
|
1104
|
-
formatted_number->insert(0, StrCat(country_code, " "));
|
1105
|
-
return;
|
1106
|
-
}
|
1107
|
-
} else if (country_code == GetCountryCodeForValidRegion(calling_from)) {
|
1108
|
-
// If neither region is a NANPA region, then we check to see if the
|
1109
|
-
// country calling code of the number and the country calling code of the
|
1110
|
-
// region we are calling from are the same.
|
1111
|
-
// For regions that share a country calling code, the country calling code
|
1112
|
-
// need not be dialled. This also applies when dialling within a region, so
|
1113
|
-
// this if clause covers both these cases.
|
1114
|
-
// Technically this is the case for dialling from la Réunion to other
|
1115
|
-
// overseas departments of France (French Guiana, Martinique, Guadeloupe),
|
1116
|
-
// but not vice versa - so we don't cover this edge case for now and for
|
1117
|
-
// those cases return the version including country calling code.
|
1118
|
-
// Details here:
|
1119
|
-
// http://www.petitfute.com/voyage/225-info-pratiques-reunion
|
1120
|
-
Format(number, NATIONAL, formatted_number);
|
1121
|
-
return;
|
1122
|
-
}
|
1123
|
-
// Metadata cannot be NULL because we checked 'IsValidRegionCode()' above.
|
1124
|
-
const PhoneMetadata* metadata_calling_from =
|
1125
|
-
GetMetadataForRegion(calling_from);
|
1126
|
-
const string& international_prefix =
|
1127
|
-
metadata_calling_from->international_prefix();
|
1128
|
-
|
1129
|
-
// For regions that have multiple international prefixes, the international
|
1130
|
-
// format of the number is returned, unless there is a preferred international
|
1131
|
-
// prefix.
|
1132
|
-
const string international_prefix_for_formatting(
|
1133
|
-
reg_exps_->unique_international_prefix_->FullMatch(international_prefix)
|
1134
|
-
? international_prefix
|
1135
|
-
: metadata_calling_from->preferred_international_prefix());
|
1136
|
-
|
1137
|
-
string region_code;
|
1138
|
-
GetRegionCodeForCountryCode(country_code, ®ion_code);
|
1139
|
-
// Metadata cannot be NULL because the country_code is valid.
|
1140
|
-
const PhoneMetadata* metadata_for_region =
|
1141
|
-
GetMetadataForRegionOrCallingCode(country_code, region_code);
|
1142
|
-
FormatNsn(national_significant_number, *metadata_for_region, INTERNATIONAL,
|
1143
|
-
formatted_number);
|
1144
|
-
MaybeAppendFormattedExtension(number, *metadata_for_region, INTERNATIONAL,
|
1145
|
-
formatted_number);
|
1146
|
-
if (!international_prefix_for_formatting.empty()) {
|
1147
|
-
formatted_number->insert(
|
1148
|
-
0, StrCat(international_prefix_for_formatting, " ", country_code, " "));
|
1149
|
-
} else {
|
1150
|
-
PrefixNumberWithCountryCallingCode(country_code, INTERNATIONAL,
|
1151
|
-
formatted_number);
|
1152
|
-
}
|
1153
|
-
}
|
1154
|
-
|
1155
|
-
void PhoneNumberUtil::FormatInOriginalFormat(const PhoneNumber& number,
|
1156
|
-
const string& region_calling_from,
|
1157
|
-
string* formatted_number) const {
|
1158
|
-
DCHECK(formatted_number);
|
1159
|
-
|
1160
|
-
if (number.has_raw_input() &&
|
1161
|
-
(HasUnexpectedItalianLeadingZero(number) ||
|
1162
|
-
!HasFormattingPatternForNumber(number))) {
|
1163
|
-
// We check if we have the formatting pattern because without that, we might
|
1164
|
-
// format the number as a group without national prefix.
|
1165
|
-
formatted_number->assign(number.raw_input());
|
1166
|
-
return;
|
1167
|
-
}
|
1168
|
-
if (!number.has_country_code_source()) {
|
1169
|
-
Format(number, NATIONAL, formatted_number);
|
1170
|
-
return;
|
1171
|
-
}
|
1172
|
-
switch (number.country_code_source()) {
|
1173
|
-
case PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN:
|
1174
|
-
Format(number, INTERNATIONAL, formatted_number);
|
1175
|
-
break;
|
1176
|
-
case PhoneNumber::FROM_NUMBER_WITH_IDD:
|
1177
|
-
FormatOutOfCountryCallingNumber(number, region_calling_from,
|
1178
|
-
formatted_number);
|
1179
|
-
break;
|
1180
|
-
case PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN:
|
1181
|
-
Format(number, INTERNATIONAL, formatted_number);
|
1182
|
-
formatted_number->erase(formatted_number->begin());
|
1183
|
-
break;
|
1184
|
-
case PhoneNumber::FROM_DEFAULT_COUNTRY:
|
1185
|
-
// Fall-through to default case.
|
1186
|
-
default:
|
1187
|
-
string region_code;
|
1188
|
-
GetRegionCodeForCountryCode(number.country_code(), ®ion_code);
|
1189
|
-
// We strip non-digits from the NDD here, and from the raw input later, so
|
1190
|
-
// that we can compare them easily.
|
1191
|
-
string national_prefix;
|
1192
|
-
GetNddPrefixForRegion(region_code, true /* strip non-digits */,
|
1193
|
-
&national_prefix);
|
1194
|
-
if (national_prefix.empty()) {
|
1195
|
-
// If the region doesn't have a national prefix at all, we can safely
|
1196
|
-
// return the national format without worrying about a national prefix
|
1197
|
-
// being added.
|
1198
|
-
Format(number, NATIONAL, formatted_number);
|
1199
|
-
break;
|
1200
|
-
}
|
1201
|
-
// Otherwise, we check if the original number was entered with a national
|
1202
|
-
// prefix.
|
1203
|
-
if (RawInputContainsNationalPrefix(number.raw_input(), national_prefix,
|
1204
|
-
region_code)) {
|
1205
|
-
// If so, we can safely return the national format.
|
1206
|
-
Format(number, NATIONAL, formatted_number);
|
1207
|
-
break;
|
1208
|
-
}
|
1209
|
-
// Metadata cannot be NULL here because GetNddPrefixForRegion() (above)
|
1210
|
-
// leaves the prefix empty if there is no metadata for the region.
|
1211
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
|
1212
|
-
string national_number;
|
1213
|
-
GetNationalSignificantNumber(number, &national_number);
|
1214
|
-
// This shouldn't be NULL, because we have checked that above with
|
1215
|
-
// HasFormattingPatternForNumber.
|
1216
|
-
const NumberFormat* format_rule =
|
1217
|
-
ChooseFormattingPatternForNumber(metadata->number_format(),
|
1218
|
-
national_number);
|
1219
|
-
// The format rule could still be NULL here if the national number was 0
|
1220
|
-
// and there was no raw input (this should not be possible for numbers
|
1221
|
-
// generated by the phonenumber library as they would also not have a
|
1222
|
-
// country calling code and we would have exited earlier).
|
1223
|
-
if (!format_rule) {
|
1224
|
-
Format(number, NATIONAL, formatted_number);
|
1225
|
-
break;
|
1226
|
-
}
|
1227
|
-
// When the format we apply to this number doesn't contain national
|
1228
|
-
// prefix, we can just return the national format.
|
1229
|
-
// TODO: Refactor the code below with the code in
|
1230
|
-
// IsNationalPrefixPresentIfRequired.
|
1231
|
-
string candidate_national_prefix_rule(
|
1232
|
-
format_rule->national_prefix_formatting_rule());
|
1233
|
-
// We assume that the first-group symbol will never be _before_ the
|
1234
|
-
// national prefix.
|
1235
|
-
if (!candidate_national_prefix_rule.empty()) {
|
1236
|
-
candidate_national_prefix_rule.erase(
|
1237
|
-
candidate_national_prefix_rule.find("$1"));
|
1238
|
-
NormalizeDigitsOnly(&candidate_national_prefix_rule);
|
1239
|
-
}
|
1240
|
-
if (candidate_national_prefix_rule.empty()) {
|
1241
|
-
// National prefix not used when formatting this number.
|
1242
|
-
Format(number, NATIONAL, formatted_number);
|
1243
|
-
break;
|
1244
|
-
}
|
1245
|
-
// Otherwise, we need to remove the national prefix from our output.
|
1246
|
-
RepeatedPtrField<NumberFormat> number_formats;
|
1247
|
-
NumberFormat* number_format = number_formats.Add();
|
1248
|
-
number_format->MergeFrom(*format_rule);
|
1249
|
-
number_format->clear_national_prefix_formatting_rule();
|
1250
|
-
FormatByPattern(number, NATIONAL, number_formats, formatted_number);
|
1251
|
-
break;
|
1252
|
-
}
|
1253
|
-
// If no digit is inserted/removed/modified as a result of our formatting, we
|
1254
|
-
// return the formatted phone number; otherwise we return the raw input the
|
1255
|
-
// user entered.
|
1256
|
-
if (!formatted_number->empty() && !number.raw_input().empty()) {
|
1257
|
-
string normalized_formatted_number(*formatted_number);
|
1258
|
-
NormalizeDiallableCharsOnly(&normalized_formatted_number);
|
1259
|
-
string normalized_raw_input(number.raw_input());
|
1260
|
-
NormalizeDiallableCharsOnly(&normalized_raw_input);
|
1261
|
-
if (normalized_formatted_number != normalized_raw_input) {
|
1262
|
-
formatted_number->assign(number.raw_input());
|
1263
|
-
}
|
1264
|
-
}
|
1265
|
-
}
|
1266
|
-
|
1267
|
-
// Check if raw_input, which is assumed to be in the national format, has a
|
1268
|
-
// national prefix. The national prefix is assumed to be in digits-only form.
|
1269
|
-
bool PhoneNumberUtil::RawInputContainsNationalPrefix(
|
1270
|
-
const string& raw_input,
|
1271
|
-
const string& national_prefix,
|
1272
|
-
const string& region_code) const {
|
1273
|
-
string normalized_national_number(raw_input);
|
1274
|
-
NormalizeDigitsOnly(&normalized_national_number);
|
1275
|
-
if (HasPrefixString(normalized_national_number, national_prefix)) {
|
1276
|
-
// Some Japanese numbers (e.g. 00777123) might be mistaken to contain
|
1277
|
-
// the national prefix when written without it (e.g. 0777123) if we just
|
1278
|
-
// do prefix matching. To tackle that, we check the validity of the
|
1279
|
-
// number if the assumed national prefix is removed (777123 won't be
|
1280
|
-
// valid in Japan).
|
1281
|
-
PhoneNumber number_without_national_prefix;
|
1282
|
-
if (Parse(normalized_national_number.substr(national_prefix.length()),
|
1283
|
-
region_code, &number_without_national_prefix)
|
1284
|
-
== NO_PARSING_ERROR) {
|
1285
|
-
return IsValidNumber(number_without_national_prefix);
|
1286
|
-
}
|
1287
|
-
}
|
1288
|
-
return false;
|
1289
|
-
}
|
1290
|
-
|
1291
|
-
bool PhoneNumberUtil::HasUnexpectedItalianLeadingZero(
|
1292
|
-
const PhoneNumber& number) const {
|
1293
|
-
return number.has_italian_leading_zero() &&
|
1294
|
-
!IsLeadingZeroPossible(number.country_code());
|
1295
|
-
}
|
1296
|
-
|
1297
|
-
bool PhoneNumberUtil::HasFormattingPatternForNumber(
|
1298
|
-
const PhoneNumber& number) const {
|
1299
|
-
int country_calling_code = number.country_code();
|
1300
|
-
string region_code;
|
1301
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
1302
|
-
const PhoneMetadata* metadata =
|
1303
|
-
GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
|
1304
|
-
if (!metadata) {
|
1305
|
-
return false;
|
1306
|
-
}
|
1307
|
-
string national_number;
|
1308
|
-
GetNationalSignificantNumber(number, &national_number);
|
1309
|
-
const NumberFormat* format_rule =
|
1310
|
-
ChooseFormattingPatternForNumber(metadata->number_format(),
|
1311
|
-
national_number);
|
1312
|
-
return format_rule;
|
1313
|
-
}
|
1314
|
-
|
1315
|
-
void PhoneNumberUtil::FormatOutOfCountryKeepingAlphaChars(
|
1316
|
-
const PhoneNumber& number,
|
1317
|
-
const string& calling_from,
|
1318
|
-
string* formatted_number) const {
|
1319
|
-
// If there is no raw input, then we can't keep alpha characters because there
|
1320
|
-
// aren't any. In this case, we return FormatOutOfCountryCallingNumber.
|
1321
|
-
if (number.raw_input().empty()) {
|
1322
|
-
FormatOutOfCountryCallingNumber(number, calling_from, formatted_number);
|
1323
|
-
return;
|
1324
|
-
}
|
1325
|
-
int country_code = number.country_code();
|
1326
|
-
if (!HasValidCountryCallingCode(country_code)) {
|
1327
|
-
formatted_number->assign(number.raw_input());
|
1328
|
-
return;
|
1329
|
-
}
|
1330
|
-
// Strip any prefix such as country calling code, IDD, that was present. We do
|
1331
|
-
// this by comparing the number in raw_input with the parsed number.
|
1332
|
-
string raw_input_copy(number.raw_input());
|
1333
|
-
// Normalize punctuation. We retain number grouping symbols such as " " only.
|
1334
|
-
NormalizeHelper(reg_exps_->all_plus_number_grouping_symbols_, true,
|
1335
|
-
&raw_input_copy);
|
1336
|
-
// Now we trim everything before the first three digits in the parsed number.
|
1337
|
-
// We choose three because all valid alpha numbers have 3 digits at the start
|
1338
|
-
// - if it does not, then we don't trim anything at all. Similarly, if the
|
1339
|
-
// national number was less than three digits, we don't trim anything at all.
|
1340
|
-
string national_number;
|
1341
|
-
GetNationalSignificantNumber(number, &national_number);
|
1342
|
-
if (national_number.length() > 3) {
|
1343
|
-
size_t first_national_number_digit =
|
1344
|
-
raw_input_copy.find(national_number.substr(0, 3));
|
1345
|
-
if (first_national_number_digit != string::npos) {
|
1346
|
-
raw_input_copy = raw_input_copy.substr(first_national_number_digit);
|
1347
|
-
}
|
1348
|
-
}
|
1349
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(calling_from);
|
1350
|
-
if (country_code == kNanpaCountryCode) {
|
1351
|
-
if (IsNANPACountry(calling_from)) {
|
1352
|
-
StrAppend(formatted_number, country_code, " ", raw_input_copy);
|
1353
|
-
return;
|
1354
|
-
}
|
1355
|
-
} else if (metadata &&
|
1356
|
-
country_code == GetCountryCodeForValidRegion(calling_from)) {
|
1357
|
-
const NumberFormat* formatting_pattern =
|
1358
|
-
ChooseFormattingPatternForNumber(metadata->number_format(),
|
1359
|
-
national_number);
|
1360
|
-
if (!formatting_pattern) {
|
1361
|
-
// If no pattern above is matched, we format the original input.
|
1362
|
-
formatted_number->assign(raw_input_copy);
|
1363
|
-
return;
|
1364
|
-
}
|
1365
|
-
NumberFormat new_format;
|
1366
|
-
new_format.MergeFrom(*formatting_pattern);
|
1367
|
-
// The first group is the first group of digits that the user wrote
|
1368
|
-
// together.
|
1369
|
-
new_format.set_pattern("(\\d+)(.*)");
|
1370
|
-
// Here we just concatenate them back together after the national prefix
|
1371
|
-
// has been fixed.
|
1372
|
-
new_format.set_format("$1$2");
|
1373
|
-
// Now we format using this pattern instead of the default pattern, but
|
1374
|
-
// with the national prefix prefixed if necessary.
|
1375
|
-
// This will not work in the cases where the pattern (and not the
|
1376
|
-
// leading digits) decide whether a national prefix needs to be used, since
|
1377
|
-
// we have overridden the pattern to match anything, but that is not the
|
1378
|
-
// case in the metadata to date.
|
1379
|
-
FormatNsnUsingPattern(raw_input_copy, new_format, NATIONAL,
|
1380
|
-
formatted_number);
|
1381
|
-
return;
|
1382
|
-
}
|
1383
|
-
|
1384
|
-
string international_prefix_for_formatting;
|
1385
|
-
// If an unsupported region-calling-from is entered, or a country with
|
1386
|
-
// multiple international prefixes, the international format of the number is
|
1387
|
-
// returned, unless there is a preferred international prefix.
|
1388
|
-
if (metadata) {
|
1389
|
-
const string& international_prefix = metadata->international_prefix();
|
1390
|
-
international_prefix_for_formatting =
|
1391
|
-
reg_exps_->unique_international_prefix_->FullMatch(international_prefix)
|
1392
|
-
? international_prefix
|
1393
|
-
: metadata->preferred_international_prefix();
|
1394
|
-
}
|
1395
|
-
if (!international_prefix_for_formatting.empty()) {
|
1396
|
-
StrAppend(formatted_number, international_prefix_for_formatting, " ",
|
1397
|
-
country_code, " ", raw_input_copy);
|
1398
|
-
} else {
|
1399
|
-
// Invalid region entered as country-calling-from (so no metadata was found
|
1400
|
-
// for it) or the region chosen has multiple international dialling
|
1401
|
-
// prefixes.
|
1402
|
-
if (!IsValidRegionCode(calling_from)) {
|
1403
|
-
VLOG(1) << "Trying to format number from invalid region " << calling_from
|
1404
|
-
<< ". International formatting applied.";
|
1405
|
-
}
|
1406
|
-
formatted_number->assign(raw_input_copy);
|
1407
|
-
PrefixNumberWithCountryCallingCode(country_code, INTERNATIONAL,
|
1408
|
-
formatted_number);
|
1409
|
-
}
|
1410
|
-
}
|
1411
|
-
|
1412
|
-
const NumberFormat* PhoneNumberUtil::ChooseFormattingPatternForNumber(
|
1413
|
-
const RepeatedPtrField<NumberFormat>& available_formats,
|
1414
|
-
const string& national_number) const {
|
1415
|
-
for (RepeatedPtrField<NumberFormat>::const_iterator
|
1416
|
-
it = available_formats.begin(); it != available_formats.end(); ++it) {
|
1417
|
-
int size = it->leading_digits_pattern_size();
|
1418
|
-
if (size > 0) {
|
1419
|
-
const scoped_ptr<RegExpInput> number_copy(
|
1420
|
-
reg_exps_->regexp_factory_->CreateInput(national_number));
|
1421
|
-
// We always use the last leading_digits_pattern, as it is the most
|
1422
|
-
// detailed.
|
1423
|
-
if (!reg_exps_->regexp_cache_->GetRegExp(
|
1424
|
-
it->leading_digits_pattern(size - 1)).Consume(
|
1425
|
-
number_copy.get())) {
|
1426
|
-
continue;
|
1427
|
-
}
|
1428
|
-
}
|
1429
|
-
const RegExp& pattern_to_match(
|
1430
|
-
reg_exps_->regexp_cache_->GetRegExp(it->pattern()));
|
1431
|
-
if (pattern_to_match.FullMatch(national_number)) {
|
1432
|
-
return &(*it);
|
1433
|
-
}
|
1434
|
-
}
|
1435
|
-
return NULL;
|
1436
|
-
}
|
1437
|
-
|
1438
|
-
// Note that carrier_code is optional - if an empty string, no carrier code
|
1439
|
-
// replacement will take place.
|
1440
|
-
void PhoneNumberUtil::FormatNsnUsingPatternWithCarrier(
|
1441
|
-
const string& national_number,
|
1442
|
-
const NumberFormat& formatting_pattern,
|
1443
|
-
PhoneNumberUtil::PhoneNumberFormat number_format,
|
1444
|
-
const string& carrier_code,
|
1445
|
-
string* formatted_number) const {
|
1446
|
-
DCHECK(formatted_number);
|
1447
|
-
string number_format_rule(formatting_pattern.format());
|
1448
|
-
if (number_format == PhoneNumberUtil::NATIONAL &&
|
1449
|
-
carrier_code.length() > 0 &&
|
1450
|
-
formatting_pattern.domestic_carrier_code_formatting_rule().length() > 0) {
|
1451
|
-
// Replace the $CC in the formatting rule with the desired carrier code.
|
1452
|
-
string carrier_code_formatting_rule =
|
1453
|
-
formatting_pattern.domestic_carrier_code_formatting_rule();
|
1454
|
-
reg_exps_->carrier_code_pattern_->Replace(&carrier_code_formatting_rule,
|
1455
|
-
carrier_code);
|
1456
|
-
reg_exps_->first_group_capturing_pattern_->
|
1457
|
-
Replace(&number_format_rule, carrier_code_formatting_rule);
|
1458
|
-
} else {
|
1459
|
-
// Use the national prefix formatting rule instead.
|
1460
|
-
string national_prefix_formatting_rule =
|
1461
|
-
formatting_pattern.national_prefix_formatting_rule();
|
1462
|
-
if (number_format == PhoneNumberUtil::NATIONAL &&
|
1463
|
-
national_prefix_formatting_rule.length() > 0) {
|
1464
|
-
// Apply the national_prefix_formatting_rule as the formatting_pattern
|
1465
|
-
// contains only information on how the national significant number
|
1466
|
-
// should be formatted at this point.
|
1467
|
-
reg_exps_->first_group_capturing_pattern_->Replace(
|
1468
|
-
&number_format_rule, national_prefix_formatting_rule);
|
1469
|
-
}
|
1470
|
-
}
|
1471
|
-
formatted_number->assign(national_number);
|
1472
|
-
|
1473
|
-
const RegExp& pattern_to_match(
|
1474
|
-
reg_exps_->regexp_cache_->GetRegExp(formatting_pattern.pattern()));
|
1475
|
-
pattern_to_match.GlobalReplace(formatted_number, number_format_rule);
|
1476
|
-
|
1477
|
-
if (number_format == RFC3966) {
|
1478
|
-
// First consume any leading punctuation, if any was present.
|
1479
|
-
const scoped_ptr<RegExpInput> number(
|
1480
|
-
reg_exps_->regexp_factory_->CreateInput(*formatted_number));
|
1481
|
-
if (reg_exps_->separator_pattern_->Consume(number.get())) {
|
1482
|
-
formatted_number->assign(number->ToString());
|
1483
|
-
}
|
1484
|
-
// Then replace all separators with a "-".
|
1485
|
-
reg_exps_->separator_pattern_->GlobalReplace(formatted_number, "-");
|
1486
|
-
}
|
1487
|
-
}
|
1488
|
-
|
1489
|
-
// Simple wrapper of FormatNsnUsingPatternWithCarrier for the common case of
|
1490
|
-
// no carrier code.
|
1491
|
-
void PhoneNumberUtil::FormatNsnUsingPattern(
|
1492
|
-
const string& national_number,
|
1493
|
-
const NumberFormat& formatting_pattern,
|
1494
|
-
PhoneNumberUtil::PhoneNumberFormat number_format,
|
1495
|
-
string* formatted_number) const {
|
1496
|
-
DCHECK(formatted_number);
|
1497
|
-
FormatNsnUsingPatternWithCarrier(national_number, formatting_pattern,
|
1498
|
-
number_format, "", formatted_number);
|
1499
|
-
}
|
1500
|
-
|
1501
|
-
void PhoneNumberUtil::FormatNsn(const string& number,
|
1502
|
-
const PhoneMetadata& metadata,
|
1503
|
-
PhoneNumberFormat number_format,
|
1504
|
-
string* formatted_number) const {
|
1505
|
-
DCHECK(formatted_number);
|
1506
|
-
FormatNsnWithCarrier(number, metadata, number_format, "", formatted_number);
|
1507
|
-
}
|
1508
|
-
|
1509
|
-
// Note in some regions, the national number can be written in two completely
|
1510
|
-
// different ways depending on whether it forms part of the NATIONAL format or
|
1511
|
-
// INTERNATIONAL format. The number_format parameter here is used to specify
|
1512
|
-
// which format to use for those cases. If a carrier_code is specified, this
|
1513
|
-
// will be inserted into the formatted string to replace $CC.
|
1514
|
-
void PhoneNumberUtil::FormatNsnWithCarrier(const string& number,
|
1515
|
-
const PhoneMetadata& metadata,
|
1516
|
-
PhoneNumberFormat number_format,
|
1517
|
-
const string& carrier_code,
|
1518
|
-
string* formatted_number) const {
|
1519
|
-
DCHECK(formatted_number);
|
1520
|
-
// When the intl_number_formats exists, we use that to format national number
|
1521
|
-
// for the INTERNATIONAL format instead of using the number_formats.
|
1522
|
-
const RepeatedPtrField<NumberFormat> available_formats =
|
1523
|
-
(metadata.intl_number_format_size() == 0 || number_format == NATIONAL)
|
1524
|
-
? metadata.number_format()
|
1525
|
-
: metadata.intl_number_format();
|
1526
|
-
const NumberFormat* formatting_pattern =
|
1527
|
-
ChooseFormattingPatternForNumber(available_formats, number);
|
1528
|
-
if (!formatting_pattern) {
|
1529
|
-
formatted_number->assign(number);
|
1530
|
-
} else {
|
1531
|
-
FormatNsnUsingPatternWithCarrier(number, *formatting_pattern, number_format,
|
1532
|
-
carrier_code, formatted_number);
|
1533
|
-
}
|
1534
|
-
}
|
1535
|
-
|
1536
|
-
// Appends the formatted extension of a phone number, if the phone number had an
|
1537
|
-
// extension specified.
|
1538
|
-
void PhoneNumberUtil::MaybeAppendFormattedExtension(
|
1539
|
-
const PhoneNumber& number,
|
1540
|
-
const PhoneMetadata& metadata,
|
1541
|
-
PhoneNumberFormat number_format,
|
1542
|
-
string* formatted_number) const {
|
1543
|
-
DCHECK(formatted_number);
|
1544
|
-
if (number.has_extension() && number.extension().length() > 0) {
|
1545
|
-
if (number_format == RFC3966) {
|
1546
|
-
StrAppend(formatted_number, kRfc3966ExtnPrefix, number.extension());
|
1547
|
-
} else {
|
1548
|
-
if (metadata.has_preferred_extn_prefix()) {
|
1549
|
-
StrAppend(formatted_number, metadata.preferred_extn_prefix(),
|
1550
|
-
number.extension());
|
1551
|
-
} else {
|
1552
|
-
StrAppend(formatted_number, kDefaultExtnPrefix, number.extension());
|
1553
|
-
}
|
1554
|
-
}
|
1555
|
-
}
|
1556
|
-
}
|
1557
|
-
|
1558
|
-
bool PhoneNumberUtil::IsNANPACountry(const string& region_code) const {
|
1559
|
-
return nanpa_regions_->find(region_code) != nanpa_regions_->end();
|
1560
|
-
}
|
1561
|
-
|
1562
|
-
// Returns the region codes that matches the specific country calling code. In
|
1563
|
-
// the case of no region code being found, region_codes will be left empty.
|
1564
|
-
void PhoneNumberUtil::GetRegionCodesForCountryCallingCode(
|
1565
|
-
int country_calling_code,
|
1566
|
-
list<string>* region_codes) const {
|
1567
|
-
DCHECK(region_codes);
|
1568
|
-
// Create a IntRegionsPair with the country_code passed in, and use it to
|
1569
|
-
// locate the pair with the same country_code in the sorted vector.
|
1570
|
-
IntRegionsPair target_pair;
|
1571
|
-
target_pair.first = country_calling_code;
|
1572
|
-
typedef vector<IntRegionsPair>::const_iterator ConstIterator;
|
1573
|
-
pair<ConstIterator, ConstIterator> range = equal_range(
|
1574
|
-
country_calling_code_to_region_code_map_->begin(),
|
1575
|
-
country_calling_code_to_region_code_map_->end(),
|
1576
|
-
target_pair, OrderByFirst());
|
1577
|
-
if (range.first != range.second) {
|
1578
|
-
region_codes->insert(region_codes->begin(),
|
1579
|
-
range.first->second->begin(),
|
1580
|
-
range.first->second->end());
|
1581
|
-
}
|
1582
|
-
}
|
1583
|
-
|
1584
|
-
// Returns the region code that matches the specific country calling code. In
|
1585
|
-
// the case of no region code being found, the unknown region code will be
|
1586
|
-
// returned.
|
1587
|
-
void PhoneNumberUtil::GetRegionCodeForCountryCode(
|
1588
|
-
int country_calling_code,
|
1589
|
-
string* region_code) const {
|
1590
|
-
DCHECK(region_code);
|
1591
|
-
list<string> region_codes;
|
1592
|
-
|
1593
|
-
GetRegionCodesForCountryCallingCode(country_calling_code, ®ion_codes);
|
1594
|
-
*region_code = (region_codes.size() > 0) ?
|
1595
|
-
region_codes.front() : RegionCode::GetUnknown();
|
1596
|
-
}
|
1597
|
-
|
1598
|
-
void PhoneNumberUtil::GetRegionCodeForNumber(const PhoneNumber& number,
|
1599
|
-
string* region_code) const {
|
1600
|
-
DCHECK(region_code);
|
1601
|
-
int country_calling_code = number.country_code();
|
1602
|
-
list<string> region_codes;
|
1603
|
-
GetRegionCodesForCountryCallingCode(country_calling_code, ®ion_codes);
|
1604
|
-
if (region_codes.size() == 0) {
|
1605
|
-
string number_string;
|
1606
|
-
GetNationalSignificantNumber(number, &number_string);
|
1607
|
-
VLOG(1) << "Missing/invalid country calling code ("
|
1608
|
-
<< country_calling_code
|
1609
|
-
<< ") for number " << number_string;
|
1610
|
-
*region_code = RegionCode::GetUnknown();
|
1611
|
-
return;
|
1612
|
-
}
|
1613
|
-
if (region_codes.size() == 1) {
|
1614
|
-
*region_code = region_codes.front();
|
1615
|
-
} else {
|
1616
|
-
GetRegionCodeForNumberFromRegionList(number, region_codes, region_code);
|
1617
|
-
}
|
1618
|
-
}
|
1619
|
-
|
1620
|
-
void PhoneNumberUtil::GetRegionCodeForNumberFromRegionList(
|
1621
|
-
const PhoneNumber& number, const list<string>& region_codes,
|
1622
|
-
string* region_code) const {
|
1623
|
-
DCHECK(region_code);
|
1624
|
-
string national_number;
|
1625
|
-
GetNationalSignificantNumber(number, &national_number);
|
1626
|
-
for (list<string>::const_iterator it = region_codes.begin();
|
1627
|
-
it != region_codes.end(); ++it) {
|
1628
|
-
// Metadata cannot be NULL because the region codes come from the country
|
1629
|
-
// calling code map.
|
1630
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(*it);
|
1631
|
-
if (metadata->has_leading_digits()) {
|
1632
|
-
const scoped_ptr<RegExpInput> number(
|
1633
|
-
reg_exps_->regexp_factory_->CreateInput(national_number));
|
1634
|
-
if (reg_exps_->regexp_cache_->
|
1635
|
-
GetRegExp(metadata->leading_digits()).Consume(number.get())) {
|
1636
|
-
*region_code = *it;
|
1637
|
-
return;
|
1638
|
-
}
|
1639
|
-
} else if (GetNumberTypeHelper(national_number, *metadata) != UNKNOWN) {
|
1640
|
-
*region_code = *it;
|
1641
|
-
return;
|
1642
|
-
}
|
1643
|
-
}
|
1644
|
-
*region_code = RegionCode::GetUnknown();
|
1645
|
-
}
|
1646
|
-
|
1647
|
-
int PhoneNumberUtil::GetCountryCodeForRegion(const string& region_code) const {
|
1648
|
-
if (!IsValidRegionCode(region_code)) {
|
1649
|
-
LOG(WARNING) << "Invalid or unknown region code (" << region_code
|
1650
|
-
<< ") provided.";
|
1651
|
-
return 0;
|
1652
|
-
}
|
1653
|
-
return GetCountryCodeForValidRegion(region_code);
|
1654
|
-
}
|
1655
|
-
|
1656
|
-
int PhoneNumberUtil::GetCountryCodeForValidRegion(
|
1657
|
-
const string& region_code) const {
|
1658
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
|
1659
|
-
return metadata->country_code();
|
1660
|
-
}
|
1661
|
-
|
1662
|
-
// Gets a valid fixed-line number for the specified region_code. Returns false
|
1663
|
-
// if the region was unknown or 001 (representing non-geographical regions), or
|
1664
|
-
// if no number exists.
|
1665
|
-
bool PhoneNumberUtil::GetExampleNumber(const string& region_code,
|
1666
|
-
PhoneNumber* number) const {
|
1667
|
-
DCHECK(number);
|
1668
|
-
return GetExampleNumberForType(region_code, FIXED_LINE, number);
|
1669
|
-
}
|
1670
|
-
|
1671
|
-
bool PhoneNumberUtil::GetInvalidExampleNumber(const string& region_code,
|
1672
|
-
PhoneNumber* number) const {
|
1673
|
-
DCHECK(number);
|
1674
|
-
if (!IsValidRegionCode(region_code)) {
|
1675
|
-
LOG(WARNING) << "Invalid or unknown region code (" << region_code
|
1676
|
-
<< ") provided.";
|
1677
|
-
return false;
|
1678
|
-
}
|
1679
|
-
// We start off with a valid fixed-line number since every country supports
|
1680
|
-
// this. Alternatively we could start with a different number type, since
|
1681
|
-
// fixed-line numbers typically have a wide breadth of valid number lengths
|
1682
|
-
// and we may have to make it very short before we get an invalid number.
|
1683
|
-
const PhoneMetadata* region_metadata = GetMetadataForRegion(region_code);
|
1684
|
-
const PhoneNumberDesc* desc =
|
1685
|
-
GetNumberDescByType(*region_metadata, FIXED_LINE);
|
1686
|
-
if (!desc->has_example_number()) {
|
1687
|
-
// This shouldn't happen - we have a test for this.
|
1688
|
-
return false;
|
1689
|
-
}
|
1690
|
-
const string& example_number = desc->example_number();
|
1691
|
-
// Try and make the number invalid. We do this by changing the length. We try
|
1692
|
-
// reducing the length of the number, since currently no region has a number
|
1693
|
-
// that is the same length as kMinLengthForNsn. This is probably quicker than
|
1694
|
-
// making the number longer, which is another alternative. We could also use
|
1695
|
-
// the possible number pattern to extract the possible lengths of the number
|
1696
|
-
// to make this faster, but this method is only for unit-testing so simplicity
|
1697
|
-
// is preferred to performance.
|
1698
|
-
// We don't want to return a number that can't be parsed, so we check the
|
1699
|
-
// number is long enough. We try all possible lengths because phone number
|
1700
|
-
// plans often have overlapping prefixes so the number 123456 might be valid
|
1701
|
-
// as a fixed-line number, and 12345 as a mobile number. It would be faster to
|
1702
|
-
// loop in a different order, but we prefer numbers that look closer to real
|
1703
|
-
// numbers (and it gives us a variety of different lengths for the resulting
|
1704
|
-
// phone numbers - otherwise they would all be kMinLengthForNsn digits long.)
|
1705
|
-
for (size_t phone_number_length = example_number.length() - 1;
|
1706
|
-
phone_number_length >= kMinLengthForNsn;
|
1707
|
-
phone_number_length--) {
|
1708
|
-
string number_to_try = example_number.substr(0, phone_number_length);
|
1709
|
-
PhoneNumber possibly_valid_number;
|
1710
|
-
Parse(number_to_try, region_code, &possibly_valid_number);
|
1711
|
-
// We don't check the return value since we have already checked the
|
1712
|
-
// length, we know example numbers have only valid digits, and we know the
|
1713
|
-
// region code is fine.
|
1714
|
-
if (!IsValidNumber(possibly_valid_number)) {
|
1715
|
-
number->MergeFrom(possibly_valid_number);
|
1716
|
-
return true;
|
1717
|
-
}
|
1718
|
-
}
|
1719
|
-
// We have a test to check that this doesn't happen for any of our supported
|
1720
|
-
// regions.
|
1721
|
-
return false;
|
1722
|
-
}
|
1723
|
-
|
1724
|
-
// Gets a valid number for the specified region_code and type. Returns false if
|
1725
|
-
// the country was unknown or 001 (representing non-geographical regions), or if
|
1726
|
-
// no number exists.
|
1727
|
-
bool PhoneNumberUtil::GetExampleNumberForType(
|
1728
|
-
const string& region_code,
|
1729
|
-
PhoneNumberUtil::PhoneNumberType type,
|
1730
|
-
PhoneNumber* number) const {
|
1731
|
-
DCHECK(number);
|
1732
|
-
if (!IsValidRegionCode(region_code)) {
|
1733
|
-
LOG(WARNING) << "Invalid or unknown region code (" << region_code
|
1734
|
-
<< ") provided.";
|
1735
|
-
return false;
|
1736
|
-
}
|
1737
|
-
const PhoneMetadata* region_metadata = GetMetadataForRegion(region_code);
|
1738
|
-
const PhoneNumberDesc* desc = GetNumberDescByType(*region_metadata, type);
|
1739
|
-
if (desc && desc->has_example_number()) {
|
1740
|
-
ErrorType success = Parse(desc->example_number(), region_code, number);
|
1741
|
-
if (success == NO_PARSING_ERROR) {
|
1742
|
-
return true;
|
1743
|
-
} else {
|
1744
|
-
LOG(ERROR) << "Error parsing example number ("
|
1745
|
-
<< static_cast<int>(success) << ")";
|
1746
|
-
}
|
1747
|
-
}
|
1748
|
-
return false;
|
1749
|
-
}
|
1750
|
-
|
1751
|
-
bool PhoneNumberUtil::GetExampleNumberForType(
|
1752
|
-
PhoneNumberUtil::PhoneNumberType type,
|
1753
|
-
PhoneNumber* number) const {
|
1754
|
-
DCHECK(number);
|
1755
|
-
set<string> regions;
|
1756
|
-
GetSupportedRegions(®ions);
|
1757
|
-
for (set<string>::const_iterator it = regions.begin();
|
1758
|
-
it != regions.end(); ++it) {
|
1759
|
-
if (GetExampleNumberForType(*it, type, number)) {
|
1760
|
-
return true;
|
1761
|
-
}
|
1762
|
-
}
|
1763
|
-
// If there wasn't an example number for a region, try the non-geographical
|
1764
|
-
// entities.
|
1765
|
-
set<int> global_network_calling_codes;
|
1766
|
-
GetSupportedGlobalNetworkCallingCodes(&global_network_calling_codes);
|
1767
|
-
for (set<int>::const_iterator it = global_network_calling_codes.begin();
|
1768
|
-
it != global_network_calling_codes.end(); ++it) {
|
1769
|
-
int country_calling_code = *it;
|
1770
|
-
const PhoneMetadata* metadata =
|
1771
|
-
GetMetadataForNonGeographicalRegion(country_calling_code);
|
1772
|
-
const PhoneNumberDesc& desc = metadata->general_desc();
|
1773
|
-
if (desc.has_example_number()) {
|
1774
|
-
ErrorType success = Parse(StrCat(kPlusSign,
|
1775
|
-
country_calling_code,
|
1776
|
-
desc.example_number()),
|
1777
|
-
RegionCode::GetUnknown(), number);
|
1778
|
-
if (success == NO_PARSING_ERROR) {
|
1779
|
-
return true;
|
1780
|
-
} else {
|
1781
|
-
LOG(ERROR) << "Error parsing example number ("
|
1782
|
-
<< static_cast<int>(success) << ")";
|
1783
|
-
}
|
1784
|
-
}
|
1785
|
-
}
|
1786
|
-
// There are no example numbers of this type for any country in the library.
|
1787
|
-
return false;
|
1788
|
-
}
|
1789
|
-
|
1790
|
-
bool PhoneNumberUtil::GetExampleNumberForNonGeoEntity(
|
1791
|
-
int country_calling_code, PhoneNumber* number) const {
|
1792
|
-
DCHECK(number);
|
1793
|
-
const PhoneMetadata* metadata =
|
1794
|
-
GetMetadataForNonGeographicalRegion(country_calling_code);
|
1795
|
-
if (metadata) {
|
1796
|
-
const PhoneNumberDesc& desc = metadata->general_desc();
|
1797
|
-
if (desc.has_example_number()) {
|
1798
|
-
ErrorType success = Parse(StrCat(kPlusSign,
|
1799
|
-
SimpleItoa(country_calling_code),
|
1800
|
-
desc.example_number()),
|
1801
|
-
RegionCode::GetUnknown(), number);
|
1802
|
-
if (success == NO_PARSING_ERROR) {
|
1803
|
-
return true;
|
1804
|
-
} else {
|
1805
|
-
LOG(ERROR) << "Error parsing example number ("
|
1806
|
-
<< static_cast<int>(success) << ")";
|
1807
|
-
}
|
1808
|
-
}
|
1809
|
-
} else {
|
1810
|
-
LOG(WARNING) << "Invalid or unknown country calling code provided: "
|
1811
|
-
<< country_calling_code;
|
1812
|
-
}
|
1813
|
-
return false;
|
1814
|
-
}
|
1815
|
-
|
1816
|
-
PhoneNumberUtil::ErrorType PhoneNumberUtil::Parse(const string& number_to_parse,
|
1817
|
-
const string& default_region,
|
1818
|
-
PhoneNumber* number) const {
|
1819
|
-
DCHECK(number);
|
1820
|
-
return ParseHelper(number_to_parse, default_region, false, true, number);
|
1821
|
-
}
|
1822
|
-
|
1823
|
-
PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseAndKeepRawInput(
|
1824
|
-
const string& number_to_parse,
|
1825
|
-
const string& default_region,
|
1826
|
-
PhoneNumber* number) const {
|
1827
|
-
DCHECK(number);
|
1828
|
-
return ParseHelper(number_to_parse, default_region, true, true, number);
|
1829
|
-
}
|
1830
|
-
|
1831
|
-
// Checks to see that the region code used is valid, or if it is not valid, that
|
1832
|
-
// the number to parse starts with a + symbol so that we can attempt to infer
|
1833
|
-
// the country from the number. Returns false if it cannot use the region
|
1834
|
-
// provided and the region cannot be inferred.
|
1835
|
-
bool PhoneNumberUtil::CheckRegionForParsing(
|
1836
|
-
const string& number_to_parse,
|
1837
|
-
const string& default_region) const {
|
1838
|
-
if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) {
|
1839
|
-
const scoped_ptr<RegExpInput> number(
|
1840
|
-
reg_exps_->regexp_factory_->CreateInput(number_to_parse));
|
1841
|
-
if (!reg_exps_->plus_chars_pattern_->Consume(number.get())) {
|
1842
|
-
return false;
|
1843
|
-
}
|
1844
|
-
}
|
1845
|
-
return true;
|
1846
|
-
}
|
1847
|
-
|
1848
|
-
// Converts number_to_parse to a form that we can parse and write it to
|
1849
|
-
// national_number if it is written in RFC3966; otherwise extract a possible
|
1850
|
-
// number out of it and write to national_number.
|
1851
|
-
void PhoneNumberUtil::BuildNationalNumberForParsing(
|
1852
|
-
const string& number_to_parse, string* national_number) const {
|
1853
|
-
size_t index_of_phone_context = number_to_parse.find(kRfc3966PhoneContext);
|
1854
|
-
if (index_of_phone_context != string::npos) {
|
1855
|
-
int phone_context_start =
|
1856
|
-
index_of_phone_context + strlen(kRfc3966PhoneContext);
|
1857
|
-
// If the phone context contains a phone number prefix, we need to capture
|
1858
|
-
// it, whereas domains will be ignored.
|
1859
|
-
if (number_to_parse.at(phone_context_start) == kPlusSign[0]) {
|
1860
|
-
// Additional parameters might follow the phone context. If so, we will
|
1861
|
-
// remove them here because the parameters after phone context are not
|
1862
|
-
// important for parsing the phone number.
|
1863
|
-
size_t phone_context_end = number_to_parse.find(';', phone_context_start);
|
1864
|
-
if (phone_context_end != string::npos) {
|
1865
|
-
StrAppend(
|
1866
|
-
national_number, number_to_parse.substr(
|
1867
|
-
phone_context_start, phone_context_end - phone_context_start));
|
1868
|
-
} else {
|
1869
|
-
StrAppend(national_number, number_to_parse.substr(phone_context_start));
|
1870
|
-
}
|
1871
|
-
}
|
1872
|
-
|
1873
|
-
// Now append everything between the "tel:" prefix and the phone-context.
|
1874
|
-
// This should include the national number, an optional extension or
|
1875
|
-
// isdn-subaddress component. Note we also handle the case when "tel:" is
|
1876
|
-
// missing, as we have seen in some of the phone number inputs. In that
|
1877
|
-
// case, we append everything from the beginning.
|
1878
|
-
size_t index_of_rfc_prefix = number_to_parse.find(kRfc3966Prefix);
|
1879
|
-
int index_of_national_number = (index_of_rfc_prefix != string::npos) ?
|
1880
|
-
index_of_rfc_prefix + strlen(kRfc3966Prefix) : 0;
|
1881
|
-
StrAppend(
|
1882
|
-
national_number,
|
1883
|
-
number_to_parse.substr(
|
1884
|
-
index_of_national_number,
|
1885
|
-
index_of_phone_context - index_of_national_number));
|
1886
|
-
} else {
|
1887
|
-
// Extract a possible number from the string passed in (this strips leading
|
1888
|
-
// characters that could not be the start of a phone number.)
|
1889
|
-
ExtractPossibleNumber(number_to_parse, national_number);
|
1890
|
-
}
|
1891
|
-
|
1892
|
-
// Delete the isdn-subaddress and everything after it if it is present. Note
|
1893
|
-
// extension won't appear at the same time with isdn-subaddress according to
|
1894
|
-
// paragraph 5.3 of the RFC3966 spec.
|
1895
|
-
size_t index_of_isdn = national_number->find(kRfc3966IsdnSubaddress);
|
1896
|
-
if (index_of_isdn != string::npos) {
|
1897
|
-
national_number->erase(index_of_isdn);
|
1898
|
-
}
|
1899
|
-
// If both phone context and isdn-subaddress are absent but other parameters
|
1900
|
-
// are present, the parameters are left in nationalNumber. This is because
|
1901
|
-
// we are concerned about deleting content from a potential number string
|
1902
|
-
// when there is no strong evidence that the number is actually written in
|
1903
|
-
// RFC3966.
|
1904
|
-
}
|
1905
|
-
|
1906
|
-
PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseHelper(
|
1907
|
-
const string& number_to_parse,
|
1908
|
-
const string& default_region,
|
1909
|
-
bool keep_raw_input,
|
1910
|
-
bool check_region,
|
1911
|
-
PhoneNumber* phone_number) const {
|
1912
|
-
DCHECK(phone_number);
|
1913
|
-
|
1914
|
-
string national_number;
|
1915
|
-
BuildNationalNumberForParsing(number_to_parse, &national_number);
|
1916
|
-
|
1917
|
-
if (!IsViablePhoneNumber(national_number)) {
|
1918
|
-
VLOG(2) << "The string supplied did not seem to be a phone number.";
|
1919
|
-
return NOT_A_NUMBER;
|
1920
|
-
}
|
1921
|
-
|
1922
|
-
if (check_region &&
|
1923
|
-
!CheckRegionForParsing(national_number, default_region)) {
|
1924
|
-
VLOG(1) << "Missing or invalid default country.";
|
1925
|
-
return INVALID_COUNTRY_CODE_ERROR;
|
1926
|
-
}
|
1927
|
-
PhoneNumber temp_number;
|
1928
|
-
if (keep_raw_input) {
|
1929
|
-
temp_number.set_raw_input(number_to_parse);
|
1930
|
-
}
|
1931
|
-
// Attempt to parse extension first, since it doesn't require country-specific
|
1932
|
-
// data and we want to have the non-normalised number here.
|
1933
|
-
string extension;
|
1934
|
-
MaybeStripExtension(&national_number, &extension);
|
1935
|
-
if (!extension.empty()) {
|
1936
|
-
temp_number.set_extension(extension);
|
1937
|
-
}
|
1938
|
-
const PhoneMetadata* country_metadata = GetMetadataForRegion(default_region);
|
1939
|
-
// Check to see if the number is given in international format so we know
|
1940
|
-
// whether this number is from the default country or not.
|
1941
|
-
string normalized_national_number(national_number);
|
1942
|
-
ErrorType country_code_error =
|
1943
|
-
MaybeExtractCountryCode(country_metadata, keep_raw_input,
|
1944
|
-
&normalized_national_number, &temp_number);
|
1945
|
-
if (country_code_error != NO_PARSING_ERROR) {
|
1946
|
-
const scoped_ptr<RegExpInput> number_string_piece(
|
1947
|
-
reg_exps_->regexp_factory_->CreateInput(national_number));
|
1948
|
-
if ((country_code_error == INVALID_COUNTRY_CODE_ERROR) &&
|
1949
|
-
(reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get()))) {
|
1950
|
-
normalized_national_number.assign(number_string_piece->ToString());
|
1951
|
-
// Strip the plus-char, and try again.
|
1952
|
-
MaybeExtractCountryCode(country_metadata,
|
1953
|
-
keep_raw_input,
|
1954
|
-
&normalized_national_number,
|
1955
|
-
&temp_number);
|
1956
|
-
if (temp_number.country_code() == 0) {
|
1957
|
-
return INVALID_COUNTRY_CODE_ERROR;
|
1958
|
-
}
|
1959
|
-
} else {
|
1960
|
-
return country_code_error;
|
1961
|
-
}
|
1962
|
-
}
|
1963
|
-
int country_code = temp_number.country_code();
|
1964
|
-
if (country_code != 0) {
|
1965
|
-
string phone_number_region;
|
1966
|
-
GetRegionCodeForCountryCode(country_code, &phone_number_region);
|
1967
|
-
if (phone_number_region != default_region) {
|
1968
|
-
country_metadata =
|
1969
|
-
GetMetadataForRegionOrCallingCode(country_code, phone_number_region);
|
1970
|
-
}
|
1971
|
-
} else if (country_metadata) {
|
1972
|
-
// If no extracted country calling code, use the region supplied instead.
|
1973
|
-
// Note that the national number was already normalized by
|
1974
|
-
// MaybeExtractCountryCode.
|
1975
|
-
country_code = country_metadata->country_code();
|
1976
|
-
}
|
1977
|
-
if (normalized_national_number.length() < kMinLengthForNsn) {
|
1978
|
-
VLOG(2) << "The string supplied is too short to be a phone number.";
|
1979
|
-
return TOO_SHORT_NSN;
|
1980
|
-
}
|
1981
|
-
if (country_metadata) {
|
1982
|
-
string carrier_code;
|
1983
|
-
string potential_national_number(normalized_national_number);
|
1984
|
-
MaybeStripNationalPrefixAndCarrierCode(*country_metadata,
|
1985
|
-
&potential_national_number,
|
1986
|
-
&carrier_code);
|
1987
|
-
// We require that the NSN remaining after stripping the national prefix
|
1988
|
-
// and carrier code be of a possible length for the region. Otherwise, we
|
1989
|
-
// don't do the stripping, since the original number could be a valid short
|
1990
|
-
// number.
|
1991
|
-
if (!IsShorterThanPossibleNormalNumber(country_metadata,
|
1992
|
-
potential_national_number)) {
|
1993
|
-
normalized_national_number.assign(potential_national_number);
|
1994
|
-
if (keep_raw_input) {
|
1995
|
-
temp_number.set_preferred_domestic_carrier_code(carrier_code);
|
1996
|
-
}
|
1997
|
-
}
|
1998
|
-
}
|
1999
|
-
size_t normalized_national_number_length =
|
2000
|
-
normalized_national_number.length();
|
2001
|
-
if (normalized_national_number_length < kMinLengthForNsn) {
|
2002
|
-
VLOG(2) << "The string supplied is too short to be a phone number.";
|
2003
|
-
return TOO_SHORT_NSN;
|
2004
|
-
}
|
2005
|
-
if (normalized_national_number_length > kMaxLengthForNsn) {
|
2006
|
-
VLOG(2) << "The string supplied is too long to be a phone number.";
|
2007
|
-
return TOO_LONG_NSN;
|
2008
|
-
}
|
2009
|
-
temp_number.set_country_code(country_code);
|
2010
|
-
SetItalianLeadingZerosForPhoneNumber(normalized_national_number,
|
2011
|
-
&temp_number);
|
2012
|
-
uint64 number_as_int;
|
2013
|
-
safe_strtou64(normalized_national_number, &number_as_int);
|
2014
|
-
temp_number.set_national_number(number_as_int);
|
2015
|
-
phone_number->Swap(&temp_number);
|
2016
|
-
return NO_PARSING_ERROR;
|
2017
|
-
}
|
2018
|
-
|
2019
|
-
// Attempts to extract a possible number from the string passed in. This
|
2020
|
-
// currently strips all leading characters that could not be used to start a
|
2021
|
-
// phone number. Characters that can be used to start a phone number are
|
2022
|
-
// defined in the valid_start_char_pattern. If none of these characters are
|
2023
|
-
// found in the number passed in, an empty string is returned. This function
|
2024
|
-
// also attempts to strip off any alternative extensions or endings if two or
|
2025
|
-
// more are present, such as in the case of: (530) 583-6985 x302/x2303. The
|
2026
|
-
// second extension here makes this actually two phone numbers, (530) 583-6985
|
2027
|
-
// x302 and (530) 583-6985 x2303. We remove the second extension so that the
|
2028
|
-
// first number is parsed correctly.
|
2029
|
-
void PhoneNumberUtil::ExtractPossibleNumber(const string& number,
|
2030
|
-
string* extracted_number) const {
|
2031
|
-
DCHECK(extracted_number);
|
2032
|
-
|
2033
|
-
UnicodeText number_as_unicode;
|
2034
|
-
number_as_unicode.PointToUTF8(number.data(), number.size());
|
2035
|
-
char current_char[5];
|
2036
|
-
int len;
|
2037
|
-
UnicodeText::const_iterator it;
|
2038
|
-
for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) {
|
2039
|
-
len = it.get_utf8(current_char);
|
2040
|
-
current_char[len] = '\0';
|
2041
|
-
if (reg_exps_->valid_start_char_pattern_->FullMatch(current_char)) {
|
2042
|
-
break;
|
2043
|
-
}
|
2044
|
-
}
|
2045
|
-
|
2046
|
-
if (it == number_as_unicode.end()) {
|
2047
|
-
// No valid start character was found. extracted_number should be set to
|
2048
|
-
// empty string.
|
2049
|
-
extracted_number->assign("");
|
2050
|
-
return;
|
2051
|
-
}
|
2052
|
-
|
2053
|
-
extracted_number->assign(
|
2054
|
-
UnicodeText::UTF8Substring(it, number_as_unicode.end()));
|
2055
|
-
TrimUnwantedEndChars(extracted_number);
|
2056
|
-
if (extracted_number->length() == 0) {
|
2057
|
-
return;
|
2058
|
-
}
|
2059
|
-
|
2060
|
-
VLOG(3) << "After stripping starting and trailing characters, left with: "
|
2061
|
-
<< *extracted_number;
|
2062
|
-
|
2063
|
-
// Now remove any extra numbers at the end.
|
2064
|
-
reg_exps_->capture_up_to_second_number_start_pattern_->
|
2065
|
-
PartialMatch(*extracted_number, extracted_number);
|
2066
|
-
}
|
2067
|
-
|
2068
|
-
bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const {
|
2069
|
-
return IsPossibleNumberWithReason(number) == IS_POSSIBLE;
|
2070
|
-
}
|
2071
|
-
|
2072
|
-
bool PhoneNumberUtil::IsPossibleNumberForString(
|
2073
|
-
const string& number,
|
2074
|
-
const string& region_dialing_from) const {
|
2075
|
-
PhoneNumber number_proto;
|
2076
|
-
if (Parse(number, region_dialing_from, &number_proto) == NO_PARSING_ERROR) {
|
2077
|
-
return IsPossibleNumber(number_proto);
|
2078
|
-
} else {
|
2079
|
-
return false;
|
2080
|
-
}
|
2081
|
-
}
|
2082
|
-
|
2083
|
-
PhoneNumberUtil::ValidationResult PhoneNumberUtil::IsPossibleNumberWithReason(
|
2084
|
-
const PhoneNumber& number) const {
|
2085
|
-
string national_number;
|
2086
|
-
GetNationalSignificantNumber(number, &national_number);
|
2087
|
-
int country_code = number.country_code();
|
2088
|
-
// Note: For Russian Fed and NANPA numbers, we just use the rules from the
|
2089
|
-
// default region (US or Russia) since the GetRegionCodeForNumber will not
|
2090
|
-
// work if the number is possible but not valid. This would need to be
|
2091
|
-
// revisited if the possible number pattern ever differed between various
|
2092
|
-
// regions within those plans.
|
2093
|
-
if (!HasValidCountryCallingCode(country_code)) {
|
2094
|
-
return INVALID_COUNTRY_CODE;
|
2095
|
-
}
|
2096
|
-
string region_code;
|
2097
|
-
GetRegionCodeForCountryCode(country_code, ®ion_code);
|
2098
|
-
// Metadata cannot be NULL because the country calling code is valid.
|
2099
|
-
const PhoneMetadata* metadata =
|
2100
|
-
GetMetadataForRegionOrCallingCode(country_code, region_code);
|
2101
|
-
const RegExp& possible_number_pattern = reg_exps_->regexp_cache_->GetRegExp(
|
2102
|
-
StrCat("(", metadata->general_desc().possible_number_pattern(), ")"));
|
2103
|
-
return TestNumberLengthAgainstPattern(possible_number_pattern,
|
2104
|
-
national_number);
|
2105
|
-
}
|
2106
|
-
|
2107
|
-
bool PhoneNumberUtil::TruncateTooLongNumber(PhoneNumber* number) const {
|
2108
|
-
if (IsValidNumber(*number)) {
|
2109
|
-
return true;
|
2110
|
-
}
|
2111
|
-
PhoneNumber number_copy(*number);
|
2112
|
-
uint64 national_number = number->national_number();
|
2113
|
-
do {
|
2114
|
-
national_number /= 10;
|
2115
|
-
number_copy.set_national_number(national_number);
|
2116
|
-
if (IsPossibleNumberWithReason(number_copy) == TOO_SHORT ||
|
2117
|
-
national_number == 0) {
|
2118
|
-
return false;
|
2119
|
-
}
|
2120
|
-
} while (!IsValidNumber(number_copy));
|
2121
|
-
number->set_national_number(national_number);
|
2122
|
-
return true;
|
2123
|
-
}
|
2124
|
-
|
2125
|
-
PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberType(
|
2126
|
-
const PhoneNumber& number) const {
|
2127
|
-
string region_code;
|
2128
|
-
GetRegionCodeForNumber(number, ®ion_code);
|
2129
|
-
const PhoneMetadata* metadata =
|
2130
|
-
GetMetadataForRegionOrCallingCode(number.country_code(), region_code);
|
2131
|
-
if (!metadata) {
|
2132
|
-
return UNKNOWN;
|
2133
|
-
}
|
2134
|
-
string national_significant_number;
|
2135
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
2136
|
-
return GetNumberTypeHelper(national_significant_number, *metadata);
|
2137
|
-
}
|
2138
|
-
|
2139
|
-
bool PhoneNumberUtil::IsValidNumber(const PhoneNumber& number) const {
|
2140
|
-
string region_code;
|
2141
|
-
GetRegionCodeForNumber(number, ®ion_code);
|
2142
|
-
return IsValidNumberForRegion(number, region_code);
|
2143
|
-
}
|
2144
|
-
|
2145
|
-
bool PhoneNumberUtil::IsValidNumberForRegion(const PhoneNumber& number,
|
2146
|
-
const string& region_code) const {
|
2147
|
-
int country_code = number.country_code();
|
2148
|
-
const PhoneMetadata* metadata =
|
2149
|
-
GetMetadataForRegionOrCallingCode(country_code, region_code);
|
2150
|
-
if (!metadata ||
|
2151
|
-
((kRegionCodeForNonGeoEntity != region_code) &&
|
2152
|
-
country_code != GetCountryCodeForValidRegion(region_code))) {
|
2153
|
-
// Either the region code was invalid, or the country calling code for this
|
2154
|
-
// number does not match that of the region code.
|
2155
|
-
return false;
|
2156
|
-
}
|
2157
|
-
string national_number;
|
2158
|
-
GetNationalSignificantNumber(number, &national_number);
|
2159
|
-
|
2160
|
-
return GetNumberTypeHelper(national_number, *metadata) != UNKNOWN;
|
2161
|
-
}
|
2162
|
-
|
2163
|
-
bool PhoneNumberUtil::IsNumberGeographical(
|
2164
|
-
const PhoneNumber& phone_number) const {
|
2165
|
-
return IsNumberGeographical(GetNumberType(phone_number),
|
2166
|
-
phone_number.country_code());
|
2167
|
-
}
|
2168
|
-
|
2169
|
-
bool PhoneNumberUtil::IsNumberGeographical(
|
2170
|
-
PhoneNumberType number_type, int country_calling_code) const {
|
2171
|
-
return number_type == PhoneNumberUtil::FIXED_LINE ||
|
2172
|
-
number_type == PhoneNumberUtil::FIXED_LINE_OR_MOBILE ||
|
2173
|
-
(reg_exps_->geo_mobile_countries_.find(country_calling_code)
|
2174
|
-
!= reg_exps_->geo_mobile_countries_.end() &&
|
2175
|
-
number_type == PhoneNumberUtil::MOBILE);
|
2176
|
-
}
|
2177
|
-
|
2178
|
-
bool PhoneNumberUtil::IsLeadingZeroPossible(int country_calling_code) const {
|
2179
|
-
string region_code;
|
2180
|
-
GetRegionCodeForCountryCode(country_calling_code, ®ion_code);
|
2181
|
-
const PhoneMetadata* main_metadata_for_calling_code =
|
2182
|
-
GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
|
2183
|
-
if (!main_metadata_for_calling_code) return false;
|
2184
|
-
return main_metadata_for_calling_code->leading_zero_possible();
|
2185
|
-
}
|
2186
|
-
|
2187
|
-
// A helper function to set the values related to leading zeros in a
|
2188
|
-
// PhoneNumber.
|
2189
|
-
void PhoneNumberUtil::SetItalianLeadingZerosForPhoneNumber(
|
2190
|
-
const string& national_number, PhoneNumber* phone_number) const {
|
2191
|
-
if (national_number.length() > 1 && national_number[0] == '0') {
|
2192
|
-
phone_number->set_italian_leading_zero(true);
|
2193
|
-
size_t number_of_leading_zeros = 1;
|
2194
|
-
// Note that if the national number is all "0"s, the last "0" is not
|
2195
|
-
// counted as a leading zero.
|
2196
|
-
while (number_of_leading_zeros < national_number.length() - 1 &&
|
2197
|
-
national_number[number_of_leading_zeros] == '0') {
|
2198
|
-
number_of_leading_zeros++;
|
2199
|
-
}
|
2200
|
-
if (number_of_leading_zeros != 1) {
|
2201
|
-
phone_number->set_number_of_leading_zeros(number_of_leading_zeros);
|
2202
|
-
}
|
2203
|
-
}
|
2204
|
-
}
|
2205
|
-
|
2206
|
-
bool PhoneNumberUtil::IsNumberPossibleForDesc(
|
2207
|
-
const string& national_number, const PhoneNumberDesc& number_desc) const {
|
2208
|
-
return reg_exps_->regexp_cache_.get()->
|
2209
|
-
GetRegExp(number_desc.possible_number_pattern())
|
2210
|
-
.FullMatch(national_number);
|
2211
|
-
}
|
2212
|
-
|
2213
|
-
bool PhoneNumberUtil::IsNumberMatchingDesc(
|
2214
|
-
const string& national_number, const PhoneNumberDesc& number_desc) const {
|
2215
|
-
return IsNumberPossibleForDesc(national_number, number_desc) &&
|
2216
|
-
reg_exps_->regexp_cache_.get()->
|
2217
|
-
GetRegExp(number_desc.national_number_pattern())
|
2218
|
-
.FullMatch(national_number);
|
2219
|
-
}
|
2220
|
-
|
2221
|
-
PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberTypeHelper(
|
2222
|
-
const string& national_number, const PhoneMetadata& metadata) const {
|
2223
|
-
if (!IsNumberMatchingDesc(national_number, metadata.general_desc())) {
|
2224
|
-
VLOG(4) << "Number type unknown - doesn't match general national number"
|
2225
|
-
<< " pattern.";
|
2226
|
-
return PhoneNumberUtil::UNKNOWN;
|
2227
|
-
}
|
2228
|
-
if (IsNumberMatchingDesc(national_number, metadata.premium_rate())) {
|
2229
|
-
VLOG(4) << "Number is a premium number.";
|
2230
|
-
return PhoneNumberUtil::PREMIUM_RATE;
|
2231
|
-
}
|
2232
|
-
if (IsNumberMatchingDesc(national_number, metadata.toll_free())) {
|
2233
|
-
VLOG(4) << "Number is a toll-free number.";
|
2234
|
-
return PhoneNumberUtil::TOLL_FREE;
|
2235
|
-
}
|
2236
|
-
if (IsNumberMatchingDesc(national_number, metadata.shared_cost())) {
|
2237
|
-
VLOG(4) << "Number is a shared cost number.";
|
2238
|
-
return PhoneNumberUtil::SHARED_COST;
|
2239
|
-
}
|
2240
|
-
if (IsNumberMatchingDesc(national_number, metadata.voip())) {
|
2241
|
-
VLOG(4) << "Number is a VOIP (Voice over IP) number.";
|
2242
|
-
return PhoneNumberUtil::VOIP;
|
2243
|
-
}
|
2244
|
-
if (IsNumberMatchingDesc(national_number, metadata.personal_number())) {
|
2245
|
-
VLOG(4) << "Number is a personal number.";
|
2246
|
-
return PhoneNumberUtil::PERSONAL_NUMBER;
|
2247
|
-
}
|
2248
|
-
if (IsNumberMatchingDesc(national_number, metadata.pager())) {
|
2249
|
-
VLOG(4) << "Number is a pager number.";
|
2250
|
-
return PhoneNumberUtil::PAGER;
|
2251
|
-
}
|
2252
|
-
if (IsNumberMatchingDesc(national_number, metadata.uan())) {
|
2253
|
-
VLOG(4) << "Number is a UAN.";
|
2254
|
-
return PhoneNumberUtil::UAN;
|
2255
|
-
}
|
2256
|
-
if (IsNumberMatchingDesc(national_number, metadata.voicemail())) {
|
2257
|
-
VLOG(4) << "Number is a voicemail number.";
|
2258
|
-
return PhoneNumberUtil::VOICEMAIL;
|
2259
|
-
}
|
2260
|
-
|
2261
|
-
bool is_fixed_line =
|
2262
|
-
IsNumberMatchingDesc(national_number, metadata.fixed_line());
|
2263
|
-
if (is_fixed_line) {
|
2264
|
-
if (metadata.same_mobile_and_fixed_line_pattern()) {
|
2265
|
-
VLOG(4) << "Fixed-line and mobile patterns equal, number is fixed-line"
|
2266
|
-
<< " or mobile";
|
2267
|
-
return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
|
2268
|
-
} else if (IsNumberMatchingDesc(national_number, metadata.mobile())) {
|
2269
|
-
VLOG(4) << "Fixed-line and mobile patterns differ, but number is "
|
2270
|
-
<< "still fixed-line or mobile";
|
2271
|
-
return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
|
2272
|
-
}
|
2273
|
-
VLOG(4) << "Number is a fixed line number.";
|
2274
|
-
return PhoneNumberUtil::FIXED_LINE;
|
2275
|
-
}
|
2276
|
-
// Otherwise, test to see if the number is mobile. Only do this if certain
|
2277
|
-
// that the patterns for mobile and fixed line aren't the same.
|
2278
|
-
if (!metadata.same_mobile_and_fixed_line_pattern() &&
|
2279
|
-
IsNumberMatchingDesc(national_number, metadata.mobile())) {
|
2280
|
-
VLOG(4) << "Number is a mobile number.";
|
2281
|
-
return PhoneNumberUtil::MOBILE;
|
2282
|
-
}
|
2283
|
-
VLOG(4) << "Number type unknown - doesn\'t match any specific number type"
|
2284
|
-
<< " pattern.";
|
2285
|
-
return PhoneNumberUtil::UNKNOWN;
|
2286
|
-
}
|
2287
|
-
|
2288
|
-
void PhoneNumberUtil::GetNationalSignificantNumber(
|
2289
|
-
const PhoneNumber& number,
|
2290
|
-
string* national_number) const {
|
2291
|
-
DCHECK(national_number);
|
2292
|
-
// If leading zero(s) have been set, we prefix this now. Note this is not a
|
2293
|
-
// national prefix.
|
2294
|
-
StrAppend(national_number, number.italian_leading_zero() ?
|
2295
|
-
string(number.number_of_leading_zeros(), '0') : "");
|
2296
|
-
StrAppend(national_number, number.national_number());
|
2297
|
-
}
|
2298
|
-
|
2299
|
-
int PhoneNumberUtil::GetLengthOfGeographicalAreaCode(
|
2300
|
-
const PhoneNumber& number) const {
|
2301
|
-
string region_code;
|
2302
|
-
GetRegionCodeForNumber(number, ®ion_code);
|
2303
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
|
2304
|
-
if (!metadata) {
|
2305
|
-
return 0;
|
2306
|
-
}
|
2307
|
-
// If a country doesn't use a national prefix, and this number doesn't have an
|
2308
|
-
// Italian leading zero, we assume it is a closed dialling plan with no area
|
2309
|
-
// codes.
|
2310
|
-
if (!metadata->has_national_prefix() && !number.italian_leading_zero()) {
|
2311
|
-
return 0;
|
2312
|
-
}
|
2313
|
-
|
2314
|
-
PhoneNumberType type = GetNumberType(number);
|
2315
|
-
int country_calling_code = number.country_code();
|
2316
|
-
if (type == PhoneNumberUtil::MOBILE &&
|
2317
|
-
reg_exps_->geo_mobile_countries_without_mobile_area_codes_.find(
|
2318
|
-
country_calling_code) !=
|
2319
|
-
reg_exps_->geo_mobile_countries_without_mobile_area_codes_.end()) {
|
2320
|
-
return 0;
|
2321
|
-
}
|
2322
|
-
|
2323
|
-
if (!IsNumberGeographical(type, country_calling_code)) {
|
2324
|
-
return 0;
|
2325
|
-
}
|
2326
|
-
|
2327
|
-
return GetLengthOfNationalDestinationCode(number);
|
2328
|
-
}
|
2329
|
-
|
2330
|
-
int PhoneNumberUtil::GetLengthOfNationalDestinationCode(
|
2331
|
-
const PhoneNumber& number) const {
|
2332
|
-
PhoneNumber copied_proto(number);
|
2333
|
-
if (number.has_extension()) {
|
2334
|
-
// Clear the extension so it's not included when formatting.
|
2335
|
-
copied_proto.clear_extension();
|
2336
|
-
}
|
2337
|
-
|
2338
|
-
string formatted_number;
|
2339
|
-
Format(copied_proto, INTERNATIONAL, &formatted_number);
|
2340
|
-
const scoped_ptr<RegExpInput> i18n_number(
|
2341
|
-
reg_exps_->regexp_factory_->CreateInput(formatted_number));
|
2342
|
-
string digit_group;
|
2343
|
-
string ndc;
|
2344
|
-
string third_group;
|
2345
|
-
for (int i = 0; i < 3; ++i) {
|
2346
|
-
if (!reg_exps_->capturing_ascii_digits_pattern_->FindAndConsume(
|
2347
|
-
i18n_number.get(), &digit_group)) {
|
2348
|
-
// We should find at least three groups.
|
2349
|
-
return 0;
|
2350
|
-
}
|
2351
|
-
if (i == 1) {
|
2352
|
-
ndc = digit_group;
|
2353
|
-
} else if (i == 2) {
|
2354
|
-
third_group = digit_group;
|
2355
|
-
}
|
2356
|
-
}
|
2357
|
-
|
2358
|
-
if (GetNumberType(number) == MOBILE) {
|
2359
|
-
// For example Argentinian mobile numbers, when formatted in the
|
2360
|
-
// international format, are in the form of +54 9 NDC XXXX.... As a result,
|
2361
|
-
// we take the length of the third group (NDC) and add the length of the
|
2362
|
-
// mobile token, which also forms part of the national significant number.
|
2363
|
-
// This assumes that the mobile token is always formatted separately from
|
2364
|
-
// the rest of the phone number.
|
2365
|
-
string mobile_token;
|
2366
|
-
GetCountryMobileToken(number.country_code(), &mobile_token);
|
2367
|
-
if (!mobile_token.empty()) {
|
2368
|
-
return third_group.size() + mobile_token.size();
|
2369
|
-
}
|
2370
|
-
}
|
2371
|
-
return ndc.size();
|
2372
|
-
}
|
2373
|
-
|
2374
|
-
void PhoneNumberUtil::GetCountryMobileToken(int country_calling_code,
|
2375
|
-
string* mobile_token) const {
|
2376
|
-
DCHECK(mobile_token);
|
2377
|
-
map<int, char>::iterator it = reg_exps_->mobile_token_mappings_.find(
|
2378
|
-
country_calling_code);
|
2379
|
-
if (it != reg_exps_->mobile_token_mappings_.end()) {
|
2380
|
-
*mobile_token = it->second;
|
2381
|
-
} else {
|
2382
|
-
mobile_token->assign("");
|
2383
|
-
}
|
2384
|
-
}
|
2385
|
-
|
2386
|
-
void PhoneNumberUtil::NormalizeDigitsOnly(string* number) const {
|
2387
|
-
DCHECK(number);
|
2388
|
-
const RegExp& non_digits_pattern = reg_exps_->regexp_cache_->GetRegExp(
|
2389
|
-
StrCat("[^", kDigits, "]"));
|
2390
|
-
// Delete everything that isn't valid digits.
|
2391
|
-
non_digits_pattern.GlobalReplace(number, "");
|
2392
|
-
// Normalize all decimal digits to ASCII digits.
|
2393
|
-
number->assign(NormalizeUTF8::NormalizeDecimalDigits(*number));
|
2394
|
-
}
|
2395
|
-
|
2396
|
-
void PhoneNumberUtil::NormalizeDiallableCharsOnly(string* number) const {
|
2397
|
-
DCHECK(number);
|
2398
|
-
NormalizeHelper(reg_exps_->diallable_char_mappings_,
|
2399
|
-
true /* remove non matches */, number);
|
2400
|
-
}
|
2401
|
-
|
2402
|
-
bool PhoneNumberUtil::IsAlphaNumber(const string& number) const {
|
2403
|
-
if (!IsViablePhoneNumber(number)) {
|
2404
|
-
// Number is too short, or doesn't match the basic phone number pattern.
|
2405
|
-
return false;
|
2406
|
-
}
|
2407
|
-
// Copy the number, since we are going to try and strip the extension from it.
|
2408
|
-
string number_copy(number);
|
2409
|
-
string extension;
|
2410
|
-
MaybeStripExtension(&number_copy, &extension);
|
2411
|
-
return reg_exps_->valid_alpha_phone_pattern_->FullMatch(number_copy);
|
2412
|
-
}
|
2413
|
-
|
2414
|
-
void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const {
|
2415
|
-
DCHECK(number);
|
2416
|
-
NormalizeHelper(reg_exps_->alpha_phone_mappings_, false, number);
|
2417
|
-
}
|
2418
|
-
|
2419
|
-
// Normalizes a string of characters representing a phone number. This performs
|
2420
|
-
// the following conversions:
|
2421
|
-
// - Punctuation is stripped.
|
2422
|
-
// For ALPHA/VANITY numbers:
|
2423
|
-
// - Letters are converted to their numeric representation on a telephone
|
2424
|
-
// keypad. The keypad used here is the one defined in ITU Recommendation
|
2425
|
-
// E.161. This is only done if there are 3 or more letters in the number, to
|
2426
|
-
// lessen the risk that such letters are typos.
|
2427
|
-
// For other numbers:
|
2428
|
-
// - Wide-ascii digits are converted to normal ASCII (European) digits.
|
2429
|
-
// - Arabic-Indic numerals are converted to European numerals.
|
2430
|
-
// - Spurious alpha characters are stripped.
|
2431
|
-
void PhoneNumberUtil::Normalize(string* number) const {
|
2432
|
-
DCHECK(number);
|
2433
|
-
if (reg_exps_->valid_alpha_phone_pattern_->PartialMatch(*number)) {
|
2434
|
-
NormalizeHelper(reg_exps_->alpha_phone_mappings_, true, number);
|
2435
|
-
}
|
2436
|
-
NormalizeDigitsOnly(number);
|
2437
|
-
}
|
2438
|
-
|
2439
|
-
// Checks to see if the string of characters could possibly be a phone number at
|
2440
|
-
// all. At the moment, checks to see that the string begins with at least 3
|
2441
|
-
// digits, ignoring any punctuation commonly found in phone numbers. This
|
2442
|
-
// method does not require the number to be normalized in advance - but does
|
2443
|
-
// assume that leading non-number symbols have been removed, such as by the
|
2444
|
-
// method ExtractPossibleNumber.
|
2445
|
-
bool PhoneNumberUtil::IsViablePhoneNumber(const string& number) const {
|
2446
|
-
if (number.length() < kMinLengthForNsn) {
|
2447
|
-
VLOG(2) << "Number too short to be viable:" << number;
|
2448
|
-
return false;
|
2449
|
-
}
|
2450
|
-
return reg_exps_->valid_phone_number_pattern_->FullMatch(number);
|
2451
|
-
}
|
2452
|
-
|
2453
|
-
// Strips the IDD from the start of the number if present. Helper function used
|
2454
|
-
// by MaybeStripInternationalPrefixAndNormalize.
|
2455
|
-
bool PhoneNumberUtil::ParsePrefixAsIdd(const RegExp& idd_pattern,
|
2456
|
-
string* number) const {
|
2457
|
-
DCHECK(number);
|
2458
|
-
const scoped_ptr<RegExpInput> number_copy(
|
2459
|
-
reg_exps_->regexp_factory_->CreateInput(*number));
|
2460
|
-
// First attempt to strip the idd_pattern at the start, if present. We make a
|
2461
|
-
// copy so that we can revert to the original string if necessary.
|
2462
|
-
if (idd_pattern.Consume(number_copy.get())) {
|
2463
|
-
// Only strip this if the first digit after the match is not a 0, since
|
2464
|
-
// country calling codes cannot begin with 0.
|
2465
|
-
string extracted_digit;
|
2466
|
-
if (reg_exps_->capturing_digit_pattern_->PartialMatch(
|
2467
|
-
number_copy->ToString(), &extracted_digit)) {
|
2468
|
-
NormalizeDigitsOnly(&extracted_digit);
|
2469
|
-
if (extracted_digit == "0") {
|
2470
|
-
return false;
|
2471
|
-
}
|
2472
|
-
}
|
2473
|
-
number->assign(number_copy->ToString());
|
2474
|
-
return true;
|
2475
|
-
}
|
2476
|
-
return false;
|
2477
|
-
}
|
2478
|
-
|
2479
|
-
// Strips any international prefix (such as +, 00, 011) present in the number
|
2480
|
-
// provided, normalizes the resulting number, and indicates if an international
|
2481
|
-
// prefix was present.
|
2482
|
-
//
|
2483
|
-
// possible_idd_prefix represents the international direct dialing prefix from
|
2484
|
-
// the region we think this number may be dialed in.
|
2485
|
-
// Returns true if an international dialing prefix could be removed from the
|
2486
|
-
// number, otherwise false if the number did not seem to be in international
|
2487
|
-
// format.
|
2488
|
-
PhoneNumber::CountryCodeSource
|
2489
|
-
PhoneNumberUtil::MaybeStripInternationalPrefixAndNormalize(
|
2490
|
-
const string& possible_idd_prefix,
|
2491
|
-
string* number) const {
|
2492
|
-
DCHECK(number);
|
2493
|
-
if (number->empty()) {
|
2494
|
-
return PhoneNumber::FROM_DEFAULT_COUNTRY;
|
2495
|
-
}
|
2496
|
-
const scoped_ptr<RegExpInput> number_string_piece(
|
2497
|
-
reg_exps_->regexp_factory_->CreateInput(*number));
|
2498
|
-
if (reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get())) {
|
2499
|
-
number->assign(number_string_piece->ToString());
|
2500
|
-
// Can now normalize the rest of the number since we've consumed the "+"
|
2501
|
-
// sign at the start.
|
2502
|
-
Normalize(number);
|
2503
|
-
return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN;
|
2504
|
-
}
|
2505
|
-
// Attempt to parse the first digits as an international prefix.
|
2506
|
-
const RegExp& idd_pattern =
|
2507
|
-
reg_exps_->regexp_cache_->GetRegExp(possible_idd_prefix);
|
2508
|
-
Normalize(number);
|
2509
|
-
return ParsePrefixAsIdd(idd_pattern, number)
|
2510
|
-
? PhoneNumber::FROM_NUMBER_WITH_IDD
|
2511
|
-
: PhoneNumber::FROM_DEFAULT_COUNTRY;
|
2512
|
-
}
|
2513
|
-
|
2514
|
-
// Strips any national prefix (such as 0, 1) present in the number provided.
|
2515
|
-
// The number passed in should be the normalized telephone number that we wish
|
2516
|
-
// to strip any national dialing prefix from. The metadata should be for the
|
2517
|
-
// region that we think this number is from. Returns true if a national prefix
|
2518
|
-
// and/or carrier code was stripped.
|
2519
|
-
bool PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode(
|
2520
|
-
const PhoneMetadata& metadata,
|
2521
|
-
string* number,
|
2522
|
-
string* carrier_code) const {
|
2523
|
-
DCHECK(number);
|
2524
|
-
string carrier_code_temp;
|
2525
|
-
const string& possible_national_prefix =
|
2526
|
-
metadata.national_prefix_for_parsing();
|
2527
|
-
if (number->empty() || possible_national_prefix.empty()) {
|
2528
|
-
// Early return for numbers of zero length or with no national prefix
|
2529
|
-
// possible.
|
2530
|
-
return false;
|
2531
|
-
}
|
2532
|
-
// We use two copies here since Consume modifies the phone number, and if the
|
2533
|
-
// first if-clause fails the number will already be changed.
|
2534
|
-
const scoped_ptr<RegExpInput> number_copy(
|
2535
|
-
reg_exps_->regexp_factory_->CreateInput(*number));
|
2536
|
-
const scoped_ptr<RegExpInput> number_copy_without_transform(
|
2537
|
-
reg_exps_->regexp_factory_->CreateInput(*number));
|
2538
|
-
string number_string_copy(*number);
|
2539
|
-
string captured_part_of_prefix;
|
2540
|
-
const RegExp& national_number_rule = reg_exps_->regexp_cache_->GetRegExp(
|
2541
|
-
metadata.general_desc().national_number_pattern());
|
2542
|
-
// Check if the original number is viable.
|
2543
|
-
bool is_viable_original_number = national_number_rule.FullMatch(*number);
|
2544
|
-
// Attempt to parse the first digits as a national prefix. We make a
|
2545
|
-
// copy so that we can revert to the original string if necessary.
|
2546
|
-
const string& transform_rule = metadata.national_prefix_transform_rule();
|
2547
|
-
const RegExp& possible_national_prefix_pattern =
|
2548
|
-
reg_exps_->regexp_cache_->GetRegExp(possible_national_prefix);
|
2549
|
-
if (!transform_rule.empty() &&
|
2550
|
-
(possible_national_prefix_pattern.Consume(
|
2551
|
-
number_copy.get(), &carrier_code_temp, &captured_part_of_prefix) ||
|
2552
|
-
possible_national_prefix_pattern.Consume(
|
2553
|
-
number_copy.get(), &captured_part_of_prefix)) &&
|
2554
|
-
!captured_part_of_prefix.empty()) {
|
2555
|
-
// If this succeeded, then we must have had a transform rule and there must
|
2556
|
-
// have been some part of the prefix that we captured.
|
2557
|
-
// We make the transformation and check that the resultant number is still
|
2558
|
-
// viable. If so, replace the number and return.
|
2559
|
-
possible_national_prefix_pattern.Replace(&number_string_copy,
|
2560
|
-
transform_rule);
|
2561
|
-
if (is_viable_original_number &&
|
2562
|
-
!national_number_rule.FullMatch(number_string_copy)) {
|
2563
|
-
return false;
|
2564
|
-
}
|
2565
|
-
number->assign(number_string_copy);
|
2566
|
-
if (carrier_code) {
|
2567
|
-
carrier_code->assign(carrier_code_temp);
|
2568
|
-
}
|
2569
|
-
} else if (possible_national_prefix_pattern.Consume(
|
2570
|
-
number_copy_without_transform.get(), &carrier_code_temp) ||
|
2571
|
-
possible_national_prefix_pattern.Consume(
|
2572
|
-
number_copy_without_transform.get())) {
|
2573
|
-
VLOG(4) << "Parsed the first digits as a national prefix.";
|
2574
|
-
// If captured_part_of_prefix is empty, this implies nothing was captured by
|
2575
|
-
// the capturing groups in possible_national_prefix; therefore, no
|
2576
|
-
// transformation is necessary, and we just remove the national prefix.
|
2577
|
-
const string number_copy_as_string =
|
2578
|
-
number_copy_without_transform->ToString();
|
2579
|
-
if (is_viable_original_number &&
|
2580
|
-
!national_number_rule.FullMatch(number_copy_as_string)) {
|
2581
|
-
return false;
|
2582
|
-
}
|
2583
|
-
number->assign(number_copy_as_string);
|
2584
|
-
if (carrier_code) {
|
2585
|
-
carrier_code->assign(carrier_code_temp);
|
2586
|
-
}
|
2587
|
-
} else {
|
2588
|
-
return false;
|
2589
|
-
VLOG(4) << "The first digits did not match the national prefix.";
|
2590
|
-
}
|
2591
|
-
return true;
|
2592
|
-
}
|
2593
|
-
|
2594
|
-
// Strips any extension (as in, the part of the number dialled after the call is
|
2595
|
-
// connected, usually indicated with extn, ext, x or similar) from the end of
|
2596
|
-
// the number, and returns it. The number passed in should be non-normalized.
|
2597
|
-
bool PhoneNumberUtil::MaybeStripExtension(string* number, string* extension)
|
2598
|
-
const {
|
2599
|
-
DCHECK(number);
|
2600
|
-
DCHECK(extension);
|
2601
|
-
// There are three extension capturing groups in the regular expression.
|
2602
|
-
string possible_extension_one;
|
2603
|
-
string possible_extension_two;
|
2604
|
-
string possible_extension_three;
|
2605
|
-
string number_copy(*number);
|
2606
|
-
const scoped_ptr<RegExpInput> number_copy_as_regexp_input(
|
2607
|
-
reg_exps_->regexp_factory_->CreateInput(number_copy));
|
2608
|
-
if (reg_exps_->extn_pattern_->Consume(number_copy_as_regexp_input.get(),
|
2609
|
-
false,
|
2610
|
-
&possible_extension_one,
|
2611
|
-
&possible_extension_two,
|
2612
|
-
&possible_extension_three)) {
|
2613
|
-
// Replace the extensions in the original string here.
|
2614
|
-
reg_exps_->extn_pattern_->Replace(&number_copy, "");
|
2615
|
-
VLOG(4) << "Found an extension. Possible extension one: "
|
2616
|
-
<< possible_extension_one
|
2617
|
-
<< ". Possible extension two: " << possible_extension_two
|
2618
|
-
<< ". Possible extension three: " << possible_extension_three
|
2619
|
-
<< ". Remaining number: " << number_copy;
|
2620
|
-
// If we find a potential extension, and the number preceding this is a
|
2621
|
-
// viable number, we assume it is an extension.
|
2622
|
-
if ((!possible_extension_one.empty() || !possible_extension_two.empty() ||
|
2623
|
-
!possible_extension_three.empty()) &&
|
2624
|
-
IsViablePhoneNumber(number_copy)) {
|
2625
|
-
number->assign(number_copy);
|
2626
|
-
if (!possible_extension_one.empty()) {
|
2627
|
-
extension->assign(possible_extension_one);
|
2628
|
-
} else if (!possible_extension_two.empty()) {
|
2629
|
-
extension->assign(possible_extension_two);
|
2630
|
-
} else if (!possible_extension_three.empty()) {
|
2631
|
-
extension->assign(possible_extension_three);
|
2632
|
-
}
|
2633
|
-
return true;
|
2634
|
-
}
|
2635
|
-
}
|
2636
|
-
return false;
|
2637
|
-
}
|
2638
|
-
|
2639
|
-
// Extracts country calling code from national_number, and returns it. It
|
2640
|
-
// assumes that the leading plus sign or IDD has already been removed. Returns 0
|
2641
|
-
// if national_number doesn't start with a valid country calling code, and
|
2642
|
-
// leaves national_number unmodified. Assumes the national_number is at least 3
|
2643
|
-
// characters long.
|
2644
|
-
int PhoneNumberUtil::ExtractCountryCode(string* national_number) const {
|
2645
|
-
int potential_country_code;
|
2646
|
-
if (national_number->empty() || (national_number->at(0) == '0')) {
|
2647
|
-
// Country codes do not begin with a '0'.
|
2648
|
-
return 0;
|
2649
|
-
}
|
2650
|
-
for (size_t i = 1; i <= kMaxLengthCountryCode; ++i) {
|
2651
|
-
safe_strto32(national_number->substr(0, i), &potential_country_code);
|
2652
|
-
string region_code;
|
2653
|
-
GetRegionCodeForCountryCode(potential_country_code, ®ion_code);
|
2654
|
-
if (region_code != RegionCode::GetUnknown()) {
|
2655
|
-
national_number->erase(0, i);
|
2656
|
-
return potential_country_code;
|
2657
|
-
}
|
2658
|
-
}
|
2659
|
-
return 0;
|
2660
|
-
}
|
2661
|
-
|
2662
|
-
// Tries to extract a country calling code from a number. Country calling codes
|
2663
|
-
// are extracted in the following ways:
|
2664
|
-
// - by stripping the international dialing prefix of the region the person
|
2665
|
-
// is dialing from, if this is present in the number, and looking at the next
|
2666
|
-
// digits
|
2667
|
-
// - by stripping the '+' sign if present and then looking at the next digits
|
2668
|
-
// - by comparing the start of the number and the country calling code of the
|
2669
|
-
// default region. If the number is not considered possible for the numbering
|
2670
|
-
// plan of the default region initially, but starts with the country calling
|
2671
|
-
// code of this region, validation will be reattempted after stripping this
|
2672
|
-
// country calling code. If this number is considered a possible number, then
|
2673
|
-
// the first digits will be considered the country calling code and removed as
|
2674
|
-
// such.
|
2675
|
-
//
|
2676
|
-
// Returns NO_PARSING_ERROR if a country calling code was successfully
|
2677
|
-
// extracted or none was present, or the appropriate error otherwise, such as
|
2678
|
-
// if a + was present but it was not followed by a valid country calling code.
|
2679
|
-
// If NO_PARSING_ERROR is returned, the national_number without the country
|
2680
|
-
// calling code is populated, and the country_code of the phone_number passed
|
2681
|
-
// in is set to the country calling code if found, otherwise to 0.
|
2682
|
-
PhoneNumberUtil::ErrorType PhoneNumberUtil::MaybeExtractCountryCode(
|
2683
|
-
const PhoneMetadata* default_region_metadata,
|
2684
|
-
bool keep_raw_input,
|
2685
|
-
string* national_number,
|
2686
|
-
PhoneNumber* phone_number) const {
|
2687
|
-
DCHECK(national_number);
|
2688
|
-
DCHECK(phone_number);
|
2689
|
-
// Set the default prefix to be something that will never match if there is no
|
2690
|
-
// default region.
|
2691
|
-
string possible_country_idd_prefix = default_region_metadata
|
2692
|
-
? default_region_metadata->international_prefix()
|
2693
|
-
: "NonMatch";
|
2694
|
-
PhoneNumber::CountryCodeSource country_code_source =
|
2695
|
-
MaybeStripInternationalPrefixAndNormalize(possible_country_idd_prefix,
|
2696
|
-
national_number);
|
2697
|
-
if (keep_raw_input) {
|
2698
|
-
phone_number->set_country_code_source(country_code_source);
|
2699
|
-
}
|
2700
|
-
if (country_code_source != PhoneNumber::FROM_DEFAULT_COUNTRY) {
|
2701
|
-
if (national_number->length() <= kMinLengthForNsn) {
|
2702
|
-
VLOG(2) << "Phone number had an IDD, but after this was not "
|
2703
|
-
<< "long enough to be a viable phone number.";
|
2704
|
-
return TOO_SHORT_AFTER_IDD;
|
2705
|
-
}
|
2706
|
-
int potential_country_code = ExtractCountryCode(national_number);
|
2707
|
-
if (potential_country_code != 0) {
|
2708
|
-
phone_number->set_country_code(potential_country_code);
|
2709
|
-
return NO_PARSING_ERROR;
|
2710
|
-
}
|
2711
|
-
// If this fails, they must be using a strange country calling code that we
|
2712
|
-
// don't recognize, or that doesn't exist.
|
2713
|
-
return INVALID_COUNTRY_CODE_ERROR;
|
2714
|
-
} else if (default_region_metadata) {
|
2715
|
-
// Check to see if the number starts with the country calling code for the
|
2716
|
-
// default region. If so, we remove the country calling code, and do some
|
2717
|
-
// checks on the validity of the number before and after.
|
2718
|
-
int default_country_code = default_region_metadata->country_code();
|
2719
|
-
string default_country_code_string(SimpleItoa(default_country_code));
|
2720
|
-
VLOG(4) << "Possible country calling code: " << default_country_code_string;
|
2721
|
-
string potential_national_number;
|
2722
|
-
if (TryStripPrefixString(*national_number,
|
2723
|
-
default_country_code_string,
|
2724
|
-
&potential_national_number)) {
|
2725
|
-
const PhoneNumberDesc& general_num_desc =
|
2726
|
-
default_region_metadata->general_desc();
|
2727
|
-
const RegExp& valid_number_pattern =
|
2728
|
-
reg_exps_->regexp_cache_->GetRegExp(
|
2729
|
-
general_num_desc.national_number_pattern());
|
2730
|
-
MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata,
|
2731
|
-
&potential_national_number,
|
2732
|
-
NULL);
|
2733
|
-
VLOG(4) << "Number without country calling code prefix: "
|
2734
|
-
<< potential_national_number;
|
2735
|
-
const RegExp& possible_number_pattern =
|
2736
|
-
reg_exps_->regexp_cache_->GetRegExp(
|
2737
|
-
StrCat("(", general_num_desc.possible_number_pattern(), ")"));
|
2738
|
-
// If the number was not valid before but is valid now, or if it was too
|
2739
|
-
// long before, we consider the number with the country code stripped to
|
2740
|
-
// be a better result and keep that instead.
|
2741
|
-
if ((!valid_number_pattern.FullMatch(*national_number) &&
|
2742
|
-
valid_number_pattern.FullMatch(potential_national_number)) ||
|
2743
|
-
TestNumberLengthAgainstPattern(possible_number_pattern,
|
2744
|
-
*national_number) == TOO_LONG) {
|
2745
|
-
national_number->assign(potential_national_number);
|
2746
|
-
if (keep_raw_input) {
|
2747
|
-
phone_number->set_country_code_source(
|
2748
|
-
PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN);
|
2749
|
-
}
|
2750
|
-
phone_number->set_country_code(default_country_code);
|
2751
|
-
return NO_PARSING_ERROR;
|
2752
|
-
}
|
2753
|
-
}
|
2754
|
-
}
|
2755
|
-
// No country calling code present. Set the country_code to 0.
|
2756
|
-
phone_number->set_country_code(0);
|
2757
|
-
return NO_PARSING_ERROR;
|
2758
|
-
}
|
2759
|
-
|
2760
|
-
PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatch(
|
2761
|
-
const PhoneNumber& first_number_in,
|
2762
|
-
const PhoneNumber& second_number_in) const {
|
2763
|
-
// Make copies of the phone number so that the numbers passed in are not
|
2764
|
-
// edited.
|
2765
|
-
PhoneNumber first_number(first_number_in);
|
2766
|
-
PhoneNumber second_number(second_number_in);
|
2767
|
-
// First clear raw_input and country_code_source and
|
2768
|
-
// preferred_domestic_carrier_code fields and any empty-string extensions so
|
2769
|
-
// that we can use the proto-buffer equality method.
|
2770
|
-
first_number.clear_raw_input();
|
2771
|
-
first_number.clear_country_code_source();
|
2772
|
-
first_number.clear_preferred_domestic_carrier_code();
|
2773
|
-
second_number.clear_raw_input();
|
2774
|
-
second_number.clear_country_code_source();
|
2775
|
-
second_number.clear_preferred_domestic_carrier_code();
|
2776
|
-
if (first_number.extension().empty()) {
|
2777
|
-
first_number.clear_extension();
|
2778
|
-
}
|
2779
|
-
if (second_number.extension().empty()) {
|
2780
|
-
second_number.clear_extension();
|
2781
|
-
}
|
2782
|
-
// Early exit if both had extensions and these are different.
|
2783
|
-
if (first_number.has_extension() && second_number.has_extension() &&
|
2784
|
-
first_number.extension() != second_number.extension()) {
|
2785
|
-
return NO_MATCH;
|
2786
|
-
}
|
2787
|
-
int first_number_country_code = first_number.country_code();
|
2788
|
-
int second_number_country_code = second_number.country_code();
|
2789
|
-
// Both had country calling code specified.
|
2790
|
-
if (first_number_country_code != 0 && second_number_country_code != 0) {
|
2791
|
-
if (ExactlySameAs(first_number, second_number)) {
|
2792
|
-
return EXACT_MATCH;
|
2793
|
-
} else if (first_number_country_code == second_number_country_code &&
|
2794
|
-
IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
|
2795
|
-
// A SHORT_NSN_MATCH occurs if there is a difference because of the
|
2796
|
-
// presence or absence of an 'Italian leading zero', the presence or
|
2797
|
-
// absence of an extension, or one NSN being a shorter variant of the
|
2798
|
-
// other.
|
2799
|
-
return SHORT_NSN_MATCH;
|
2800
|
-
}
|
2801
|
-
// This is not a match.
|
2802
|
-
return NO_MATCH;
|
2803
|
-
}
|
2804
|
-
// Checks cases where one or both country calling codes were not specified. To
|
2805
|
-
// make equality checks easier, we first set the country_code fields to be
|
2806
|
-
// equal.
|
2807
|
-
first_number.set_country_code(second_number_country_code);
|
2808
|
-
// If all else was the same, then this is an NSN_MATCH.
|
2809
|
-
if (ExactlySameAs(first_number, second_number)) {
|
2810
|
-
return NSN_MATCH;
|
2811
|
-
}
|
2812
|
-
if (IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
|
2813
|
-
return SHORT_NSN_MATCH;
|
2814
|
-
}
|
2815
|
-
return NO_MATCH;
|
2816
|
-
}
|
2817
|
-
|
2818
|
-
PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithTwoStrings(
|
2819
|
-
const string& first_number,
|
2820
|
-
const string& second_number) const {
|
2821
|
-
PhoneNumber first_number_as_proto;
|
2822
|
-
ErrorType error_type =
|
2823
|
-
Parse(first_number, RegionCode::GetUnknown(), &first_number_as_proto);
|
2824
|
-
if (error_type == NO_PARSING_ERROR) {
|
2825
|
-
return IsNumberMatchWithOneString(first_number_as_proto, second_number);
|
2826
|
-
}
|
2827
|
-
if (error_type == INVALID_COUNTRY_CODE_ERROR) {
|
2828
|
-
PhoneNumber second_number_as_proto;
|
2829
|
-
ErrorType error_type = Parse(second_number, RegionCode::GetUnknown(),
|
2830
|
-
&second_number_as_proto);
|
2831
|
-
if (error_type == NO_PARSING_ERROR) {
|
2832
|
-
return IsNumberMatchWithOneString(second_number_as_proto, first_number);
|
2833
|
-
}
|
2834
|
-
if (error_type == INVALID_COUNTRY_CODE_ERROR) {
|
2835
|
-
error_type = ParseHelper(first_number, RegionCode::GetUnknown(), false,
|
2836
|
-
false, &first_number_as_proto);
|
2837
|
-
if (error_type == NO_PARSING_ERROR) {
|
2838
|
-
error_type = ParseHelper(second_number, RegionCode::GetUnknown(), false,
|
2839
|
-
false, &second_number_as_proto);
|
2840
|
-
if (error_type == NO_PARSING_ERROR) {
|
2841
|
-
return IsNumberMatch(first_number_as_proto, second_number_as_proto);
|
2842
|
-
}
|
2843
|
-
}
|
2844
|
-
}
|
2845
|
-
}
|
2846
|
-
// One or more of the phone numbers we are trying to match is not a viable
|
2847
|
-
// phone number.
|
2848
|
-
return INVALID_NUMBER;
|
2849
|
-
}
|
2850
|
-
|
2851
|
-
PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithOneString(
|
2852
|
-
const PhoneNumber& first_number,
|
2853
|
-
const string& second_number) const {
|
2854
|
-
// First see if the second number has an implicit country calling code, by
|
2855
|
-
// attempting to parse it.
|
2856
|
-
PhoneNumber second_number_as_proto;
|
2857
|
-
ErrorType error_type =
|
2858
|
-
Parse(second_number, RegionCode::GetUnknown(), &second_number_as_proto);
|
2859
|
-
if (error_type == NO_PARSING_ERROR) {
|
2860
|
-
return IsNumberMatch(first_number, second_number_as_proto);
|
2861
|
-
}
|
2862
|
-
if (error_type == INVALID_COUNTRY_CODE_ERROR) {
|
2863
|
-
// The second number has no country calling code. EXACT_MATCH is no longer
|
2864
|
-
// possible. We parse it as if the region was the same as that for the
|
2865
|
-
// first number, and if EXACT_MATCH is returned, we replace this with
|
2866
|
-
// NSN_MATCH.
|
2867
|
-
string first_number_region;
|
2868
|
-
GetRegionCodeForCountryCode(first_number.country_code(),
|
2869
|
-
&first_number_region);
|
2870
|
-
if (first_number_region != RegionCode::GetUnknown()) {
|
2871
|
-
PhoneNumber second_number_with_first_number_region;
|
2872
|
-
Parse(second_number, first_number_region,
|
2873
|
-
&second_number_with_first_number_region);
|
2874
|
-
MatchType match = IsNumberMatch(first_number,
|
2875
|
-
second_number_with_first_number_region);
|
2876
|
-
if (match == EXACT_MATCH) {
|
2877
|
-
return NSN_MATCH;
|
2878
|
-
}
|
2879
|
-
return match;
|
2880
|
-
} else {
|
2881
|
-
// If the first number didn't have a valid country calling code, then we
|
2882
|
-
// parse the second number without one as well.
|
2883
|
-
error_type = ParseHelper(second_number, RegionCode::GetUnknown(), false,
|
2884
|
-
false, &second_number_as_proto);
|
2885
|
-
if (error_type == NO_PARSING_ERROR) {
|
2886
|
-
return IsNumberMatch(first_number, second_number_as_proto);
|
2887
|
-
}
|
2888
|
-
}
|
2889
|
-
}
|
2890
|
-
// One or more of the phone numbers we are trying to match is not a viable
|
2891
|
-
// phone number.
|
2892
|
-
return INVALID_NUMBER;
|
2893
|
-
}
|
2894
|
-
|
2895
|
-
AsYouTypeFormatter* PhoneNumberUtil::GetAsYouTypeFormatter(
|
2896
|
-
const string& region_code) const {
|
2897
|
-
return new AsYouTypeFormatter(region_code);
|
2898
|
-
}
|
2899
|
-
|
2900
|
-
bool PhoneNumberUtil::IsShorterThanPossibleNormalNumber(
|
2901
|
-
const PhoneMetadata* country_metadata, const string& number) const {
|
2902
|
-
const RegExp& possible_number_pattern =
|
2903
|
-
reg_exps_->regexp_cache_->GetRegExp(StrCat("(",
|
2904
|
-
country_metadata->general_desc().possible_number_pattern(), ")"));
|
2905
|
-
return TestNumberLengthAgainstPattern(possible_number_pattern, number) ==
|
2906
|
-
PhoneNumberUtil::TOO_SHORT;
|
2907
|
-
}
|
2908
|
-
|
2909
|
-
bool PhoneNumberUtil::CanBeInternationallyDialled(
|
2910
|
-
const PhoneNumber& number) const {
|
2911
|
-
string region_code;
|
2912
|
-
GetRegionCodeForNumber(number, ®ion_code);
|
2913
|
-
const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
|
2914
|
-
if (!metadata) {
|
2915
|
-
// Note numbers belonging to non-geographical entities (e.g. +800 numbers)
|
2916
|
-
// are always internationally diallable, and will be caught here.
|
2917
|
-
return true;
|
2918
|
-
}
|
2919
|
-
string national_significant_number;
|
2920
|
-
GetNationalSignificantNumber(number, &national_significant_number);
|
2921
|
-
return !IsNumberMatchingDesc(
|
2922
|
-
national_significant_number, metadata->no_international_dialling());
|
2923
|
-
}
|
2924
|
-
|
2925
|
-
} // namespace phonenumbers
|
2926
|
-
} // namespace i18n
|