phony 2.18.14 → 2.18.20
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 +6 -3
- data/lib/phony/countries/cambodia.rb +1 -5
- data/lib/phony/countries/ireland.rb +6 -4
- data/lib/phony/countries/serbia.rb +3 -0
- data/lib/phony/countries/vietnam.rb +1 -0
- data/spec/functional/plausibility_spec.rb +11 -2
- data/spec/lib/phony/countries_spec.rb +23 -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: 4aa121c2347d97ea4409201b0aa8ef7d25e6a614f2dcdcd311775a55e825fd26
|
4
|
+
data.tar.gz: 180d24ec2a82f11072dbd03eba8659cbf5ab32d6d1a9867132fe16ac5c93c204
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c768ad38bc9fbb7a715de4317f0857a8ee62ca00c728a25968fbe6adbe96da09923523e9f34244af24655e02c6a09b9cfc1e13ae52ec3c304a589599fe3a2cc
|
7
|
+
data.tar.gz: 0644f348c82d5b1994dbbace37c4045b9c7d917ced71a3fbe99ef7706e7dad9c1831dc7641fdb07e6a4e77d2a8fa04d203d3dd0adfcae4155eb4968bab59a1d8
|
data/lib/phony/countries.rb
CHANGED
@@ -352,13 +352,13 @@ Phony.define do
|
|
352
352
|
|
353
353
|
# Côte d'Ivoire
|
354
354
|
# http://www.wtng.info/wtng-225-ci.html
|
355
|
-
#
|
355
|
+
# https://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000310006PDFE.pdf
|
356
356
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Ivory_Coast
|
357
357
|
#
|
358
358
|
# There is no trunk code for this country and several of the mobile prefixes start with 0
|
359
359
|
country '225',
|
360
360
|
trunk('', :normalize => false) |
|
361
|
-
fixed(2) >> split(2,2,2)
|
361
|
+
fixed(2) >> split(2,2,2,2)
|
362
362
|
|
363
363
|
country '226', none >> split(4,4) # Burkina Faso http://www.wtng.info/wtng-226-bf.html
|
364
364
|
country '227', none >> split(4,4) # Niger http://www.wtng.info/wtng-227-ne.html
|
@@ -397,6 +397,7 @@ Phony.define do
|
|
397
397
|
country '234',
|
398
398
|
match(/^([7-9]0\d)\d+$/) >> split(3,4) | # Mobile
|
399
399
|
match(/^(81\d)\d+$/) >> split(3,4) | # Mobile
|
400
|
+
match(/^(91\d)\d+$/) >> split(3,4) | # Mobile
|
400
401
|
one_of('1', '2') >> split(3,3..4) | # Lagos, Ibadan
|
401
402
|
one_of('9') >> split(3,4) | # Abuja
|
402
403
|
one_of((30..79).map(&:to_s)) >> split(3,2..3) | # 2-digit NDC
|
@@ -409,7 +410,9 @@ Phony.define do
|
|
409
410
|
country '239', fixed(1) >> split(3,3) # Sao Tome and Principe, http://www.wtng.info/wtng-239-st.html
|
410
411
|
|
411
412
|
country '240', none >> split(3,3,3) # Equatorial Guinea
|
412
|
-
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
|
413
416
|
country '242', # Congo http://www.wtng.info/wtng-242-cg.html
|
414
417
|
trunk('', :normalize => false) |
|
415
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
|
@@ -8,6 +8,9 @@ Phony.define do
|
|
8
8
|
trunk('0') |
|
9
9
|
one_of(%w(800)) >> split(3,2) | # freephone
|
10
10
|
one_of(%w(808)) >> split(3,2) | # payphone
|
11
|
+
one_of(%w(677 678)) >> matched_split(
|
12
|
+
/\A\d{4}\z/ => [3],
|
13
|
+
/\A\d+\z/ => [3,3]) |
|
11
14
|
one_of(%w(230)) >> matched_split(
|
12
15
|
/\A\d{4}\z/ => [4],
|
13
16
|
/\A\d+\z/ => [3,2]) |
|
@@ -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',
|
@@ -422,6 +429,8 @@ describe 'plausibility' do
|
|
422
429
|
'+381 60 123',
|
423
430
|
'+381 60 123 4567',
|
424
431
|
'+381 42 123 456',
|
432
|
+
'+381 677 123 456',
|
433
|
+
'+381 678 123 456',
|
425
434
|
'+381 9 123 4567',
|
426
435
|
'+381 60 123',
|
427
436
|
'+381 60 123 456 7890',
|
@@ -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
|
@@ -888,8 +895,8 @@ describe 'country descriptions' do
|
|
888
895
|
it_splits '50622345678', %w(506 2 234 5678)
|
889
896
|
end
|
890
897
|
describe "Côte d'Ivoire" do
|
891
|
-
it_splits '
|
892
|
-
it_splits '
|
898
|
+
it_splits '2250107335518', ['225', '01', '07', '33', '55', '18']
|
899
|
+
it_splits '2250237335518', ['225', '02', '37', '33', '55', '18']
|
893
900
|
end
|
894
901
|
describe 'Democratic Republic of Timor-Leste' do
|
895
902
|
it_splits '6701742945', ['670', false, '174', '2945']
|
@@ -952,6 +959,7 @@ describe 'country descriptions' do
|
|
952
959
|
end
|
953
960
|
describe 'Gabonese Republic' do
|
954
961
|
it_splits '2411834375', ['241', '1', '834', '375']
|
962
|
+
it_splits '24174012345', ['241', '74', '01', '23', '45']
|
955
963
|
end
|
956
964
|
describe 'Gambia' do
|
957
965
|
it_splits '2206683355', ['220', false, '668', '3355']
|
@@ -1156,6 +1164,17 @@ describe 'country descriptions' do
|
|
1156
1164
|
it_splits '2349087661234', %w(234 908 766 1234)
|
1157
1165
|
it_splits '2349097661234', %w(234 909 766 1234)
|
1158
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
|
+
|
1159
1178
|
it_splits '2348107661234', %w(234 810 766 1234)
|
1160
1179
|
it_splits '2348117661234', %w(234 811 766 1234)
|
1161
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.20
|
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-03-23 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.
|