phonelib 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.rdoc +14 -3
- data/data/extended_data.dat +0 -0
- data/data/libphonenumber/README.md +5 -1
- data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +10195 -10134
- data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +11081 -11017
- data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +1514 -1509
- data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.cc +22 -0
- data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.h +3 -0
- data/data/libphonenumber/cpp/src/phonenumbers/test_metadata.cc +128 -120
- data/data/libphonenumber/cpp/test/phonenumbers/shortnumberinfo_test.cc +13 -0
- data/data/libphonenumber/java/carrier/pom.xml +4 -4
- 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/235_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/263_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/509_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/91_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/config +0 -0
- data/data/libphonenumber/java/demo/pom.xml +5 -5
- data/data/libphonenumber/java/geocoder/pom.xml +4 -4
- 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/config +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/timezones/data/map_data +0 -0
- data/data/libphonenumber/java/internal/prefixmapper/pom.xml +3 -3
- data/data/libphonenumber/java/libphonenumber/pom.xml +2 -2
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataSource.java +38 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +155 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +31 -109
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java +19 -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_AU +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_CR +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_EH +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_HK +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_IN +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_MN +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_MX +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_ST +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_TD +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_YT +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_HK +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_MX +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java +6 -2
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +51 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +0 -20
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ShortNumberInfoTest.java +11 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/TestMetadataTestCase.java +3 -2
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SE +0 -0
- data/data/libphonenumber/java/pom.xml +1 -1
- data/data/libphonenumber/java/release_notes.txt +16 -0
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +135 -133
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +54 -48
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatafortesting.js +14 -0
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +54 -48
- data/data/libphonenumber/resources/PhoneNumberMetadata.xml +366 -256
- data/data/libphonenumber/resources/PhoneNumberMetadataForTesting.xml +4 -0
- data/data/libphonenumber/resources/ShortNumberMetadata.xml +52 -15
- data/data/libphonenumber/resources/carrier/en/230.txt +2 -0
- data/data/libphonenumber/resources/carrier/en/235.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/239.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/263.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/41.txt +1 -1
- data/data/libphonenumber/resources/carrier/en/509.txt +24 -0
- data/data/libphonenumber/resources/carrier/en/61.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/91.txt +1726 -830
- data/data/libphonenumber/resources/carrier/en/976.txt +18 -0
- data/data/libphonenumber/resources/geocoding/en/263.txt +40 -22
- data/data/libphonenumber/resources/timezones/map_data.txt +24 -11
- data/data/libphonenumber/tools/java/cpp-build/pom.xml +1 -1
- data/data/libphonenumber/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/libphonenumber/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/phone_data.dat +0 -0
- data/lib/phonelib.rb +1 -0
- data/lib/phonelib/core.rb +1 -0
- data/lib/phonelib/data_importer_helper.rb +1 -0
- data/lib/phonelib/phone.rb +61 -78
- data/lib/phonelib/phone_analyzer.rb +1 -1
- data/lib/phonelib/phone_extended_data.rb +68 -0
- data/lib/phonelib/version.rb +1 -1
- metadata +11 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Copyright (C) 2013 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
|
+
97680|Unitel
|
|
16
|
+
97686|Unitel
|
|
17
|
+
97688|Unitel
|
|
18
|
+
97689|Unitel
|
|
@@ -22,20 +22,27 @@
|
|
|
22
22
|
26316|West Nicholson
|
|
23
23
|
26317|Filabusi
|
|
24
24
|
26318|Dete
|
|
25
|
-
|
|
25
|
+
26319|Plumtree
|
|
26
26
|
263204|Odzi
|
|
27
27
|
263205|Pengalonga
|
|
28
|
+
26320|Mutare
|
|
29
|
+
263213284|Victoria Falls
|
|
30
|
+
263213|Victoria Falls
|
|
31
|
+
263219|Plumtree
|
|
28
32
|
26321|Murambinda
|
|
29
33
|
263220|Mutare
|
|
34
|
+
263221|Murambinda
|
|
30
35
|
263222|Wedza
|
|
31
36
|
263225|Rusape
|
|
32
37
|
263227|Chipinge
|
|
33
38
|
263228|Hauna
|
|
34
|
-
26324|Chipangayi
|
|
35
39
|
263248|Birchenough Bridge
|
|
36
|
-
|
|
40
|
+
26324|Chipangayi
|
|
37
41
|
2632582|Headlands
|
|
38
42
|
2632583|Nyazura
|
|
43
|
+
26325|Rusape
|
|
44
|
+
263261|Kariba
|
|
45
|
+
263264|Karoi
|
|
39
46
|
26326|Chimanimani
|
|
40
47
|
263270|Chitungwiza
|
|
41
48
|
263271|Bindura
|
|
@@ -47,7 +54,6 @@
|
|
|
47
54
|
263277|Mvurwi
|
|
48
55
|
263278|Murewa
|
|
49
56
|
263279|Marondera
|
|
50
|
-
263280|Plumtree
|
|
51
57
|
263281|Hwange
|
|
52
58
|
263282|Kezi
|
|
53
59
|
263283|Figtree
|
|
@@ -57,16 +63,18 @@
|
|
|
57
63
|
263287|Nyamandhlovu
|
|
58
64
|
263288|Esigodini
|
|
59
65
|
263289|Jotsholo
|
|
60
|
-
|
|
66
|
+
26329246|Bellevue
|
|
61
67
|
263298|Nyanga
|
|
62
|
-
|
|
68
|
+
26329|Juliasdale
|
|
63
69
|
263308|Chatsworth
|
|
64
|
-
|
|
70
|
+
26330|Luveve
|
|
65
71
|
263317|Checheche
|
|
72
|
+
26331|Chiredzi
|
|
73
|
+
263329|Nyanga
|
|
66
74
|
26332|Mvuma
|
|
67
|
-
26333|Triangle
|
|
68
75
|
263337|Nyaningwe
|
|
69
76
|
263338|Nyika
|
|
77
|
+
26333|Triangle
|
|
70
78
|
26334|Jerera
|
|
71
79
|
26335|Mashava
|
|
72
80
|
26336|Ngundu
|
|
@@ -74,43 +82,53 @@
|
|
|
74
82
|
263375|Concession
|
|
75
83
|
263376|Glendale
|
|
76
84
|
263379|Macheke
|
|
77
|
-
263383|
|
|
85
|
+
263383|Matopose
|
|
78
86
|
263387|Tsholotsho
|
|
79
|
-
26339|Masvingo
|
|
80
87
|
263398|Lupane
|
|
81
|
-
|
|
88
|
+
26339|Masvingo
|
|
89
|
+
26342722|Chitungwiza
|
|
90
|
+
26342723|Chitungwiza
|
|
91
|
+
26342728|Marondera
|
|
82
92
|
26342729|Marondera
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
263516|Mberengwa
|
|
93
|
+
2634|Harare
|
|
94
|
+
26350|Shanagani
|
|
86
95
|
263517|Mataga
|
|
96
|
+
263518|Mberengwa
|
|
97
|
+
26351|Zvishavane
|
|
87
98
|
26352|Shurugwi
|
|
88
99
|
26353|Chegutu
|
|
89
|
-
26354|Gweru
|
|
90
100
|
2635483|Lalapanzi
|
|
91
|
-
|
|
101
|
+
26354|Gweru
|
|
92
102
|
263557|Munyati
|
|
93
103
|
263558|Nkayi
|
|
104
|
+
26355|Kwekwe
|
|
94
105
|
26356|Chivhu
|
|
95
106
|
26357|Centenary
|
|
96
107
|
26358|Guruve
|
|
97
108
|
26359|Gokwe
|
|
98
109
|
26360|Mhangura
|
|
99
110
|
26361|Kariba
|
|
100
|
-
26362|Norton
|
|
101
111
|
263628|Selous
|
|
102
|
-
|
|
112
|
+
26362|Norton
|
|
103
113
|
263637|Chirundu
|
|
114
|
+
26363|Makuti
|
|
104
115
|
26364|Karoi
|
|
105
116
|
26365|Beatrice
|
|
106
|
-
26366|Banket
|
|
107
117
|
263667|Raffingora
|
|
108
118
|
263668|Mutorashanga
|
|
109
|
-
|
|
119
|
+
26366|Banket
|
|
110
120
|
263675|Murombedzi
|
|
111
|
-
|
|
121
|
+
26367|Chinhoyi
|
|
112
122
|
263687|Sanyati
|
|
113
123
|
263688|Chakari
|
|
114
|
-
|
|
124
|
+
26368|Kadoma
|
|
115
125
|
263698|Trelawney
|
|
126
|
+
26369|Darwendale
|
|
127
|
+
263920|Northend
|
|
128
|
+
263922|Queensdale
|
|
129
|
+
263924|Hillside
|
|
130
|
+
263940|Mabutewni
|
|
131
|
+
263947|Bellevue
|
|
132
|
+
263948|Nkulumane
|
|
133
|
+
263952|Luveve
|
|
116
134
|
2639|Bulawayo
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
# Generated from:
|
|
16
|
-
# Internal statistics data (2015-
|
|
16
|
+
# Internal statistics data (2015-08-06).
|
|
17
17
|
|
|
18
18
|
1|America/Anguilla&America/Antigua&America/Barbados&America/Cayman&America/Chicago&America/Denver&America/Dominica&America/Edmonton&America/Grand_Turk&America/Grenada&America/Halifax&America/Jamaica&America/Juneau&America/Los_Angeles&America/Lower_Princes&America/Montserrat&America/Nassau&America/New_York&America/Port_of_Spain&America/Puerto_Rico&America/St_Johns&America/St_Kitts&America/St_Lucia&America/St_Thomas&America/St_Vincent&America/Toronto&America/Tortola&America/Vancouver&America/Winnipeg&Atlantic/Bermuda&Pacific/Guam&Pacific/Honolulu&Pacific/Pago_Pago&Pacific/Saipan
|
|
19
19
|
1201|America/New_York
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
1208251|America/Denver
|
|
30
30
|
1208253|America/Denver
|
|
31
31
|
1208255|America/Los_Angeles
|
|
32
|
+
1208258|America/Denver
|
|
32
33
|
120826|America/Los_Angeles
|
|
33
34
|
120827|America/Denver
|
|
34
35
|
120828|America/Denver
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
1208292|America/Los_Angeles
|
|
37
38
|
1208297|America/Denver
|
|
38
39
|
12083|America/Denver
|
|
40
|
+
120840|America/Denver
|
|
39
41
|
120841|America/Denver
|
|
40
42
|
120842|America/Denver
|
|
41
43
|
1208433|America/Denver
|
|
@@ -352,12 +354,14 @@
|
|
|
352
354
|
1308423|America/Denver
|
|
353
355
|
1308425|America/Chicago
|
|
354
356
|
130843|America/Denver
|
|
357
|
+
130844|America/Chicago
|
|
355
358
|
130845|America/Chicago
|
|
356
359
|
130846|America/Chicago
|
|
357
360
|
13085|America/Chicago
|
|
358
361
|
130862|America/Denver
|
|
359
362
|
130863|America/Denver
|
|
360
363
|
130866|America/Denver
|
|
364
|
+
130867|America/Chicago
|
|
361
365
|
130869|America/Chicago
|
|
362
366
|
130872|America/Chicago
|
|
363
367
|
130874|America/Chicago
|
|
@@ -969,6 +973,7 @@
|
|
|
969
973
|
181249|America/Chicago
|
|
970
974
|
181252|America/New_York
|
|
971
975
|
181253|America/New_York
|
|
976
|
+
1812542|America/New_York
|
|
972
977
|
1812546|America/New_York
|
|
973
978
|
1812547|America/Chicago
|
|
974
979
|
181259|America/New_York
|
|
@@ -1108,6 +1113,7 @@
|
|
|
1108
1113
|
1850539|America/New_York
|
|
1109
1114
|
1850545|America/New_York
|
|
1110
1115
|
1850547|America/Chicago
|
|
1116
|
+
185055|America/New_York
|
|
1111
1117
|
185056|America/New_York
|
|
1112
1118
|
185057|America/New_York
|
|
1113
1119
|
1850580|America/New_York
|
|
@@ -1236,6 +1242,7 @@
|
|
|
1236
1242
|
190624|America/New_York
|
|
1237
1243
|
190625|America/New_York
|
|
1238
1244
|
190626|America/Chicago
|
|
1245
|
+
190627|America/New_York
|
|
1239
1246
|
190629|America/New_York
|
|
1240
1247
|
19063|America/New_York
|
|
1241
1248
|
19064|America/New_York
|
|
@@ -1646,7 +1653,7 @@
|
|
|
1646
1653
|
52326|America/Mexico_City
|
|
1647
1654
|
52327|America/Mazatlan
|
|
1648
1655
|
52328|America/Mexico_City
|
|
1649
|
-
52329|America/
|
|
1656
|
+
52329|America/Mexico_City&America/Mazatlan
|
|
1650
1657
|
5233|America/Mexico_City
|
|
1651
1658
|
5234|America/Mexico_City
|
|
1652
1659
|
5235|America/Mexico_City
|
|
@@ -1713,8 +1720,8 @@
|
|
|
1713
1720
|
5297|America/Mexico_City
|
|
1714
1721
|
52981|America/Mexico_City
|
|
1715
1722
|
52982|America/Mexico_City
|
|
1716
|
-
52983|America/
|
|
1717
|
-
52984|America/
|
|
1723
|
+
52983|America/New_York&America/Mexico_City
|
|
1724
|
+
52984|America/New_York&America/Mexico_City
|
|
1718
1725
|
52985|America/Mexico_City
|
|
1719
1726
|
52986|America/Mexico_City
|
|
1720
1727
|
52987|America/New_York
|
|
@@ -1726,7 +1733,7 @@
|
|
|
1726
1733
|
52995|America/Mexico_City
|
|
1727
1734
|
52996|America/Mexico_City
|
|
1728
1735
|
52997|America/Mexico_City
|
|
1729
|
-
52998|America/
|
|
1736
|
+
52998|America/New_York&America/Mexico_City
|
|
1730
1737
|
52999|America/Mexico_City
|
|
1731
1738
|
53|America/Havana
|
|
1732
1739
|
54|America/Buenos_Aires
|
|
@@ -1747,6 +1754,7 @@
|
|
|
1747
1754
|
5569|America/Manaus
|
|
1748
1755
|
557|America/Sao_Paulo
|
|
1749
1756
|
558|America/Sao_Paulo
|
|
1757
|
+
5581|America/Noronha
|
|
1750
1758
|
5591|America/Manaus
|
|
1751
1759
|
5592|America/Manaus
|
|
1752
1760
|
5593|America/Manaus
|
|
@@ -1759,6 +1767,7 @@
|
|
|
1759
1767
|
56|America/Santiago&Pacific/Easter
|
|
1760
1768
|
562|America/Santiago
|
|
1761
1769
|
563|America/Santiago
|
|
1770
|
+
5632|Pacific/Easter
|
|
1762
1771
|
564|America/Santiago
|
|
1763
1772
|
565|America/Santiago
|
|
1764
1773
|
566|America/Santiago
|
|
@@ -1803,13 +1812,15 @@
|
|
|
1803
1812
|
6238|Asia/Makassar
|
|
1804
1813
|
62401|Asia/Makassar
|
|
1805
1814
|
62402|Asia/Makassar
|
|
1806
|
-
62403|Asia/
|
|
1815
|
+
62403|Asia/Makassar&Asia/Jayapura
|
|
1807
1816
|
62404|Asia/Makassar
|
|
1808
1817
|
62405|Asia/Makassar
|
|
1809
1818
|
62408|Asia/Makassar
|
|
1819
|
+
62409|Asia/Makassar
|
|
1810
1820
|
6241|Asia/Makassar
|
|
1811
1821
|
6242|Asia/Makassar
|
|
1812
1822
|
6243|Asia/Makassar
|
|
1823
|
+
6244|Asia/Makassar
|
|
1813
1824
|
6245|Asia/Makassar
|
|
1814
1825
|
6246|Asia/Makassar
|
|
1815
1826
|
6247|Asia/Makassar
|
|
@@ -1823,7 +1834,7 @@
|
|
|
1823
1834
|
62519|Asia/Jakarta
|
|
1824
1835
|
62522|Asia/Jakarta
|
|
1825
1836
|
62525|Asia/Jakarta
|
|
1826
|
-
62526|Asia/Makassar
|
|
1837
|
+
62526|Asia/Jakarta&Asia/Makassar
|
|
1827
1838
|
62527|Asia/Makassar
|
|
1828
1839
|
62528|Asia/Jakarta
|
|
1829
1840
|
6253|Asia/Jakarta
|
|
@@ -1848,7 +1859,9 @@
|
|
|
1848
1859
|
62966|Asia/Jayapura
|
|
1849
1860
|
62967|Asia/Jayapura
|
|
1850
1861
|
62969|Asia/Jayapura
|
|
1851
|
-
|
|
1862
|
+
62971|Asia/Jayapura
|
|
1863
|
+
62975|Asia/Jayapura
|
|
1864
|
+
62979|Asia/Jakarta&Asia/Jayapura
|
|
1852
1865
|
6298|Asia/Jayapura
|
|
1853
1866
|
63|Asia/Manila
|
|
1854
1867
|
64|Pacific/Auckland&Pacific/Chatham
|
|
@@ -1903,7 +1916,7 @@
|
|
|
1903
1916
|
7301|Asia/Irkutsk
|
|
1904
1917
|
7302|Asia/Yakutsk
|
|
1905
1918
|
733|Asia/Almaty
|
|
1906
|
-
7341|Europe/Moscow
|
|
1919
|
+
7341|Europe/Moscow&Europe/Samara
|
|
1907
1920
|
7342|Asia/Yekaterinburg
|
|
1908
1921
|
7343|Asia/Yekaterinburg
|
|
1909
1922
|
7345|Asia/Yekaterinburg
|
|
@@ -1956,9 +1969,9 @@
|
|
|
1956
1969
|
7843|Europe/Moscow
|
|
1957
1970
|
7844|Europe/Moscow
|
|
1958
1971
|
7845|Europe/Moscow
|
|
1959
|
-
7846|Europe/Moscow
|
|
1972
|
+
7846|Europe/Moscow&Europe/Samara
|
|
1960
1973
|
7847|Europe/Moscow
|
|
1961
|
-
7848|Europe/Moscow
|
|
1974
|
+
7848|Europe/Moscow&Europe/Samara
|
|
1962
1975
|
785|Europe/Moscow
|
|
1963
1976
|
786|Europe/Moscow
|
|
1964
1977
|
787|Europe/Moscow
|
|
Binary file
|
|
Binary file
|
data/data/phone_data.dat
CHANGED
|
Binary file
|
data/lib/phonelib.rb
CHANGED
data/lib/phonelib/core.rb
CHANGED
data/lib/phonelib/phone.rb
CHANGED
|
@@ -2,10 +2,14 @@ module Phonelib
|
|
|
2
2
|
# class for parsed phone number, includes validation and formatting methods
|
|
3
3
|
class Phone
|
|
4
4
|
# defining reader methods for class variables
|
|
5
|
-
|
|
5
|
+
# original phone number passed for parsing
|
|
6
|
+
attr_reader :original
|
|
7
|
+
# phone extension passed for parsing after a number
|
|
8
|
+
attr_reader :extension
|
|
6
9
|
|
|
7
10
|
# including module that has all phone analyzing methods
|
|
8
11
|
include Phonelib::PhoneAnalyzer
|
|
12
|
+
include Phonelib::PhoneExtendedData
|
|
9
13
|
|
|
10
14
|
# class initialization method
|
|
11
15
|
#
|
|
@@ -16,7 +20,8 @@ module Phonelib
|
|
|
16
20
|
# country (2 letters) like 'US', 'us' or :us for United States
|
|
17
21
|
#
|
|
18
22
|
def initialize(original, country = nil)
|
|
19
|
-
@original = original
|
|
23
|
+
@original, @extension = separate_extension(original)
|
|
24
|
+
@extension.gsub!(/[^0-9]/, '') if @extension
|
|
20
25
|
|
|
21
26
|
if sanitized.empty?
|
|
22
27
|
@data = {}
|
|
@@ -29,7 +34,7 @@ module Phonelib
|
|
|
29
34
|
|
|
30
35
|
# method to get sanitized phone number (only numbers)
|
|
31
36
|
def sanitized
|
|
32
|
-
@original && @original.gsub(/[^0-9]+/, '') || ''
|
|
37
|
+
@sanitized ||= @original && @original.gsub(/[^0-9]+/, '') || ''
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
# Returns all phone types that matched valid patterns
|
|
@@ -69,13 +74,14 @@ module Phonelib
|
|
|
69
74
|
end
|
|
70
75
|
end
|
|
71
76
|
|
|
77
|
+
# Return valid country
|
|
78
|
+
def valid_country
|
|
79
|
+
@valid_country ||= get_main_country(valid_countries)
|
|
80
|
+
end
|
|
81
|
+
|
|
72
82
|
# Returns first country that matched valid patterns
|
|
73
83
|
def country
|
|
74
|
-
@country ||=
|
|
75
|
-
valid_countries.find do |iso2|
|
|
76
|
-
@data[iso2][Core::MAIN_COUNTRY_FOR_CODE] == 'true'
|
|
77
|
-
end || valid_countries.first || countries.first
|
|
78
|
-
end
|
|
84
|
+
@country ||= valid_country || get_main_country(countries)
|
|
79
85
|
end
|
|
80
86
|
|
|
81
87
|
# Returns the country code from the original phone number.
|
|
@@ -105,18 +111,36 @@ module Phonelib
|
|
|
105
111
|
!possible?
|
|
106
112
|
end
|
|
107
113
|
|
|
114
|
+
# returns area code of parsed number
|
|
115
|
+
def area_code
|
|
116
|
+
return nil unless possible?
|
|
117
|
+
format_match, format_string = get_formatting_data
|
|
118
|
+
|
|
119
|
+
if format_string =~ /^.*[0-9]+.*\$1/ && format_match
|
|
120
|
+
format_string.gsub(/\$1.*$/, format_match[1]).gsub(/[^\d]+/, '')
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# returns local number
|
|
125
|
+
def local_number
|
|
126
|
+
return national unless possible?
|
|
127
|
+
format_match, format_string = get_formatting_data
|
|
128
|
+
|
|
129
|
+
if format_string =~ /^.*[0-9]+.*\$1/ && format_match
|
|
130
|
+
format_string.gsub(/^.*\$2/, '$2').
|
|
131
|
+
gsub(/\$\d/) { |el| format_match[el[1].to_i] }
|
|
132
|
+
else
|
|
133
|
+
national
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
108
137
|
# Returns formatted national number
|
|
109
138
|
def national
|
|
110
139
|
return @national_number unless valid?
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
# add space to format groups, change first group to rule,
|
|
114
|
-
# change rule's constants to values
|
|
115
|
-
format_string = format[:format].gsub(/(\d)\$/, '\\1 $').gsub('$1', rule)
|
|
116
|
-
.gsub(/(\$NP|\$FG)/, '$NP' => prefix, '$FG' => '$1')
|
|
140
|
+
format_match, format_string = get_formatting_data
|
|
117
141
|
|
|
118
|
-
if
|
|
119
|
-
format_string.gsub(/\$\d/) { |el|
|
|
142
|
+
if format_match
|
|
143
|
+
format_string.gsub(/\$\d/) { |el| format_match[el[1].to_i] }
|
|
120
144
|
else
|
|
121
145
|
@national_number
|
|
122
146
|
end
|
|
@@ -124,7 +148,6 @@ module Phonelib
|
|
|
124
148
|
|
|
125
149
|
# Returns e164 formatted phone number
|
|
126
150
|
def international
|
|
127
|
-
sanitized = self.sanitized
|
|
128
151
|
return nil if sanitized.nil? || sanitized.empty?
|
|
129
152
|
return "+#{sanitized}" unless valid?
|
|
130
153
|
|
|
@@ -155,9 +178,9 @@ module Phonelib
|
|
|
155
178
|
#
|
|
156
179
|
def valid_for_country?(country)
|
|
157
180
|
country = country.to_s.upcase
|
|
158
|
-
@data.
|
|
181
|
+
@data.find do |iso2, data|
|
|
159
182
|
country == iso2 && data[:valid].any?
|
|
160
|
-
end.
|
|
183
|
+
end.is_a? Array
|
|
161
184
|
end
|
|
162
185
|
|
|
163
186
|
# Returns whether a current parsed phone number is invalid for specified
|
|
@@ -172,78 +195,38 @@ module Phonelib
|
|
|
172
195
|
!valid_for_country?(country)
|
|
173
196
|
end
|
|
174
197
|
|
|
175
|
-
# Returns geo name of parsed phone number or nil if number is invalid or
|
|
176
|
-
# there is no geo name specified in db for this number
|
|
177
|
-
def geo_name
|
|
178
|
-
get_ext_name Phonelib::Core::EXT_GEO_NAMES,
|
|
179
|
-
Phonelib::Core::EXT_GEO_NAME_KEY
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
# Returns timezone of parsed phone number or nil if number is invalid or
|
|
183
|
-
# there is no timezone specified in db for this number
|
|
184
|
-
def timezone
|
|
185
|
-
get_ext_name Phonelib::Core::EXT_TIMEZONES,
|
|
186
|
-
Phonelib::Core::EXT_TIMEZONE_KEY
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
# Returns carrier of parsed phone number or nil if number is invalid or
|
|
190
|
-
# there is no carrier specified in db for this number
|
|
191
|
-
def carrier
|
|
192
|
-
get_ext_name Phonelib::Core::EXT_CARRIERS,
|
|
193
|
-
Phonelib::Core::EXT_CARRIER_KEY
|
|
194
|
-
end
|
|
195
|
-
|
|
196
198
|
private
|
|
197
199
|
|
|
198
|
-
#
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
# * +name_key+ - names array key from extended data hash
|
|
203
|
-
# * +id_key+ - parameter id key in resolved extended data for number
|
|
204
|
-
#
|
|
205
|
-
def get_ext_name(names_key, id_key)
|
|
206
|
-
if ext_data[id_key] > 0
|
|
207
|
-
res = Phonelib.phone_ext_data[names_key][ext_data[id_key]]
|
|
208
|
-
res.size == 1 ? res.first : res
|
|
209
|
-
end
|
|
200
|
+
# extracts extension from passed phone number if provided
|
|
201
|
+
def separate_extension(original)
|
|
202
|
+
splitted = (original || '').split /[;#]/
|
|
203
|
+
[splitted.first, splitted[1..-1] && splitted[1..-1].join]
|
|
210
204
|
end
|
|
211
205
|
|
|
212
|
-
#
|
|
213
|
-
def
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
Phonelib::Core::EXT_GEO_NAME_KEY,
|
|
218
|
-
Phonelib::Core::EXT_TIMEZONE_KEY,
|
|
219
|
-
Phonelib::Core::EXT_CARRIER_KEY
|
|
220
|
-
]
|
|
221
|
-
result = {}
|
|
222
|
-
ext_keys.each { |key| result[key] = 0 }
|
|
223
|
-
|
|
224
|
-
return result unless possible?
|
|
225
|
-
|
|
226
|
-
drill = Phonelib.phone_ext_data[Phonelib::Core::EXT_PREFIXES]
|
|
227
|
-
|
|
228
|
-
e164.gsub('+', '').each_char do |num|
|
|
229
|
-
drill = drill[num.to_i] || break
|
|
230
|
-
|
|
231
|
-
ext_keys.each do |key|
|
|
232
|
-
result[key] = drill[key] if drill[key]
|
|
233
|
-
end
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
@ext_data = result
|
|
206
|
+
# get main country for code among provided countries
|
|
207
|
+
def get_main_country(countries_array)
|
|
208
|
+
countries_array.find do |iso2|
|
|
209
|
+
@data[iso2][Core::MAIN_COUNTRY_FOR_CODE] == 'true'
|
|
210
|
+
end || countries_array.first
|
|
237
211
|
end
|
|
238
212
|
|
|
239
213
|
# Get needable data for formatting phone as national number
|
|
240
214
|
def get_formatting_data
|
|
215
|
+
return @formatting_data if @formatting_data
|
|
216
|
+
|
|
241
217
|
format = @data[country][:format]
|
|
242
218
|
prefix = @data[country][Core::NATIONAL_PREFIX]
|
|
243
219
|
rule = (format[Core::NATIONAL_PREFIX_RULE] ||
|
|
244
220
|
@data[country][Core::NATIONAL_PREFIX_RULE] || '$1')
|
|
245
221
|
|
|
246
|
-
|
|
222
|
+
# change rule's constants to values
|
|
223
|
+
rule.gsub!(/(\$NP|\$FG)/, '$NP' => prefix, '$FG' => '$1')
|
|
224
|
+
|
|
225
|
+
# add space to format groups, change first group to rule,
|
|
226
|
+
format_string = format[:format].gsub(/(\d)\$/, '\\1 $').gsub('$1', rule)
|
|
227
|
+
|
|
228
|
+
@formatting_data =
|
|
229
|
+
[@national_number.match(/#{format[Core::PATTERN]}/), format_string]
|
|
247
230
|
end
|
|
248
231
|
end
|
|
249
232
|
end
|