phony 2.16.4 → 2.20.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|