phonelib 0.4.9 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +14 -3
  3. data/data/extended_data.dat +0 -0
  4. data/data/libphonenumber/README.md +5 -1
  5. data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +10195 -10134
  6. data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +11081 -11017
  7. data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +1514 -1509
  8. data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.cc +22 -0
  9. data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.h +3 -0
  10. data/data/libphonenumber/cpp/src/phonenumbers/test_metadata.cc +128 -120
  11. data/data/libphonenumber/cpp/test/phonenumbers/shortnumberinfo_test.cc +13 -0
  12. data/data/libphonenumber/java/carrier/pom.xml +4 -4
  13. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en +0 -0
  14. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/235_en +0 -0
  15. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/239_en +0 -0
  16. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/263_en +0 -0
  17. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/41_en +0 -0
  18. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/509_en +0 -0
  19. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/61_en +0 -0
  20. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en +0 -0
  21. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/976_en +0 -0
  22. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config +0 -0
  23. data/data/libphonenumber/java/demo/pom.xml +5 -5
  24. data/data/libphonenumber/java/geocoder/pom.xml +4 -4
  25. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/263_en +0 -0
  26. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config +0 -0
  27. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/timezones/data/map_data +0 -0
  28. data/data/libphonenumber/java/internal/prefixmapper/pom.xml +3 -3
  29. data/data/libphonenumber/java/libphonenumber/pom.xml +2 -2
  30. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataSource.java +38 -0
  31. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +155 -0
  32. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +31 -109
  33. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java +19 -0
  34. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR +0 -0
  35. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU +0 -0
  36. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY +0 -0
  37. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR +0 -0
  38. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ +0 -0
  39. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH +0 -0
  40. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES +0 -0
  41. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +0 -0
  42. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT +0 -0
  43. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
  44. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO +0 -0
  45. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN +0 -0
  46. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU +0 -0
  47. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX +0 -0
  48. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL +0 -0
  49. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST +0 -0
  50. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ +0 -0
  51. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD +0 -0
  52. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT +0 -0
  53. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT +0 -0
  54. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW +0 -0
  55. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK +0 -0
  56. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR +0 -0
  57. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX +0 -0
  58. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW +0 -0
  59. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java +6 -2
  60. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +51 -0
  61. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +0 -20
  62. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ShortNumberInfoTest.java +11 -0
  63. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/TestMetadataTestCase.java +3 -2
  64. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SE +0 -0
  65. data/data/libphonenumber/java/pom.xml +1 -1
  66. data/data/libphonenumber/java/release_notes.txt +16 -0
  67. data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +135 -133
  68. data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +54 -48
  69. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatafortesting.js +14 -0
  70. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +54 -48
  71. data/data/libphonenumber/resources/PhoneNumberMetadata.xml +366 -256
  72. data/data/libphonenumber/resources/PhoneNumberMetadataForTesting.xml +4 -0
  73. data/data/libphonenumber/resources/ShortNumberMetadata.xml +52 -15
  74. data/data/libphonenumber/resources/carrier/en/230.txt +2 -0
  75. data/data/libphonenumber/resources/carrier/en/235.txt +1 -0
  76. data/data/libphonenumber/resources/carrier/en/239.txt +1 -0
  77. data/data/libphonenumber/resources/carrier/en/263.txt +1 -0
  78. data/data/libphonenumber/resources/carrier/en/41.txt +1 -1
  79. data/data/libphonenumber/resources/carrier/en/509.txt +24 -0
  80. data/data/libphonenumber/resources/carrier/en/61.txt +1 -0
  81. data/data/libphonenumber/resources/carrier/en/91.txt +1726 -830
  82. data/data/libphonenumber/resources/carrier/en/976.txt +18 -0
  83. data/data/libphonenumber/resources/geocoding/en/263.txt +40 -22
  84. data/data/libphonenumber/resources/timezones/map_data.txt +24 -11
  85. data/data/libphonenumber/tools/java/cpp-build/pom.xml +1 -1
  86. data/data/libphonenumber/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
  87. data/data/libphonenumber/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
  88. data/data/phone_data.dat +0 -0
  89. data/lib/phonelib.rb +1 -0
  90. data/lib/phonelib/core.rb +1 -0
  91. data/lib/phonelib/data_importer_helper.rb +1 -0
  92. data/lib/phonelib/phone.rb +61 -78
  93. data/lib/phonelib/phone_analyzer.rb +1 -1
  94. data/lib/phonelib/phone_extended_data.rb +68 -0
  95. data/lib/phonelib/version.rb +1 -1
  96. 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
