phony 2.18.11 → 2.18.17

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: 0dec25f641694c9f28c6d38038e650ee1353ffe7d7756b11f3675a8d2e2edb5d
4
- data.tar.gz: 46c14ea65fd3659bd58ae8f6764c723c0647b3bb172b535a1cfc0753b44663c6
3
+ metadata.gz: 2e481c3598ba7449e6772de7ddf1882f9422aad76f2fe91334f85686bb3587ac
4
+ data.tar.gz: c8dbdb47f2a242d2d564b2f4a5163bc3845c8aaf9f0f40ad907d40748f7c52ea
5
5
  SHA512:
6
- metadata.gz: 25fa4f7c4212f45a77cd98bc18c978048d11579de5bb70680108a7e84cbe91a2ffe8935a94a9bbd4f78e9e9a32b675b341ddcaa4367666a0f7d386069352e3a8
7
- data.tar.gz: 26b570a3ddbe060b034841ffad3ecf7548d2ed74644e6a56b8790582c66b2144610e99c8bb817ecdcbdd4ca92acc25f19077df08bc2ccc73335bbf8c2fb3dedf
6
+ metadata.gz: 53bffe4e61b1e0482bd3e725e6d22d329283dcf2057fa93c1386edaec998c3f2daac28bab1d87d4b57fb0ac206a6110df970db88a308e150a1308798eb2d18dc
7
+ data.tar.gz: 623709a2ca48f3038db1f8f12e46bc34222d1d1d35831c8d2a5a10b78ed20d136d917d31b6b6d33d3f193c2c83d339ce4d37a434b5111220b2bba0e73bdf6592
@@ -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(/^(456)\d{6}$/) >> split(2,2,2) | # Mobile Vikings
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
@@ -407,7 +409,9 @@ Phony.define do
407
409
  country '239', fixed(1) >> split(3,3) # Sao Tome and Principe, http://www.wtng.info/wtng-239-st.html
408
410
 
409
411
  country '240', none >> split(3,3,3) # Equatorial Guinea
410
- country '241', fixed(1) >> split(3,3) # Gabonese Republic http://www.wtng.info/wtng-241-ga.html
412
+ country '241',
413
+ match(/^(\d)\d{6}$/) >> split(3,3) | # Gabonese Republic http://www.wtng.info/wtng-241-ga.html
414
+ match(/^(\d\d)\d{6}$/) >> split(2,2,2) # 2019 update https://en.wikipedia.org/wiki/Telephone_numbers_in_Gabon
411
415
  country '242', # Congo http://www.wtng.info/wtng-242-cg.html
412
416
  trunk('', :normalize => false) |
413
417
  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) >> 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
@@ -12,9 +12,9 @@ module Phony
12
12
  #
13
13
  # Phony.define.country ...
14
14
  #
15
- def self.define
15
+ def self.define(&block)
16
16
  dsl = DSL.new
17
- dsl.instance_eval(&Proc.new) if block_given?
17
+ dsl.instance_eval(&block) if block_given?
18
18
  dsl
19
19
  end
20
20
 
@@ -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,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 '32475279584', ['32', '475', '27', '95', '84'] # mobile
107
- it_splits '32468279584', ['32', '468', '27', '95', '84'] # mobile (Telenet)
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']
@@ -89,4 +89,4 @@ describe Phony::Country do
89
89
  end
90
90
  end
91
91
 
92
- end
92
+ end
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.11
4
+ version: 2.18.17
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: 2019-12-15 00:00:00.000000000 Z
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: 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.