phony 2.18.12 → 2.18.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/phony/countries.rb +8 -3
- data/lib/phony/countries/cambodia.rb +1 -5
- data/lib/phony/countries/china.rb +5 -2
- data/lib/phony/countries/ireland.rb +6 -4
- data/lib/phony/countries/vietnam.rb +1 -0
- data/spec/functional/plausibility_spec.rb +9 -1
- data/spec/lib/phony/countries_spec.rb +38 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35e5d35fc8879631ec6f0602d0d5cb1e006790c2332a8f4ff536066bc2a5f3c4
|
4
|
+
data.tar.gz: 302dbb2edb99ea91db4556161535c28b38d66726e1899197d8396baa41eec63f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e87c3f22321a3c86093f607ee00316ad0ff4fae588f309bd8ff8b609a125deda1199fe1db5b53f166a318aeaa46704eecf8f70ec53de1c97402e7c8ba8eb44b
|
7
|
+
data.tar.gz: d9a68e78d43829f1f7e7b42602adee5cc3c3c57ad83aa8b879e55fa7e75136a54b34ed7e5f73e5fe0651bc7cfdc1e0f12f5d6497609ad10f8571092f7c7c7f81
|
data/lib/phony/countries.rb
CHANGED
@@ -102,7 +102,7 @@ Phony.define do
|
|
102
102
|
match(/^(800|90\d)\d+$/) >> split(2,3) | # Toll free service and premium numbers
|
103
103
|
match(/^(46[05678])\d{6}$/) >> split(2,2,2) | # Mobile (Lycamobile, Telenet, Join Experience, Proximus 0460)
|
104
104
|
match(/^(4[789]\d)\d{6}$/) >> split(2,2,2) | # Mobile
|
105
|
-
match(/^(
|
105
|
+
match(/^(45[56])\d{6}$/) >> split(2,2,2) | # Mobile Vikings and Voo
|
106
106
|
one_of('2','3','4','9') >> split(3,2,2) | # Short NDCs
|
107
107
|
fixed(2) >> split(2,2,2) # 2-digit NDCs
|
108
108
|
|
@@ -257,6 +257,7 @@ Phony.define do
|
|
257
257
|
trunk('0') |
|
258
258
|
# 7/10 digits for area code '2'.
|
259
259
|
match(/\A(2)\d{10}\z/) >> split(10) |
|
260
|
+
match(/\A(2)\d{8}\z/) >> split(8) |
|
260
261
|
one_of('2') >> split(7) |
|
261
262
|
# mobile
|
262
263
|
match(/\A([89]\d\d)\d{7}\z/) >> split(7) |
|
@@ -382,8 +383,9 @@ Phony.define do
|
|
382
383
|
# Ghana
|
383
384
|
#
|
384
385
|
# From http://www.itu.int/oth/T0202000052/en
|
386
|
+
# https://en.wikipedia.org/wiki/Telephone_numbers_in_Ghana
|
385
387
|
#
|
386
|
-
country '233', fixed(2) >> split(3,4)
|
388
|
+
country '233', trunk('0') | fixed(2) >> split(3,4)
|
387
389
|
|
388
390
|
# Nigeria
|
389
391
|
# 3 4 split for mobile and 1 digit NDC, 3 2 or 3 3 otherwise
|
@@ -395,6 +397,7 @@ Phony.define do
|
|
395
397
|
country '234',
|
396
398
|
match(/^([7-9]0\d)\d+$/) >> split(3,4) | # Mobile
|
397
399
|
match(/^(81\d)\d+$/) >> split(3,4) | # Mobile
|
400
|
+
match(/^(91\d)\d+$/) >> split(3,4) | # Mobile
|
398
401
|
one_of('1', '2') >> split(3,3..4) | # Lagos, Ibadan
|
399
402
|
one_of('9') >> split(3,4) | # Abuja
|
400
403
|
one_of((30..79).map(&:to_s)) >> split(3,2..3) | # 2-digit NDC
|
@@ -407,7 +410,9 @@ Phony.define do
|
|
407
410
|
country '239', fixed(1) >> split(3,3) # Sao Tome and Principe, http://www.wtng.info/wtng-239-st.html
|
408
411
|
|
409
412
|
country '240', none >> split(3,3,3) # Equatorial Guinea
|
410
|
-
country '241',
|
413
|
+
country '241',
|
414
|
+
match(/^(\d)\d{6}$/) >> split(3,3) | # Gabonese Republic http://www.wtng.info/wtng-241-ga.html
|
415
|
+
match(/^(\d\d)\d{6}$/) >> split(2,2,2) # 2019 update https://en.wikipedia.org/wiki/Telephone_numbers_in_Gabon
|
411
416
|
country '242', # Congo http://www.wtng.info/wtng-242-cg.html
|
412
417
|
trunk('', :normalize => false) |
|
413
418
|
none >> split(4,5)
|
@@ -71,6 +71,7 @@ six_digit_extended_range_mobile_prefixes = [
|
|
71
71
|
]
|
72
72
|
|
73
73
|
seven_digit_mobile_prefixes = [
|
74
|
+
'18', # Seatel
|
74
75
|
'31', # Metfone
|
75
76
|
'38', # CooTel
|
76
77
|
'39', # EMAXX
|
@@ -85,10 +86,6 @@ variable_length_extended_range_mobile_prefixes = [
|
|
85
86
|
'12' # Mobitel
|
86
87
|
]
|
87
88
|
|
88
|
-
mobile_prefixes_with_variable_length = [
|
89
|
-
'18' # Seatel
|
90
|
-
]
|
91
|
-
|
92
89
|
six_digit_total_single_digit_fixed_line_prefixes = [
|
93
90
|
'2', # Telecom Cambodia
|
94
91
|
'3', # Mobitel
|
@@ -126,7 +123,6 @@ seven_digit_total_double_digit_fixed_line_prefixes = [
|
|
126
123
|
|
127
124
|
Phony.define do
|
128
125
|
country '855', trunk('0', :normalize => true) |
|
129
|
-
one_of(mobile_prefixes_with_variable_length) >> matched_split(/^9/ => [3, 4], /^[2-8]/ => [3, 3]) |
|
130
126
|
one_of(variable_length_extended_range_mobile_prefixes) >> matched_split(/^1/ => [3, 4], /^[2-9]/ => [3, 3]) |
|
131
127
|
one_of(six_digit_mobile_prefixes) >> matched_split(/^[2-9]/ => [3, 3]) |
|
132
128
|
one_of(six_digit_extended_range_mobile_prefixes) >> matched_split(/^[1-9]/ => [3, 3]) |
|
@@ -19,7 +19,7 @@ ndcs = [
|
|
19
19
|
'28', # Chengdu
|
20
20
|
'29', # Xi'an
|
21
21
|
]
|
22
|
-
mobile = %w{ 130 131 132 133 134 135 136 137 138 139 145 150 151 152 153 155 156 157 158 159 185 186 187 188 189 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 }
|
22
|
+
mobile = %w{ 130 131 132 133 134 135 136 137 138 139 145 146 147 148 149 150 151 152 153 155 156 157 158 159 162 165 166 167 170 171 172 173 174 175 176 177 178 180 181 182 183 184 185 186 187 188 189 190 191 192 193 195 196 197 198 199 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 }
|
23
23
|
service = %w{ 110 114 119 120 122 999 } # Probably not exhaustive. TODO Look at http://www.eoc.com.cn/?action-viewnews-itemid-11493.
|
24
24
|
|
25
25
|
Phony.define do
|
@@ -28,5 +28,8 @@ Phony.define do
|
|
28
28
|
one_of(service) >> split(8) |
|
29
29
|
one_of(mobile) >> split(4,4) |
|
30
30
|
one_of(ndcs) >> split(4,4) |
|
31
|
-
fixed(3) >>
|
31
|
+
fixed(3) >> matched_split(
|
32
|
+
/\A\d{7}\z/ => [3,4],
|
33
|
+
/\A\d{8}\z/ => [4,4]
|
34
|
+
)
|
32
35
|
end
|
@@ -9,14 +9,14 @@
|
|
9
9
|
#
|
10
10
|
# References:
|
11
11
|
# http://www.comreg.ie/_fileupload/publications/ComReg03147.pdf (2003)
|
12
|
+
# https://www.comreg.ie/media/dlm_uploads/2015/12/ComReg0804.pdf (2008)
|
12
13
|
# http://www.comreg.ie/licensing_and_services/area_code_maps.552.1040.html
|
13
14
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_the_Republic_of_Ireland
|
14
15
|
#
|
15
16
|
ndcs_with_5_subscriber_digits = [
|
16
|
-
'22', '
|
17
|
+
'22', '24', '25', '26', '27', '28', '29', # Mallow, Youghal, Fermoy, Macroom, Bantry, Skibbereen, Kanturk
|
17
18
|
'402', # Arklow
|
18
19
|
'404', # Wicklow
|
19
|
-
'43', # Longford, Granard
|
20
20
|
'47', # Monaghan, Clones
|
21
21
|
'48', # Northern Ireland
|
22
22
|
'502', # Portlaoise, Abbeyleix
|
@@ -24,12 +24,10 @@ ndcs_with_5_subscriber_digits = [
|
|
24
24
|
'505', # Roscrea
|
25
25
|
'506', # Tullamore
|
26
26
|
'509', # Bin-
|
27
|
-
'52', # Killenaule
|
28
27
|
'54', # Legacy Ferns, Enniscorthy
|
29
28
|
'55', # Legacy Gorey
|
30
29
|
'62', # Tipperary, Cashel
|
31
30
|
'63', # Charleville
|
32
|
-
'64', # Killarney, Rathmore
|
33
31
|
'67', # Nenagh
|
34
32
|
'68', # Listowel
|
35
33
|
'69', # Newcastle West
|
@@ -47,15 +45,19 @@ ndcs_with_6_subscriber_digits = [
|
|
47
45
|
ndcs_with_7_subscriber_digits = [
|
48
46
|
'1', # Dublin
|
49
47
|
'21', # Cork, Coachford, Kinsale
|
48
|
+
'23', # Bandon
|
50
49
|
'41', # Ardee
|
51
50
|
'42', # Dundalk, Carrickmacross, Castleblaney
|
51
|
+
'43', # Longford, Granard
|
52
52
|
'44', # Mullingar, Castlepollard, Tyrellspass
|
53
53
|
'46', # Navan, Kells, Trim, Enfield, Edenderry
|
54
54
|
'49', # Cavan, Cootehill, Oldcastle, Belturbet
|
55
|
+
'52', # Killenaule
|
55
56
|
'53', # Wexford, Enniscorthy, Ferns, Gorey, Craanford
|
56
57
|
'56', # Kilkenny, Castlecomer
|
57
58
|
'58', # Dungarvan
|
58
59
|
'59', # Carlow, Muine Bheag, Athy, Baltinglass
|
60
|
+
'64', # Killarney, Rathmore
|
59
61
|
'65', # Ennistymon, Kilrush
|
60
62
|
'66', # Tralee, Dingle, Killorglin, Cahirciveen
|
61
63
|
'71', # Sligo, Manorhamilton, Carrick-on-Shannon
|
@@ -249,7 +249,14 @@ describe 'plausibility' do
|
|
249
249
|
end
|
250
250
|
it_is_correct_for 'French Guiana (French Department of)', :samples => '+594 594 123 456'
|
251
251
|
it_is_correct_for "French Polynesia (Territoire français d'outre-mer)", :samples => '+689 87 27 84 00'
|
252
|
-
|
252
|
+
it 'is correct for Gabon' do
|
253
|
+
Phony.plausible?('+241 1 627 739').should be_truthy
|
254
|
+
Phony.plausible?('+241 12 34 56 78').should be_truthy
|
255
|
+
end
|
256
|
+
# it_is_correct_for 'Gabonese Republic', :samples => [
|
257
|
+
# '+241 1 627 739',
|
258
|
+
# '+241 12 34 56 78',
|
259
|
+
# ]
|
253
260
|
it_is_correct_for 'Gambia', :samples => '+220 989 5148'
|
254
261
|
it_is_correct_for 'Germany', :samples => [
|
255
262
|
'+49 69 155 1',
|
@@ -607,6 +614,7 @@ describe 'plausibility' do
|
|
607
614
|
end
|
608
615
|
|
609
616
|
it 'is correct for Philippine' do
|
617
|
+
Phony.plausible?('+63 2 89889999').should be_truthy
|
610
618
|
Phony.plausible?('+63 976 1234567').should be_truthy # mobile phone with area code 9
|
611
619
|
Phony.plausible?('+63 876 1234567').should be_truthy # mobile phone with area code 8
|
612
620
|
end
|
@@ -103,8 +103,16 @@ describe 'country descriptions' do
|
|
103
103
|
it_splits '3295551914', ['32', '9', '555', '19', '14'] # Gent
|
104
104
|
it_splits '3245551414', ['32', '4', '555', '14', '14'] # Liège
|
105
105
|
it_splits '3216473200', ['32', '16', '47', '32', '00'] # Leuven
|
106
|
-
it_splits '
|
107
|
-
it_splits '
|
106
|
+
it_splits '32455123456', ['32', '455', '12', '34', '56'] # mobile (Voo)
|
107
|
+
it_splits '32456123456', ['32', '456', '12', '34', '56'] # mobile (MobileViking)
|
108
|
+
it_splits '32460123456', ['32', '460', '12', '34', '56'] # mobile (Proximus)
|
109
|
+
it_splits '32465123456', ['32', '465', '12', '34', '56'] # mobile (Lycamobile)
|
110
|
+
it_splits '32466123456', ['32', '466', '12', '34', '56'] # mobile (Vectone)
|
111
|
+
it_splits '32467123456', ['32', '467', '12', '34', '56'] # mobile (Telenet)
|
112
|
+
it_splits '32468123456', ['32', '468', '12', '34', '56'] # mobile (Telenet)
|
113
|
+
it_splits '32475123456', ['32', '475', '12', '34', '56'] # mobile (Proximus)
|
114
|
+
it_splits '32485123456', ['32', '485', '12', '34', '56'] # mobile (Telenet)
|
115
|
+
it_splits '32495123456', ['32', '495', '12', '34', '56'] # mobile (Orange)
|
108
116
|
it_splits '3270123123', ['32', '70', '123', '123'] # Bus Service?
|
109
117
|
it_splits '3278123123', ['32', '78', '123', '123'] # National rate service
|
110
118
|
it_splits '3290123123', ['32', '901', '23', '123'] # National rate service
|
@@ -214,6 +222,21 @@ describe 'country descriptions' do
|
|
214
222
|
describe 'China' do
|
215
223
|
it_splits '862112345678', ['86', '21', '1234', '5678'] # Shanghai
|
216
224
|
it_splits '8675582193447', ['86', '755', '8219', '3447'] # Shenzhen
|
225
|
+
it_splits '869511234567', ['86', '951', '123', '4567'] # Yinchuan
|
226
|
+
|
227
|
+
context 'mobile numbers' do
|
228
|
+
%w{
|
229
|
+
130 131 132 133 134 135 136 137 138 139
|
230
|
+
145 146 147 148 149
|
231
|
+
150 151 152 153 155 156 157 158 159
|
232
|
+
162 165 166 167
|
233
|
+
170 171 172 173 174 175 176 177 178
|
234
|
+
180 181 182 183 184 185 186 187 188 189
|
235
|
+
190 191 192 193 195 196 197 198 199
|
236
|
+
}.each do |prefix|
|
237
|
+
it_splits "86#{prefix}12345678", ['86', prefix, '1234', '5678']
|
238
|
+
end
|
239
|
+
end
|
217
240
|
end
|
218
241
|
describe 'Colombia' do
|
219
242
|
it_splits '5711234567', ['57', '1', '123', '4567']
|
@@ -598,6 +621,7 @@ describe 'country descriptions' do
|
|
598
621
|
end
|
599
622
|
describe 'Philippines' do
|
600
623
|
it_splits '6321234567', ['63', '2', '1234567']
|
624
|
+
it_splits '63289889999', ['63', '2', '89889999']
|
601
625
|
it_splits '6321234567890', ['63', '2', '1234567890']
|
602
626
|
it_splits '632123456789012', ['63', '2', '123456789012']
|
603
627
|
it_splits '639121234567', ['63', '912', '1234567']
|
@@ -935,6 +959,7 @@ describe 'country descriptions' do
|
|
935
959
|
end
|
936
960
|
describe 'Gabonese Republic' do
|
937
961
|
it_splits '2411834375', ['241', '1', '834', '375']
|
962
|
+
it_splits '24174012345', ['241', '74', '01', '23', '45']
|
938
963
|
end
|
939
964
|
describe 'Gambia' do
|
940
965
|
it_splits '2206683355', ['220', false, '668', '3355']
|
@@ -1139,6 +1164,17 @@ describe 'country descriptions' do
|
|
1139
1164
|
it_splits '2349087661234', %w(234 908 766 1234)
|
1140
1165
|
it_splits '2349097661234', %w(234 909 766 1234)
|
1141
1166
|
|
1167
|
+
it_splits '2349107661234', %w(234 910 766 1234)
|
1168
|
+
it_splits '2349117661234', %w(234 911 766 1234)
|
1169
|
+
it_splits '2349127661234', %w(234 912 766 1234)
|
1170
|
+
it_splits '2349137661234', %w(234 913 766 1234)
|
1171
|
+
it_splits '2349147661234', %w(234 914 766 1234)
|
1172
|
+
it_splits '2349157661234', %w(234 915 766 1234)
|
1173
|
+
it_splits '2349167661234', %w(234 916 766 1234)
|
1174
|
+
it_splits '2349177661234', %w(234 917 766 1234)
|
1175
|
+
it_splits '2349187661234', %w(234 918 766 1234)
|
1176
|
+
it_splits '2349197661234', %w(234 919 766 1234)
|
1177
|
+
|
1142
1178
|
it_splits '2348107661234', %w(234 810 766 1234)
|
1143
1179
|
it_splits '2348117661234', %w(234 811 766 1234)
|
1144
1180
|
it_splits '2348127661234', %w(234 812 766 1234)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.18.
|
4
|
+
version: 2.18.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Hanke
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'Fast international phone number (E164 standard) normalizing, splitting
|
14
14
|
and formatting. Lots of formatting options: International (+.., 00..), national
|
@@ -95,11 +95,11 @@ files:
|
|
95
95
|
- spec/lib/phony/national_splitters/variable_spec.rb
|
96
96
|
- spec/lib/phony/vanity_spec.rb
|
97
97
|
- spec/lib/phony_spec.rb
|
98
|
-
homepage:
|
98
|
+
homepage: https://github.com/floere/phony
|
99
99
|
licenses:
|
100
100
|
- MIT
|
101
101
|
metadata: {}
|
102
|
-
post_install_message:
|
102
|
+
post_install_message:
|
103
103
|
rdoc_options: []
|
104
104
|
require_paths:
|
105
105
|
- lib
|
@@ -114,8 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
|
-
rubygems_version: 3.0.
|
118
|
-
signing_key:
|
117
|
+
rubygems_version: 3.0.3
|
118
|
+
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Fast international phone number (E164 standard) normalizing, splitting and
|
121
121
|
formatting.
|