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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e14e2c7d06393753fce0427aa20663f54f193738bfd16b540a36e76d5ba2acc
4
- data.tar.gz: 3d88d8b49030814139b5bcc32f6e527d8cf6320cd94276a24e9d80518dc00f28
3
+ metadata.gz: 191311d0c0169c0df4dd8b25dd66237bb90daf37806631092c4fe73881fade0c
4
+ data.tar.gz: f9c030830f9303fead7730266cc3bf08a3a260a1f34db0e81f47105cd9d576e4
5
5
  SHA512:
6
- metadata.gz: 1fa00cd7d9c0e5610eece54633e47f5af65996a35697b564da8b021e5280139c8151544c9356716db899c33e89aca258d7c150e95d01d6e01069baf122908797
7
- data.tar.gz: b3de10ec071c5db69937bc2bd169def6f56ab3a127d2f7d18945438b1da2fb2cd6e022ecb74db40ec1a2efe27e76b2b379ec96ac6b3dbd041789d24e5684a29b
6
+ metadata.gz: a36bf0ccdbfae65c24d192f6ed89b39a549643028bab3a14309f8ec9473b5c590dc58699dd26a913e530175fe03e2334ce0920bedffc2069a700588a834c8d18
7
+ data.tar.gz: 9d715c474e64dc92cf1d8de778f91676d4ab791f147f7a34694783dd64e737e751bf42cab231fd337a608b7527387770c9bca51a9cc992689c56cf8f67755aa0
@@ -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
- # http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000310001PDFE.pdf
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', fixed(1) >> split(3,3) # Gabonese Republic http://www.wtng.info/wtng-241-ga.html
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]) |
@@ -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) >> split(4,4)
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', '23', '24', '25', '26', '27', '28', '29', # Mallow, Bandon, Youghal, Fermoy, Macroom, Bantry, Skibbereen, Kanturk
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
@@ -104,6 +104,7 @@ mobile = [
104
104
  '84', # Vinaphone
105
105
  '85', # Vinaphone
106
106
  '86', # Viettel
107
+ '87', # Itelecom
107
108
  '88', # Vinaphone
108
109
  '89', # MobiFone,
109
110
  '90', # MobiFone
@@ -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 9358 8764'
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
- it_is_correct_for 'Gabonese Republic', :samples => '+241 1 627 739'
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 '22507335518', ['225', '07', '33', '55', '18']
890
- it_splits '22537335518', ['225', '37', '33', '55', '18']
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.13
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: 2020-05-24 00:00:00.000000000 Z
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: http://github.com/floere/phony
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.