phony 2.18.13 → 2.18.19
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.
- 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.
|