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.
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