phony 2.18.13 → 2.18.19
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 +7 -3
- data/lib/phony/countries/cambodia.rb +1 -5
- data/lib/phony/countries/china.rb +4 -1
- data/lib/phony/countries/ireland.rb +6 -4
- data/lib/phony/countries/vietnam.rb +1 -0
- data/spec/functional/plausibility_spec.rb +10 -2
- data/spec/lib/phony/countries_spec.rb +25 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 191311d0c0169c0df4dd8b25dd66237bb90daf37806631092c4fe73881fade0c
|
4
|
+
data.tar.gz: f9c030830f9303fead7730266cc3bf08a3a260a1f34db0e81f47105cd9d576e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a36bf0ccdbfae65c24d192f6ed89b39a549643028bab3a14309f8ec9473b5c590dc58699dd26a913e530175fe03e2334ce0920bedffc2069a700588a834c8d18
|
7
|
+
data.tar.gz: 9d715c474e64dc92cf1d8de778f91676d4ab791f147f7a34694783dd64e737e751bf42cab231fd337a608b7527387770c9bca51a9cc992689c56cf8f67755aa0
|
data/lib/phony/countries.rb
CHANGED
@@ -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) |
|
@@ -351,13 +352,13 @@ Phony.define do
|
|
351
352
|
|
352
353
|
# Côte d'Ivoire
|
353
354
|
# http://www.wtng.info/wtng-225-ci.html
|
354
|
-
#
|
355
|
+
# https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000310006PDFE.pdf
|
355
356
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Ivory_Coast
|
356
357
|
#
|
357
358
|
# There is no trunk code for this country and several of the mobile prefixes start with 0
|
358
359
|
country '225',
|
359
360
|
trunk('', :normalize => false) |
|
360
|
-
fixed(2) >> split(2,2,2)
|
361
|
+
fixed(2) >> split(2,2,2,2)
|
361
362
|
|
362
363
|
country '226', none >> split(4,4) # Burkina Faso http://www.wtng.info/wtng-226-bf.html
|
363
364
|
country '227', none >> split(4,4) # Niger http://www.wtng.info/wtng-227-ne.html
|
@@ -396,6 +397,7 @@ Phony.define do
|
|
396
397
|
country '234',
|
397
398
|
match(/^([7-9]0\d)\d+$/) >> split(3,4) | # Mobile
|
398
399
|
match(/^(81\d)\d+$/) >> split(3,4) | # Mobile
|
400
|
+
match(/^(91\d)\d+$/) >> split(3,4) | # Mobile
|
399
401
|
one_of('1', '2') >> split(3,3..4) | # Lagos, Ibadan
|
400
402
|
one_of('9') >> split(3,4) | # Abuja
|
401
403
|
one_of((30..79).map(&:to_s)) >> split(3,2..3) | # 2-digit NDC
|
@@ -408,7 +410,9 @@ Phony.define do
|
|
408
410
|
country '239', fixed(1) >> split(3,3) # Sao Tome and Principe, http://www.wtng.info/wtng-239-st.html
|
409
411
|
|
410
412
|
country '240', none >> split(3,3,3) # Equatorial Guinea
|
411
|
-
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
|
412
416
|
country '242', # Congo http://www.wtng.info/wtng-242-cg.html
|
413
417
|
trunk('', :normalize => false) |
|
414
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]) |
|
@@ -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
|
@@ -192,7 +192,7 @@ describe 'plausibility' do
|
|
192
192
|
Phony.plausible?('+385 60 12 345').should be_truthy # Premium rate
|
193
193
|
Phony.plausible?('+385 62 123 456').should be_truthy # Premium, personal and UAN
|
194
194
|
end
|
195
|
-
it_is_correct_for "Côte d'Ivoire", :samples => '+225
|
195
|
+
it_is_correct_for "Côte d'Ivoire", :samples => '+225 01 9358 8764'
|
196
196
|
it_is_correct_for 'Democratic Republic of Timor-Leste', :samples => ['+670 465 7886', '+670 7465 7886']
|
197
197
|
it_is_correct_for 'Democratic Republic of the Congo', :samples => '+243 80 864 9794'
|
198
198
|
it_is_correct_for 'Diego Garcia', :samples => '+246 123 7686'
|
@@ -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,9 +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 '32475279584', ['32', '475', '27', '95', '84'] # mobile
|
107
|
-
it_splits '32468279584', ['32', '468', '27', '95', '84'] # mobile (Telenet)
|
108
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)
|
109
116
|
it_splits '3270123123', ['32', '70', '123', '123'] # Bus Service?
|
110
117
|
it_splits '3278123123', ['32', '78', '123', '123'] # National rate service
|
111
118
|
it_splits '3290123123', ['32', '901', '23', '123'] # National rate service
|
@@ -215,6 +222,7 @@ describe 'country descriptions' do
|
|
215
222
|
describe 'China' do
|
216
223
|
it_splits '862112345678', ['86', '21', '1234', '5678'] # Shanghai
|
217
224
|
it_splits '8675582193447', ['86', '755', '8219', '3447'] # Shenzhen
|
225
|
+
it_splits '869511234567', ['86', '951', '123', '4567'] # Yinchuan
|
218
226
|
|
219
227
|
context 'mobile numbers' do
|
220
228
|
%w{
|
@@ -613,6 +621,7 @@ describe 'country descriptions' do
|
|
613
621
|
end
|
614
622
|
describe 'Philippines' do
|
615
623
|
it_splits '6321234567', ['63', '2', '1234567']
|
624
|
+
it_splits '63289889999', ['63', '2', '89889999']
|
616
625
|
it_splits '6321234567890', ['63', '2', '1234567890']
|
617
626
|
it_splits '632123456789012', ['63', '2', '123456789012']
|
618
627
|
it_splits '639121234567', ['63', '912', '1234567']
|
@@ -886,8 +895,8 @@ describe 'country descriptions' do
|
|
886
895
|
it_splits '50622345678', %w(506 2 234 5678)
|
887
896
|
end
|
888
897
|
describe "Côte d'Ivoire" do
|
889
|
-
it_splits '
|
890
|
-
it_splits '
|
898
|
+
it_splits '2250107335518', ['225', '01', '07', '33', '55', '18']
|
899
|
+
it_splits '2250237335518', ['225', '02', '37', '33', '55', '18']
|
891
900
|
end
|
892
901
|
describe 'Democratic Republic of Timor-Leste' do
|
893
902
|
it_splits '6701742945', ['670', false, '174', '2945']
|
@@ -950,6 +959,7 @@ describe 'country descriptions' do
|
|
950
959
|
end
|
951
960
|
describe 'Gabonese Republic' do
|
952
961
|
it_splits '2411834375', ['241', '1', '834', '375']
|
962
|
+
it_splits '24174012345', ['241', '74', '01', '23', '45']
|
953
963
|
end
|
954
964
|
describe 'Gambia' do
|
955
965
|
it_splits '2206683355', ['220', false, '668', '3355']
|
@@ -1154,6 +1164,17 @@ describe 'country descriptions' do
|
|
1154
1164
|
it_splits '2349087661234', %w(234 908 766 1234)
|
1155
1165
|
it_splits '2349097661234', %w(234 909 766 1234)
|
1156
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
|
+
|
1157
1178
|
it_splits '2348107661234', %w(234 810 766 1234)
|
1158
1179
|
it_splits '2348117661234', %w(234 811 766 1234)
|
1159
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.19
|
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: 2021-02-05 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
|
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
117
|
rubygems_version: 3.0.3
|
118
|
-
signing_key:
|
118
|
+
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Fast international phone number (E164 standard) normalizing, splitting and
|
121
121
|
formatting.
|