phonelib 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|