- 26320|Mutare
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
- 26325|Rusape
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
- 26329|Juliasdale
66
+ 26329246|Bellevue
61
67
  263298|Nyanga
62
- 26330|Gutu
68
+ 26329|Juliasdale
63
69
  263308|Chatsworth
64
- 26331|Chiredzi
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|Matopos
85
+ 263383|Matopose
78
86
  263387|Tsholotsho
79
- 26339|Masvingo
80
87
  263398|Lupane
81
- 2634|Harare
88
+ 26339|Masvingo
89
+ 26342722|Chitungwiza
90
+ 26342723|Chitungwiza
91
+ 26342728|Marondera
82
92
  26342729|Marondera
83
- 26350|Shangani
84
- 26351|Zvishavane
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
- 26355|Kwekwe
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
- 26363|Makuti
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
- 26367|Chinhoyi
119
+ 26366|Banket
110
120
  263675|Murombedzi
111
- 26368|Kadoma
121
+ 26367|Chinhoyi
112
122
  263687|Sanyati
113
123
  263688|Chakari
114
- 26369|Darwendale
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-05-05).
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/Mazatlan&America/Mexico_City
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/Mexico_City&America/New_York
1717
- 52984|America/Mexico_City&America/New_York
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/Mexico_City&America/New_York
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/Jayapura&Asia/Makassar
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
- 6297|Asia/Jayapura
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
@@ -142,7 +142,7 @@
142
142
  <dependency>
143
143
  <groupId>com.google.protobuf</groupId>
144
144
  <artifactId>protobuf-java</artifactId>
145
- <version>2.4.0a</version>
145
+ <version>2.6.1</version>
146
146
  </dependency>
147
147
  </dependencies>
148
148
 
data/data/phone_data.dat CHANGED
Binary file
data/lib/phonelib.rb CHANGED
@@ -4,6 +4,7 @@ module Phonelib
4
4
  autoload :Core, 'phonelib/core'
5
5
  autoload :Phone, 'phonelib/phone'
6
6
  autoload :PhoneAnalyzer, 'phonelib/phone_analyzer'
7
+ autoload :PhoneExtendedData, 'phonelib/phone_extended_data'
7
8
 
8
9
  extend Module.new {
9
10
  include Core
data/lib/phonelib/core.rb CHANGED
@@ -158,6 +158,7 @@ module Phonelib
158
158
  area_code_optional: 'Are code optional'
159
159
  }
160
160
 
161
+ # short codes types keys
161
162
  SHORT_CODES = [
162
163
  :short_code, :emergency, :carrier_specific, :sms_services,
163
164
  :expanded_emergency, :no_international_dialling, :carrier_services,
@@ -1,4 +1,5 @@
1
1
  module Phonelib
2
+ # helper module for parsing raw libphonenumber data
2
3
  module DataImporterHelper
3
4
  # xml comments attributes names that should not be parsed
4
5
  XML_COMMENT_ATTRIBUTES = %w(text comment)
@@ -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
- attr_reader :original # original phone number passed for parsing
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 ||= begin
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
- format, prefix, rule = get_formatting_data
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 matches = @national_number.match(/#{format[Core::PATTERN]}/)
119
- format_string.gsub(/\$\d/) { |el| matches[el[1].to_i] }
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.select do |iso2, data|
181
+ @data.find do |iso2, data|
159
182
  country == iso2 && data[:valid].any?
160
- end.any?
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
- # get name from extended phone data by keys
199
- #
200
- # ==== Attributes
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
- # returns extended data ids for current number
213
- def ext_data
214
- return @ext_data if @ext_data
215
-
216
- ext_keys = [
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
- [format, prefix, rule]
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