phony 2.16.4 → 2.20.8
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 +5 -5
- data/README.textile +34 -6
- data/lib/phony/config.rb +91 -0
- data/lib/phony/countries/argentina.rb +355 -0
- data/lib/phony/countries/austria.rb +4 -2
- data/lib/phony/countries/bangladesh.rb +2 -0
- data/lib/phony/countries/belarus.rb +2 -0
- data/lib/phony/countries/brazil.rb +4 -2
- data/lib/phony/countries/cambodia.rb +3 -5
- data/lib/phony/countries/china.rb +7 -2
- data/lib/phony/countries/croatia.rb +2 -0
- data/lib/phony/countries/georgia.rb +2 -0
- data/lib/phony/countries/germany.rb +5 -2
- data/lib/phony/countries/guinea.rb +8 -5
- data/lib/phony/countries/india.rb +2 -0
- data/lib/phony/countries/indonesia.rb +2 -0
- data/lib/phony/countries/ireland.rb +27 -23
- data/lib/phony/countries/italy.rb +40 -18
- data/lib/phony/countries/japan.rb +61 -8
- data/lib/phony/countries/kyrgyzstan.rb +2 -0
- data/lib/phony/countries/latvia.rb +2 -0
- data/lib/phony/countries/libya.rb +3 -1
- data/lib/phony/countries/malaysia.rb +22 -2
- data/lib/phony/countries/moldova.rb +2 -0
- data/lib/phony/countries/montenegro.rb +2 -0
- data/lib/phony/countries/myanmar.rb +2 -0
- data/lib/phony/countries/namibia.rb +2 -0
- data/lib/phony/countries/nepal.rb +2 -0
- data/lib/phony/countries/netherlands.rb +2 -0
- data/lib/phony/countries/pakistan.rb +2 -0
- data/lib/phony/countries/paraguay.rb +2 -0
- data/lib/phony/countries/russia_kazakhstan_abkhasia_south_ossetia.rb +22 -13
- data/lib/phony/countries/saudi_arabia.rb +2 -0
- data/lib/phony/countries/serbia.rb +7 -1
- data/lib/phony/countries/somalia.rb +2 -0
- data/lib/phony/countries/south_korea.rb +7 -2
- data/lib/phony/countries/sweden.rb +2 -0
- data/lib/phony/countries/taiwan.rb +3 -0
- data/lib/phony/countries/tajikistan.rb +2 -0
- data/lib/phony/countries/turkmenistan.rb +2 -0
- data/lib/phony/countries/ukraine.rb +3 -0
- data/lib/phony/countries/united_kingdom.rb +5 -2
- data/lib/phony/countries/uruguay.rb +2 -0
- data/lib/phony/countries/vietnam.rb +93 -93
- data/lib/phony/countries/zimbabwe.rb +2 -0
- data/lib/phony/countries.rb +142 -64
- data/lib/phony/country.rb +15 -3
- data/lib/phony/country_codes.rb +16 -3
- data/lib/phony/dsl.rb +5 -3
- data/lib/phony/local_splitters/fixed.rb +2 -0
- data/lib/phony/national_code.rb +1 -1
- data/lib/phony/national_splitters/none.rb +1 -3
- data/lib/phony/trunk_code.rb +5 -5
- data/lib/phony.rb +62 -57
- data/spec/functional/config_spec.rb +44 -0
- data/spec/functional/plausibility_spec.rb +285 -18
- data/spec/lib/phony/countries_spec.rb +140 -39
- data/spec/lib/phony/country_codes_spec.rb +82 -58
- data/spec/lib/phony/country_spec.rb +29 -9
- data/spec/lib/phony/dsl_spec.rb +7 -3
- data/spec/lib/phony/local_splitters/regex_spec.rb +19 -15
- data/spec/lib/phony/national_code_spec.rb +15 -45
- data/spec/lib/phony/national_splitters/fixed_spec.rb +12 -16
- data/spec/lib/phony/national_splitters/none_spec.rb +3 -3
- data/spec/lib/phony/national_splitters/variable_spec.rb +9 -13
- data/spec/lib/phony/trunk_code_spec.rb +85 -0
- data/spec/lib/phony/vanity_spec.rb +4 -4
- data/spec/lib/phony_spec.rb +63 -67
- metadata +13 -8
@@ -5,7 +5,7 @@ require 'spec_helper'
|
|
5
5
|
describe 'country descriptions' do
|
6
6
|
|
7
7
|
def self.it_splits number, expected
|
8
|
-
it { Phony.split(number).
|
8
|
+
it { expect(Phony.split(number)).to eq expected }
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'regression' do
|
@@ -33,13 +33,13 @@ describe 'country descriptions' do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe 'Argentina' do
|
36
|
-
it_splits '541112345678', ['54', '11', '1234', '5678']
|
37
|
-
it_splits '542911234567', ['54', '291', '123', '4567']
|
38
|
-
it_splits '
|
39
|
-
it_splits '5491112345678', ['54', '911', '1234', '5678']
|
40
|
-
it_splits '5492201234567', ['54', '9220', '123', '4567']
|
41
|
-
it_splits '5492221123456', ['54', '92221', '12', '3456']
|
42
|
-
it_splits '548001234567', ['54', '800', '123', '4567']
|
36
|
+
it_splits '541112345678', ['54', '11', '1234', '5678'] # 2-digit area code / landline
|
37
|
+
it_splits '542911234567', ['54', '291', '123', '4567'] # 3-digit area code / landline
|
38
|
+
it_splits '542903123456', ['54', '2903', '12', '3456'] # 4-digit area code / landline
|
39
|
+
it_splits '5491112345678', ['54', '911', '1234', '5678'] # 2-digit area code / international mobile
|
40
|
+
it_splits '5492201234567', ['54', '9220', '123', '4567'] # 3-digit area code / international mobile
|
41
|
+
it_splits '5492221123456', ['54', '92221', '12', '3456'] # 4-digit area code / international mobile
|
42
|
+
it_splits '548001234567', ['54', '800', '123', '4567'] # Non-geographic number
|
43
43
|
end
|
44
44
|
|
45
45
|
describe 'Austria' do
|
@@ -103,8 +103,17 @@ 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 '
|
107
|
-
it_splits '
|
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 '32469123456', ['32', '469', '12', '34', '56'] # mobile ()
|
114
|
+
it_splits '32475123456', ['32', '475', '12', '34', '56'] # mobile (Proximus)
|
115
|
+
it_splits '32485123456', ['32', '485', '12', '34', '56'] # mobile (Telenet)
|
116
|
+
it_splits '32495123456', ['32', '495', '12', '34', '56'] # mobile (Orange)
|
108
117
|
it_splits '3270123123', ['32', '70', '123', '123'] # Bus Service?
|
109
118
|
it_splits '3278123123', ['32', '78', '123', '123'] # National rate service
|
110
119
|
it_splits '3290123123', ['32', '901', '23', '123'] # National rate service
|
@@ -138,9 +147,8 @@ describe 'country descriptions' do
|
|
138
147
|
end
|
139
148
|
|
140
149
|
describe 'Brazil' do
|
141
|
-
it_splits '
|
150
|
+
it_splits '551122341234', ['55', '11', '2234', '1234']
|
142
151
|
it_splits '5511981231234', ['55', '11', '98123', '1234'] # São Paulo's 9 digits mobile
|
143
|
-
it_splits '552181231234', ['55', '21', '8123', '1234']
|
144
152
|
it_splits '5521981231234', ['55', '21', '98123', '1234'] # Rio de Janeiro's 9 digits mobile
|
145
153
|
it_splits '551931311234', ['55', '19', '3131', '1234']
|
146
154
|
it_splits '5531991311234', ['55', '31', '99131', '1234'] # Belo Horizonte's 9th digit
|
@@ -148,6 +156,7 @@ describe 'country descriptions' do
|
|
148
156
|
it_splits '5579991311234', ['55', '79', '99131', '1234'] # Sergipe's 9th digit
|
149
157
|
it_splits '5547991311234', ['55', '47', '99131', '1234'] # Santa Catarina's 9th digit
|
150
158
|
it_splits '5541991311234', ['55', '41', '99131', '1234'] # Parana's 9th digit
|
159
|
+
it_splits '556734212121', ['55', '67', '3421', '2121']
|
151
160
|
|
152
161
|
context 'mobile numbers' do
|
153
162
|
%w{
|
@@ -179,6 +188,26 @@ describe 'country descriptions' do
|
|
179
188
|
it_splits '55199', ['55', '199', ""]
|
180
189
|
end
|
181
190
|
end
|
191
|
+
describe "Bulgaria" do
|
192
|
+
it_splits '35929284000', ['359', '2', '928', '4000'] # Sofia
|
193
|
+
it_splits '359878357523', ['359', '87', '8357', '523']
|
194
|
+
it_splits '3593012345', ['359', '30', '12345']
|
195
|
+
it_splits '35930123456', ['359', '30', '12', '3456']
|
196
|
+
it_splits '35943312345', ['359', '433', '12345']
|
197
|
+
it_splits '3596012345', ['359', '60', '12345']
|
198
|
+
it_splits '35969123456', ['359', '69', '123456']
|
199
|
+
it_splits '35970512345', ['359', '705', '12345']
|
200
|
+
it_splits '3597051234', ['359', '705', '1234']
|
201
|
+
it_splits '3597112345', ['359', '71', '12345']
|
202
|
+
it_splits '35979123456', ['359', '79', '123456']
|
203
|
+
it_splits '35980112345', ['359', '801', '12345']
|
204
|
+
it_splits '3598112345', ['359', '81', '12345']
|
205
|
+
it_splits '35986123456', ['359', '86', '123456']
|
206
|
+
it_splits '359881234567', ['359', '88', '1234', '567']
|
207
|
+
it_splits '35990123456', ['359', '90', '123456']
|
208
|
+
it_splits '359988123456', ['359', '988', '123456']
|
209
|
+
it_splits '359998123456', ['359', '998', '123456']
|
210
|
+
end
|
182
211
|
describe 'Cambodia' do
|
183
212
|
it_splits '85512236142', ["855", "12", "236", "142"] # mobile (Mobitel)
|
184
213
|
it_splits '855977100872', ["855", "97", "710", "0872"] # mobile (Metfone)
|
@@ -194,9 +223,24 @@ describe 'country descriptions' do
|
|
194
223
|
describe 'China' do
|
195
224
|
it_splits '862112345678', ['86', '21', '1234', '5678'] # Shanghai
|
196
225
|
it_splits '8675582193447', ['86', '755', '8219', '3447'] # Shenzhen
|
226
|
+
it_splits '869511234567', ['86', '951', '123', '4567'] # Yinchuan
|
227
|
+
|
228
|
+
context 'mobile numbers' do
|
229
|
+
%w{
|
230
|
+
130 131 132 133 134 135 136 137 138 139
|
231
|
+
145 146 147 148 149
|
232
|
+
150 151 152 153 155 156 157 158 159
|
233
|
+
162 165 166 167
|
234
|
+
170 171 172 173 174 175 176 177 178
|
235
|
+
180 181 182 183 184 185 186 187 188 189
|
236
|
+
190 191 192 193 195 196 197 198 199
|
237
|
+
}.each do |prefix|
|
238
|
+
it_splits "86#{prefix}12345678", ['86', prefix, '1234', '5678']
|
239
|
+
end
|
240
|
+
end
|
197
241
|
end
|
198
242
|
describe 'Colombia' do
|
199
|
-
it_splits '5711234567', ['57', '1', '123', '4567']
|
243
|
+
it_splits '5711234567', ['57', '1', '123', '4567'] # Outdated.
|
200
244
|
it_splits '573101234567', ['57', '310', '123', '4567'] # mobile
|
201
245
|
end
|
202
246
|
describe 'Croatia' do
|
@@ -271,7 +315,7 @@ describe 'country descriptions' do
|
|
271
315
|
it_splits '49800222340010', ['49', '800', '222', '340010'] # Service number
|
272
316
|
|
273
317
|
it_splits '4915111231234', ['49', '151', '1123', '1234'] # Mobile number
|
274
|
-
it_splits '4915771231234', ['49', '
|
318
|
+
it_splits '4915771231234', ['49', '1577', '123', '1234'] # Mobile number
|
275
319
|
it_splits '491601234567', ['49', '160', '1234', '567'] # Mobile number
|
276
320
|
it_splits '4916312345678', ['49', '163', '1234', '5678'] # Mobile number
|
277
321
|
it_splits '4915211231234', ['49', '1521', '123', '1234'] # Mobile number
|
@@ -309,7 +353,8 @@ describe 'country descriptions' do
|
|
309
353
|
end
|
310
354
|
|
311
355
|
describe 'Hong Kong' do
|
312
|
-
it_splits '85212341234', ['852', false, '1234', '1234']
|
356
|
+
it_splits '85212341234', ['852', false, '1234', '1234'] #Other Numbers
|
357
|
+
it_splits '852800121234', ['852', '800', '12', '1234'] #Toll Free
|
313
358
|
end
|
314
359
|
|
315
360
|
describe 'Hungary' do
|
@@ -380,6 +425,7 @@ describe 'country descriptions' do
|
|
380
425
|
it_splits '35311234567', ['353', '1', '123', '4567'] # Dublin, 7 digit subscriber #
|
381
426
|
it_splits '353539233333', ['353', '53', '923', '3333'] # Wexford, 7 digit subscriber
|
382
427
|
it_splits '3532212345', ['353', '22', '12345'] # Mallow, 5 digit subscriber #
|
428
|
+
it_splits '353441234567', ['353', '44', '123', '4567'] # Mullingar, Castlepollard, Tyrellspass 7 digit subscriber #
|
383
429
|
it_splits '35345123456', ['353', '45', '123456'] # Naas, 6 digit subscriber #
|
384
430
|
it_splits '353801234567', ['353', '80', '123', '4567'] # Mobile
|
385
431
|
it_splits '353761234567', ['353', '76', '123', '4567'] # VoIP
|
@@ -388,14 +434,16 @@ describe 'country descriptions' do
|
|
388
434
|
end
|
389
435
|
|
390
436
|
describe 'Israel (972)' do
|
391
|
-
it_splits '972100', ['972', '1', '00']
|
392
|
-
it_splits '97221231234', ['972', '2', '123', '1234']
|
393
|
-
it_splits '97282411234', ['972', '8', '241', '1234']
|
394
|
-
it_splits '97291231234', ['972', '9', '123', '1234']
|
395
|
-
it_splits '972501231234', ['972', '50', '123', '1234']
|
396
|
-
it_splits '972591231234', ['972', '59', '123', '1234']
|
397
|
-
it_splits '972771231234', ['972', '77', '123', '1234']
|
437
|
+
it_splits '972100', ['972', '1', '00'] # Police
|
438
|
+
it_splits '97221231234', ['972', '2', '123', '1234'] # Jerusalem Area
|
439
|
+
it_splits '97282411234', ['972', '8', '241', '1234'] # Gaza Strip (Palestine)
|
440
|
+
it_splits '97291231234', ['972', '9', '123', '1234'] # Sharon Area
|
441
|
+
it_splits '972501231234', ['972', '50', '123', '1234'] # Mobile (Pelephone)
|
442
|
+
it_splits '972591231234', ['972', '59', '123', '1234'] # Mobile Jawwal (Palestine)
|
443
|
+
it_splits '972771231234', ['972', '77', '123', '1234'] # Cable Phone Services
|
398
444
|
it_splits '9721700123123', ['972', '1', '700', '123', '123'] # Cable Phone Services
|
445
|
+
it_splits '972511234567', ['972', '51', '123', '4567'] # Mobile (We4G)
|
446
|
+
it_splits '972791111111', ['972', '79', '111', '1111'] # Landline (Hallo, Cellact, Telzar)
|
399
447
|
end
|
400
448
|
describe 'Israel (970)' do
|
401
449
|
it_splits '97021231234', ['970', '2', '123', '1234'] # Jerusalem Area
|
@@ -412,8 +460,9 @@ describe 'country descriptions' do
|
|
412
460
|
it_splits '3934869528123',['39', '348', '695', '2812', '3'] # Mobile (8-digit subscriber no - new)
|
413
461
|
it_splits '393357210488', ['39', '335', '721', '0488'] # Mobile
|
414
462
|
it_splits '393248644272', ['39', '324', '864', '4272'] # Mobile
|
415
|
-
it_splits '
|
416
|
-
it_splits '
|
463
|
+
it_splits '390612341', ['39', '06', '12341'] # Roma 5 digit
|
464
|
+
it_splits '3906123412', ['39', '06', '1234', '12'] # Roma 6 digit
|
465
|
+
it_splits '39061234123', ['39', '06', '1234', '123'] # Roma 7 digit
|
417
466
|
it_splits '390612341234', ['39', '06', '1234', '1234'] # Roma 8 digit
|
418
467
|
it_splits '3902888388', ['39', '02', '8883', '88'] # Milano 6 digit
|
419
468
|
it_splits '39028883888', ['39', '02', '8883', '888'] # Milano 7 digit
|
@@ -422,10 +471,12 @@ describe 'country descriptions' do
|
|
422
471
|
it_splits '3903123391', ['39', '031', '23391'] # Como
|
423
472
|
it_splits '390909709511', ['39', '090', '9709511'] # Barcellona
|
424
473
|
it_splits '390471811353', ['39', '0471', '811', '353'] # Bolzano
|
474
|
+
it_splits '3905745730', ['39', '0574', '5730'] # Prato
|
425
475
|
end
|
426
476
|
describe 'Japan' do
|
427
477
|
it_splits '81312345678', %w(81 3 1234 5678) # Tokyo
|
428
478
|
it_splits '81612345678', %w(81 6 1234 5678) # Osaka
|
479
|
+
it_splits '818001001234', %w(81 800 100 1234) # Freephone
|
429
480
|
it_splits '81120123456', %w(81 120 123 456) # Freephone
|
430
481
|
it_splits '81111234567', %w(81 11 123 4567)
|
431
482
|
it_splits '81123123456', %w(81 123 12 3456)
|
@@ -436,12 +487,18 @@ describe 'country descriptions' do
|
|
436
487
|
it_splits '817012345678', %w(81 70 1234 5678) # PHS
|
437
488
|
it_splits '818012345678', %w(81 80 1234 5678) # Cellular
|
438
489
|
it_splits '819012345678', %w(81 90 1234 5678) # Cellular
|
490
|
+
it_splits '810570123456', %w(81 570 123 456) # Navi-dial
|
491
|
+
it_splits '810180123456', %w(81 180 123 456) # Tele-gong/Tele-dome
|
439
492
|
end
|
440
493
|
describe 'Kenya' do
|
441
494
|
it_splits '254201234567', ['254', '20', '1234567'] # Nairobi
|
442
495
|
it_splits '254111234567', ['254', '11', '1234567'] # Mombasa
|
443
496
|
it_splits '254723100220', ['254', '723', '100220'] # Mombasa
|
444
497
|
end
|
498
|
+
describe 'Kosovo' do
|
499
|
+
it_splits '38329000000', ['383', '29', '000', '000'] # Landline
|
500
|
+
it_splits '38344000000', ['383', '44', '000', '000'] # Mobile
|
501
|
+
end
|
445
502
|
describe 'Kyrgyzstan' do
|
446
503
|
it_splits '996312212345', %w(996 312 212 345)
|
447
504
|
it_splits '996315212345', %w(996 315 212 345)
|
@@ -536,6 +593,10 @@ describe 'country descriptions' do
|
|
536
593
|
it_splits '31222123456', ['31', '222', '123', '456']
|
537
594
|
it_splits '3197012345678', ['31', '970', '1234', '5678'] # machine-to-machine
|
538
595
|
end
|
596
|
+
describe 'Norfolk Island' do
|
597
|
+
it_splits '672321234', ['672', '3', '21', '234'] # fixed
|
598
|
+
it_splits '672351234', ['672', '3', '51', '234'] # mobile
|
599
|
+
end
|
539
600
|
describe 'Norway' do
|
540
601
|
it_splits '4721234567', ['47',false,'21','23','45','67']
|
541
602
|
it_splits '4731234567', ['47',false,'31','23','45','67']
|
@@ -563,12 +624,13 @@ describe 'country descriptions' do
|
|
563
624
|
it_splits '595961611234', %w(595 96 161 1234)
|
564
625
|
end
|
565
626
|
describe 'Peru' do
|
566
|
-
it_splits '
|
627
|
+
it_splits '5111231234', ['51', '1', '123', '1234'] # Lima
|
567
628
|
it_splits '51912341234', ['51', '9', '1234', '1234'] # mobile
|
568
|
-
it_splits '
|
629
|
+
it_splits '5184123123', ['51', '84', '123', '123'] # Cuzco, best effort
|
569
630
|
end
|
570
631
|
describe 'Philippines' do
|
571
632
|
it_splits '6321234567', ['63', '2', '1234567']
|
633
|
+
it_splits '63289889999', ['63', '2', '89889999']
|
572
634
|
it_splits '6321234567890', ['63', '2', '1234567890']
|
573
635
|
it_splits '632123456789012', ['63', '2', '123456789012']
|
574
636
|
it_splits '639121234567', ['63', '912', '1234567']
|
@@ -616,7 +678,7 @@ describe 'country descriptions' do
|
|
616
678
|
it_splits '79991234567', ['7', '999', '123', '45', '67'] # Russia 3-digit
|
617
679
|
it_splits '7840121212', ['7', '840', '12', '1212'] # Abhasia
|
618
680
|
it_splits '7799121212', ['7', '799', '12', '1212'] # Kazachstan
|
619
|
-
it_splits '7995344121212', ['7','
|
681
|
+
it_splits '7995344121212', ['7', '995', '344','12','1212'] # South Osetia
|
620
682
|
it_splits '7209175276', ['7', '209', '17', '5276'] # Fantasy number
|
621
683
|
end
|
622
684
|
|
@@ -624,6 +686,7 @@ describe 'country descriptions' do
|
|
624
686
|
it_splits '250781234567', ['250', '78', '1234567'] # mobile
|
625
687
|
it_splits '250721234567', ['250', '72', '1234567'] # mobile
|
626
688
|
it_splits '250731234567', ['250', '73', '1234567'] # mobile
|
689
|
+
it_splits '250791234567', ['250', '79', '1234567'] # mobile
|
627
690
|
it_splits '250251234567', ['250', '25', '1234567'] # fixed
|
628
691
|
it_splits '25006123456', ['250', '06', '123456'] # fixed
|
629
692
|
end
|
@@ -706,6 +769,7 @@ describe 'country descriptions' do
|
|
706
769
|
describe 'Switzerland' do
|
707
770
|
it_splits '41443643532', ['41', '44', '364', '35', '32'] # Zurich (usually)
|
708
771
|
it_splits '41800334455', ['41', '800', '334', '455'] # Service number
|
772
|
+
it_splits '41860443643532', ['41', '860', '44', '364', '35', '32'] # Voicemail access
|
709
773
|
it_splits '41900123456', ['41', '900', '123', '456'] # Business Number
|
710
774
|
it_splits '41901123456', ['41', '901', '123', '456'] # Business Number Entertainment
|
711
775
|
it_splits '41906123456', ['41', '906', '123', '456'] # Business Number Adult Entertainment
|
@@ -787,13 +851,16 @@ describe 'country descriptions' do
|
|
787
851
|
describe 'Vietnam' do
|
788
852
|
it_splits '8498123456', ['84', '98', '123456'] # Viettel Mobile
|
789
853
|
it_splits '8499612345', ['84', '99', '612345'] # GTel
|
790
|
-
it_splits '
|
854
|
+
it_splits '842421234567', ['84', '24', '2123', '4567'] # Hanoi
|
855
|
+
it_splits '842841234567', ['84', '28', '4123', '4567'] # Ho Chi Minh City
|
856
|
+
it_splits '84341234567', ['84', '34', '1234567'] # Viettel
|
857
|
+
it_splits '84841234567', ['84', '84', '1234567'] # Vinaphone
|
791
858
|
end
|
792
859
|
describe 'Zambia' do
|
793
860
|
it_splits '260211123456', ['260', '211', '123456'] # Fixed
|
794
|
-
it_splits '260955123456', ['260', '
|
795
|
-
it_splits '260967123456', ['260', '
|
796
|
-
it_splits '260978123456', ['260', '
|
861
|
+
it_splits '260955123456', ['260', '95', '512', '3456'] # Mobile
|
862
|
+
it_splits '260967123456', ['260', '96', '712', '3456'] # Mobile
|
863
|
+
it_splits '260978123456', ['260', '97', '812', '3456'] # Mobile
|
797
864
|
it_splits '260800123456', ['260', '800', '123', '456'] # Toll free
|
798
865
|
end
|
799
866
|
describe 'New Zealand' do
|
@@ -808,7 +875,8 @@ describe 'country descriptions' do
|
|
808
875
|
it_splits '6737932744', %w(673 7 932 744)
|
809
876
|
end
|
810
877
|
describe 'Burkina Faso' do
|
811
|
-
it_splits '22667839323', ['226', false, '
|
878
|
+
it_splits '22667839323', ['226', false, '67', '83', '93', '23']
|
879
|
+
it_splits '22601234567', ['226', false, '01', '23', '45', '67'] # 0 not removed.
|
812
880
|
end
|
813
881
|
describe 'Burundi' do
|
814
882
|
it_splits '25712345678', ['257', false, '1234', '5678']
|
@@ -839,8 +907,8 @@ describe 'country descriptions' do
|
|
839
907
|
it_splits '50622345678', %w(506 2 234 5678)
|
840
908
|
end
|
841
909
|
describe "Côte d'Ivoire" do
|
842
|
-
it_splits '
|
843
|
-
it_splits '
|
910
|
+
it_splits '2250107335518', ['225', '01', '07', '33', '55', '18']
|
911
|
+
it_splits '2250237335518', ['225', '02', '37', '33', '55', '18']
|
844
912
|
end
|
845
913
|
describe 'Democratic Republic of Timor-Leste' do
|
846
914
|
it_splits '6701742945', ['670', false, '174', '2945']
|
@@ -903,6 +971,7 @@ describe 'country descriptions' do
|
|
903
971
|
end
|
904
972
|
describe 'Gabonese Republic' do
|
905
973
|
it_splits '2411834375', ['241', '1', '834', '375']
|
974
|
+
it_splits '24174012345', ['241', '74', '01', '23', '45']
|
906
975
|
end
|
907
976
|
describe 'Gambia' do
|
908
977
|
it_splits '2206683355', ['220', false, '668', '3355']
|
@@ -948,7 +1017,7 @@ describe 'country descriptions' do
|
|
948
1017
|
it_splits '96287901456', %w(962 8790 1456)
|
949
1018
|
end
|
950
1019
|
describe 'Kiribati (Republic of)' do
|
951
|
-
it_splits '
|
1020
|
+
it_splits '68634814527', ['686', false, '34814527']
|
952
1021
|
end
|
953
1022
|
describe "Democratic People's Republic of Korea" do
|
954
1023
|
it_splits '850212345', %w(850 2 123 45)
|
@@ -990,11 +1059,14 @@ describe 'country descriptions' do
|
|
990
1059
|
it_splits '21822123456', %w(218 22 123 456)
|
991
1060
|
it_splits '218211234456', %w(218 21 1234 456)
|
992
1061
|
it_splits '218911234456', %w(218 91 1234 456)
|
1062
|
+
it_splits '218941234456', %w(218 94 1234 456)
|
1063
|
+
it_splits '218951234456', %w(218 95 1234 456)
|
993
1064
|
end
|
994
1065
|
describe 'Madagascar' do
|
995
|
-
it_splits '
|
996
|
-
it_splits '
|
997
|
-
it_splits '
|
1066
|
+
it_splits '261202254716', ['261', '20', *%w(22 547 16)]
|
1067
|
+
it_splits '261320254716', ['261', '32', *%w(02 547 16)]
|
1068
|
+
it_splits '261330254716', ['261', '33', *%w(02 547 16)]
|
1069
|
+
it_splits '261340254716', ['261', '34', *%w(02 547 16)]
|
998
1070
|
end
|
999
1071
|
describe 'Malawi' do
|
1000
1072
|
it_splits '2651725123', ['265', false, '1725', '123']
|
@@ -1018,7 +1090,8 @@ describe 'country descriptions' do
|
|
1018
1090
|
it_splits '22212345678', ['222', false, '1234', '5678']
|
1019
1091
|
end
|
1020
1092
|
describe 'Mauritius' do
|
1021
|
-
it_splits '23059518919', ['230', false, '
|
1093
|
+
it_splits '23059518919', ['230', false, '5', '951', '8919']
|
1094
|
+
it_splits '2302600070', ['230', false, '260', '0070']
|
1022
1095
|
end
|
1023
1096
|
describe 'Micronesia (Federated States of)' do
|
1024
1097
|
it_splits '6911991754', ['691', false, '199', '1754']
|
@@ -1071,6 +1144,8 @@ describe 'country descriptions' do
|
|
1071
1144
|
describe 'Nigeria' do
|
1072
1145
|
it_splits '23411231234', %w(234 1 123 1234) # Lagos
|
1073
1146
|
|
1147
|
+
it_splits '23445123456', %w(234 45 123 456) # Ogoja
|
1148
|
+
|
1074
1149
|
# mobile numbers
|
1075
1150
|
it_splits '2347007661234', %w(234 700 766 1234)
|
1076
1151
|
it_splits '2347017661234', %w(234 701 766 1234)
|
@@ -1105,6 +1180,17 @@ describe 'country descriptions' do
|
|
1105
1180
|
it_splits '2349087661234', %w(234 908 766 1234)
|
1106
1181
|
it_splits '2349097661234', %w(234 909 766 1234)
|
1107
1182
|
|
1183
|
+
it_splits '2349107661234', %w(234 910 766 1234)
|
1184
|
+
it_splits '2349117661234', %w(234 911 766 1234)
|
1185
|
+
it_splits '2349127661234', %w(234 912 766 1234)
|
1186
|
+
it_splits '2349137661234', %w(234 913 766 1234)
|
1187
|
+
it_splits '2349147661234', %w(234 914 766 1234)
|
1188
|
+
it_splits '2349157661234', %w(234 915 766 1234)
|
1189
|
+
it_splits '2349167661234', %w(234 916 766 1234)
|
1190
|
+
it_splits '2349177661234', %w(234 917 766 1234)
|
1191
|
+
it_splits '2349187661234', %w(234 918 766 1234)
|
1192
|
+
it_splits '2349197661234', %w(234 919 766 1234)
|
1193
|
+
|
1108
1194
|
it_splits '2348107661234', %w(234 810 766 1234)
|
1109
1195
|
it_splits '2348117661234', %w(234 811 766 1234)
|
1110
1196
|
it_splits '2348127661234', %w(234 812 766 1234)
|
@@ -1140,6 +1226,9 @@ describe 'country descriptions' do
|
|
1140
1226
|
it_splits '6752751234', %w(675 275 1234)
|
1141
1227
|
it_splits '67527912', %w(675 279 12)
|
1142
1228
|
it_splits '67511512345678', %w(675 115 1234 5678)
|
1229
|
+
it_splits '67574123456', %w(675 74 123 456)
|
1230
|
+
it_splits '67573123456', %w(675 731 23 456)
|
1231
|
+
it_splits '67577301234', %w(675 7730 1 234)
|
1143
1232
|
end
|
1144
1233
|
describe 'Reunion / Mayotte (new)' do
|
1145
1234
|
it_splits '262594399265', ['262', '594', '39', '92', '65']
|
@@ -1153,6 +1242,7 @@ describe 'country descriptions' do
|
|
1153
1242
|
describe 'Samoa (Independent State of)' do
|
1154
1243
|
it_splits '685800123', ['685', false, '800', '123']
|
1155
1244
|
it_splits '68561123', ['685', false, '61', '123']
|
1245
|
+
it_splits '6857112345', ['685', false, '711', '2345']
|
1156
1246
|
it_splits '6857212345', ['685', false, '721', '2345']
|
1157
1247
|
it_splits '685830123', ['685', false, '830', '123']
|
1158
1248
|
it_splits '685601234', ['685', false, '601', '234']
|
@@ -1241,6 +1331,7 @@ describe 'country descriptions' do
|
|
1241
1331
|
it_splits '88633123456', %w(886 3 312 3456)
|
1242
1332
|
it_splits '88637123456', %w(886 37 12 3456)
|
1243
1333
|
it_splits '88682712345', %w(886 82 71 2345)
|
1334
|
+
it_splits '886801123123', %w(886 801 123 123)
|
1244
1335
|
it_splits '88689712345', %w(886 89 71 2345)
|
1245
1336
|
it_splits '88682672345', %w(886 826 7 2345)
|
1246
1337
|
it_splits '88683672345', %w(886 836 7 2345)
|
@@ -1304,6 +1395,8 @@ describe 'country descriptions' do
|
|
1304
1395
|
describe 'United Arab Emirates' do
|
1305
1396
|
it_splits '97180012', %w(971 800 12)
|
1306
1397
|
it_splits '971800123456789', %w(971 800 12 345 6789)
|
1398
|
+
it_splits '97180012345678', %w(971 800 12 345 678)
|
1399
|
+
it_splits '9718001234567', %w(971 800 12 345 67)
|
1307
1400
|
it_splits '97121234567', %w(971 2 123 4567)
|
1308
1401
|
it_splits '971506412345', %w(971 50 641 2345)
|
1309
1402
|
it_splits '971600641234', %w(971 600 641 234)
|
@@ -1349,6 +1442,14 @@ describe 'country descriptions' do
|
|
1349
1442
|
it_splits number, ['263', prefix, '234', '5678']
|
1350
1443
|
end
|
1351
1444
|
end
|
1445
|
+
|
1446
|
+
describe 'Universal International Freephone' do
|
1447
|
+
it_splits '80012345678', ['800', false, '12345678']
|
1448
|
+
end
|
1449
|
+
|
1450
|
+
describe 'Shared-Cost Service' do
|
1451
|
+
it_splits '80812345678', ['808', false, '12345678']
|
1452
|
+
end
|
1352
1453
|
end
|
1353
1454
|
|
1354
1455
|
end
|