phony 1.9.0 → 2.19.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.textile +64 -112
- data/lib/phony/config.rb +91 -0
- data/lib/phony/countries/argentina.rb +355 -0
- data/lib/phony/countries/austria.rb +56 -22
- data/lib/phony/countries/bangladesh.rb +57 -0
- data/lib/phony/countries/belarus.rb +133 -0
- data/lib/phony/countries/brazil.rb +101 -95
- data/lib/phony/countries/cambodia.rb +131 -0
- data/lib/phony/countries/china.rb +13 -6
- data/lib/phony/countries/croatia.rb +23 -0
- data/lib/phony/countries/georgia.rb +94 -0
- data/lib/phony/countries/germany.rb +66 -42
- data/lib/phony/countries/guinea.rb +46 -0
- data/lib/phony/countries/india.rb +50 -0
- data/lib/phony/countries/indonesia.rb +55 -0
- data/lib/phony/countries/ireland.rb +35 -28
- data/lib/phony/countries/italy.rb +272 -166
- data/lib/phony/countries/japan.rb +468 -0
- data/lib/phony/countries/kyrgyzstan.rb +120 -0
- data/lib/phony/countries/latvia.rb +43 -0
- data/lib/phony/countries/libya.rb +116 -0
- data/lib/phony/countries/malaysia.rb +31 -7
- data/lib/phony/countries/moldova.rb +53 -0
- data/lib/phony/countries/montenegro.rb +30 -0
- data/lib/phony/countries/myanmar.rb +55 -0
- data/lib/phony/countries/namibia.rb +37 -0
- data/lib/phony/countries/nepal.rb +73 -0
- data/lib/phony/countries/netherlands.rb +17 -5
- data/lib/phony/countries/pakistan.rb +121 -0
- data/lib/phony/countries/paraguay.rb +147 -0
- data/lib/phony/countries/{russia_kazakhstan_abhasia_south_osetia.rb → russia_kazakhstan_abkhasia_south_ossetia.rb} +35 -24
- data/lib/phony/countries/saudi_arabia.rb +40 -0
- data/lib/phony/countries/serbia.rb +47 -0
- data/lib/phony/countries/somalia.rb +26 -0
- data/lib/phony/countries/south_korea.rb +19 -10
- data/lib/phony/countries/sweden.rb +58 -38
- data/lib/phony/countries/taiwan.rb +28 -0
- data/lib/phony/countries/tajikistan.rb +79 -0
- data/lib/phony/countries/turkmenistan.rb +76 -0
- data/lib/phony/countries/ukraine.rb +630 -0
- data/lib/phony/countries/united_kingdom.rb +639 -44
- data/lib/phony/countries/uruguay.rb +53 -0
- data/lib/phony/countries/vietnam.rb +133 -0
- data/lib/phony/countries/zimbabwe.rb +39 -0
- data/lib/phony/countries.rb +901 -301
- data/lib/phony/country.rb +177 -20
- data/lib/phony/country_codes.rb +119 -101
- data/lib/phony/dsl.rb +113 -68
- data/lib/phony/local_splitters/fixed.rb +25 -1
- data/lib/phony/local_splitters/regex.rb +16 -2
- data/lib/phony/national_code.rb +7 -7
- data/lib/phony/national_splitters/default.rb +35 -3
- data/lib/phony/national_splitters/dsl.rb +12 -7
- data/lib/phony/national_splitters/fixed.rb +7 -1
- data/lib/phony/national_splitters/none.rb +7 -3
- data/lib/phony/national_splitters/regex.rb +6 -0
- data/lib/phony/national_splitters/variable.rb +13 -9
- data/lib/phony/trunk_code.rb +57 -0
- data/lib/phony/vanity.rb +3 -3
- data/lib/phony.rb +239 -55
- data/spec/functional/config_spec.rb +44 -0
- data/spec/functional/plausibility_spec.rb +656 -0
- data/spec/lib/phony/countries_spec.rb +1207 -119
- data/spec/lib/phony/country_codes_spec.rb +99 -81
- data/spec/lib/phony/country_spec.rb +54 -14
- data/spec/lib/phony/dsl_spec.rb +2 -2
- data/spec/lib/phony/local_splitters/fixed_spec.rb +4 -4
- data/spec/lib/phony/local_splitters/regex_spec.rb +50 -2
- data/spec/lib/phony/national_code_spec.rb +34 -34
- data/spec/lib/phony/national_splitters/default_spec.rb +34 -0
- data/spec/lib/phony/national_splitters/fixed_spec.rb +12 -6
- data/spec/lib/phony/national_splitters/none_spec.rb +13 -3
- data/spec/lib/phony/national_splitters/regex_spec.rb +1 -1
- data/spec/lib/phony/national_splitters/variable_spec.rb +11 -5
- data/spec/lib/phony/trunk_code_spec.rb +85 -0
- data/spec/lib/phony/vanity_spec.rb +15 -19
- data/spec/lib/phony_spec.rb +59 -277
- metadata +67 -34
- data/lib/phony/validator.rb +0 -26
- data/lib/phony/validators.rb +0 -88
- data/spec/lib/phony/validations_spec.rb +0 -109
@@ -0,0 +1,630 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Ukraine
|
4
|
+
# https://www.numberingplans.com/?page=dialling&sub=areacodes
|
5
|
+
|
6
|
+
ndcs_with_7_subscriber_numbers = %w(
|
7
|
+
32
|
8
|
+
33
|
9
|
+
34
|
10
|
+
35
|
11
|
+
36
|
12
|
+
37
|
13
|
+
38
|
14
|
+
41
|
15
|
+
43
|
16
|
+
44
|
17
|
+
45
|
18
|
+
46
|
19
|
+
47
|
20
|
+
48
|
21
|
+
51
|
22
|
+
52
|
23
|
+
53
|
24
|
+
54
|
25
|
+
55
|
26
|
+
56
|
27
|
+
57
|
28
|
+
61
|
29
|
+
62
|
30
|
+
64
|
31
|
+
65
|
32
|
+
69
|
33
|
+
72
|
34
|
+
)
|
35
|
+
|
36
|
+
ndcs_with_6_subscriber_numbers = %w(
|
37
|
+
312
|
38
|
+
322
|
39
|
+
332
|
40
|
+
342
|
41
|
+
352
|
42
|
+
362
|
43
|
+
372
|
44
|
+
382
|
45
|
+
412
|
46
|
+
432
|
47
|
+
462
|
48
|
+
472
|
49
|
+
482
|
50
|
+
512
|
51
|
+
522
|
52
|
+
532
|
53
|
+
542
|
54
|
+
552
|
55
|
+
562
|
56
|
+
564
|
57
|
+
572
|
58
|
+
612
|
59
|
+
622
|
60
|
+
629
|
61
|
+
642
|
62
|
+
652
|
63
|
+
654
|
64
|
+
692
|
65
|
+
)
|
66
|
+
|
67
|
+
ndcs_with_5_subscriber_numbers = %w(
|
68
|
+
3122
|
69
|
+
3131
|
70
|
+
3132
|
71
|
+
3133
|
72
|
+
3134
|
73
|
+
3135
|
74
|
+
3136
|
75
|
+
3137
|
76
|
+
3141
|
77
|
+
3143
|
78
|
+
3144
|
79
|
+
3145
|
80
|
+
3146
|
81
|
+
3230
|
82
|
+
3231
|
83
|
+
3234
|
84
|
+
3236
|
85
|
+
3238
|
86
|
+
3239
|
87
|
+
3241
|
88
|
+
3244
|
89
|
+
3245
|
90
|
+
3247
|
91
|
+
3248
|
92
|
+
3249
|
93
|
+
3251
|
94
|
+
3252
|
95
|
+
3254
|
96
|
+
3255
|
97
|
+
3257
|
98
|
+
3259
|
99
|
+
3261
|
100
|
+
3263
|
101
|
+
3264
|
102
|
+
3265
|
103
|
+
3266
|
104
|
+
3269
|
105
|
+
3322
|
106
|
+
3342
|
107
|
+
3344
|
108
|
+
3346
|
109
|
+
3352
|
110
|
+
3357
|
111
|
+
3362
|
112
|
+
3363
|
113
|
+
3365
|
114
|
+
3366
|
115
|
+
3368
|
116
|
+
3372
|
117
|
+
3374
|
118
|
+
3376
|
119
|
+
3377
|
120
|
+
3379
|
121
|
+
3430
|
122
|
+
3431
|
123
|
+
3432
|
124
|
+
3433
|
125
|
+
3434
|
126
|
+
3435
|
127
|
+
3436
|
128
|
+
3438
|
129
|
+
3471
|
130
|
+
3472
|
131
|
+
3474
|
132
|
+
3475
|
133
|
+
3476
|
134
|
+
3477
|
135
|
+
3478
|
136
|
+
3479
|
137
|
+
3540
|
138
|
+
3541
|
139
|
+
3542
|
140
|
+
3543
|
141
|
+
3544
|
142
|
+
3546
|
143
|
+
3547
|
144
|
+
3548
|
145
|
+
3549
|
146
|
+
3550
|
147
|
+
3551
|
148
|
+
3552
|
149
|
+
3554
|
150
|
+
3555
|
151
|
+
3556
|
152
|
+
3557
|
153
|
+
3558
|
154
|
+
3632
|
155
|
+
3633
|
156
|
+
3634
|
157
|
+
3635
|
158
|
+
3636
|
159
|
+
3650
|
160
|
+
3651
|
161
|
+
3652
|
162
|
+
3653
|
163
|
+
3654
|
164
|
+
3656
|
165
|
+
3657
|
166
|
+
3658
|
167
|
+
3659
|
168
|
+
3722
|
169
|
+
3730
|
170
|
+
3732
|
171
|
+
3733
|
172
|
+
3734
|
173
|
+
3735
|
174
|
+
3736
|
175
|
+
3737
|
176
|
+
3738
|
177
|
+
3739
|
178
|
+
3740
|
179
|
+
3741
|
180
|
+
3822
|
181
|
+
3840
|
182
|
+
3841
|
183
|
+
3842
|
184
|
+
3843
|
185
|
+
3844
|
186
|
+
3845
|
187
|
+
3846
|
188
|
+
3847
|
189
|
+
3848
|
190
|
+
3849
|
191
|
+
3850
|
192
|
+
3851
|
193
|
+
3852
|
194
|
+
3853
|
195
|
+
3854
|
196
|
+
3855
|
197
|
+
3856
|
198
|
+
3857
|
199
|
+
3858
|
200
|
+
3859
|
201
|
+
4122
|
202
|
+
4130
|
203
|
+
4131
|
204
|
+
4132
|
205
|
+
4133
|
206
|
+
4134
|
207
|
+
4135
|
208
|
+
4136
|
209
|
+
4137
|
210
|
+
4138
|
211
|
+
4139
|
212
|
+
4140
|
213
|
+
4141
|
214
|
+
4142
|
215
|
+
4143
|
216
|
+
4144
|
217
|
+
4145
|
218
|
+
4146
|
219
|
+
4147
|
220
|
+
4148
|
221
|
+
4149
|
222
|
+
4161
|
223
|
+
4162
|
224
|
+
4191
|
225
|
+
4330
|
226
|
+
4331
|
227
|
+
4332
|
228
|
+
4333
|
229
|
+
4334
|
230
|
+
4335
|
231
|
+
4336
|
232
|
+
4337
|
233
|
+
4340
|
234
|
+
4341
|
235
|
+
4342
|
236
|
+
4343
|
237
|
+
4344
|
238
|
+
4345
|
239
|
+
4346
|
240
|
+
4347
|
241
|
+
4348
|
242
|
+
4349
|
243
|
+
4350
|
244
|
+
4351
|
245
|
+
4352
|
246
|
+
4353
|
247
|
+
4355
|
248
|
+
4356
|
249
|
+
4358
|
250
|
+
4460
|
251
|
+
4461
|
252
|
+
4462
|
253
|
+
4463
|
254
|
+
4464
|
255
|
+
4465
|
256
|
+
4466
|
257
|
+
4467
|
258
|
+
4468
|
259
|
+
4470
|
260
|
+
4471
|
261
|
+
4472
|
262
|
+
4473
|
263
|
+
4475
|
264
|
+
4476
|
265
|
+
4477
|
266
|
+
4478
|
267
|
+
4479
|
268
|
+
4491
|
269
|
+
4492
|
270
|
+
4493
|
271
|
+
4494
|
272
|
+
4495
|
273
|
+
4496
|
274
|
+
4497
|
275
|
+
4498
|
276
|
+
4622
|
277
|
+
4631
|
278
|
+
4632
|
279
|
+
4633
|
280
|
+
4634
|
281
|
+
4635
|
282
|
+
4636
|
283
|
+
4637
|
284
|
+
4639
|
285
|
+
4641
|
286
|
+
4642
|
287
|
+
4643
|
288
|
+
4644
|
289
|
+
4645
|
290
|
+
4646
|
291
|
+
4653
|
292
|
+
4654
|
293
|
+
4655
|
294
|
+
4656
|
295
|
+
4657
|
296
|
+
4658
|
297
|
+
4659
|
298
|
+
4722
|
299
|
+
4730
|
300
|
+
4731
|
301
|
+
4732
|
302
|
+
4733
|
303
|
+
4734
|
304
|
+
4735
|
305
|
+
4736
|
306
|
+
4737
|
307
|
+
4738
|
308
|
+
4739
|
309
|
+
4740
|
310
|
+
4741
|
311
|
+
4742
|
312
|
+
4744
|
313
|
+
4745
|
314
|
+
4746
|
315
|
+
4747
|
316
|
+
4748
|
317
|
+
4749
|
318
|
+
4840
|
319
|
+
4841
|
320
|
+
4843
|
321
|
+
4844
|
322
|
+
4845
|
323
|
+
4846
|
324
|
+
4847
|
325
|
+
4848
|
326
|
+
4849
|
327
|
+
4851
|
328
|
+
4852
|
329
|
+
4853
|
330
|
+
4854
|
331
|
+
4855
|
332
|
+
4856
|
333
|
+
4858
|
334
|
+
4859
|
335
|
+
4860
|
336
|
+
4861
|
337
|
+
4862
|
338
|
+
4864
|
339
|
+
4865
|
340
|
+
4866
|
341
|
+
4867
|
342
|
+
4868
|
343
|
+
5131
|
344
|
+
5132
|
345
|
+
5133
|
346
|
+
5134
|
347
|
+
5135
|
348
|
+
5136
|
349
|
+
5151
|
350
|
+
5152
|
351
|
+
5153
|
352
|
+
5154
|
353
|
+
5158
|
354
|
+
5159
|
355
|
+
5161
|
356
|
+
5162
|
357
|
+
5163
|
358
|
+
5164
|
359
|
+
5167
|
360
|
+
5168
|
361
|
+
5233
|
362
|
+
5234
|
363
|
+
5235
|
364
|
+
5236
|
365
|
+
5237
|
366
|
+
5238
|
367
|
+
5239
|
368
|
+
5240
|
369
|
+
5241
|
370
|
+
5242
|
371
|
+
5250
|
372
|
+
5251
|
373
|
+
5252
|
374
|
+
5253
|
375
|
+
5254
|
376
|
+
5255
|
377
|
+
5256
|
378
|
+
5257
|
379
|
+
5258
|
380
|
+
5259
|
381
|
+
5340
|
382
|
+
5341
|
383
|
+
5342
|
384
|
+
5343
|
385
|
+
5344
|
386
|
+
5345
|
387
|
+
5346
|
388
|
+
5347
|
389
|
+
5348
|
390
|
+
5350
|
391
|
+
5351
|
392
|
+
5352
|
393
|
+
5353
|
394
|
+
5354
|
395
|
+
5355
|
396
|
+
5356
|
397
|
+
5357
|
398
|
+
5358
|
399
|
+
5359
|
400
|
+
5362
|
401
|
+
5363
|
402
|
+
5364
|
403
|
+
5365
|
404
|
+
5422
|
405
|
+
5442
|
406
|
+
5443
|
407
|
+
5444
|
408
|
+
5445
|
409
|
+
5446
|
410
|
+
5447
|
411
|
+
5448
|
412
|
+
5449
|
413
|
+
5451
|
414
|
+
5452
|
415
|
+
5453
|
416
|
+
5454
|
417
|
+
5455
|
418
|
+
5456
|
419
|
+
5457
|
420
|
+
5458
|
421
|
+
5459
|
422
|
+
5530
|
423
|
+
5531
|
424
|
+
5532
|
425
|
+
5533
|
426
|
+
5534
|
427
|
+
5535
|
428
|
+
5536
|
429
|
+
5537
|
430
|
+
5538
|
431
|
+
5539
|
432
|
+
5540
|
433
|
+
5542
|
434
|
+
5544
|
435
|
+
5545
|
436
|
+
5546
|
437
|
+
5547
|
438
|
+
5548
|
439
|
+
5549
|
440
|
+
5610
|
441
|
+
5611
|
442
|
+
5612
|
443
|
+
5615
|
444
|
+
5616
|
445
|
+
5617
|
446
|
+
5618
|
447
|
+
5650
|
448
|
+
5652
|
449
|
+
5653
|
450
|
+
5655
|
451
|
+
5656
|
452
|
+
5657
|
453
|
+
5662
|
454
|
+
5665
|
455
|
+
5667
|
456
|
+
5668
|
457
|
+
5670
|
458
|
+
5671
|
459
|
+
5672
|
460
|
+
5673
|
461
|
+
5678
|
462
|
+
5679
|
463
|
+
5692
|
464
|
+
5733
|
465
|
+
5740
|
466
|
+
5741
|
467
|
+
5742
|
468
|
+
5743
|
469
|
+
5745
|
470
|
+
5746
|
471
|
+
5747
|
472
|
+
5748
|
473
|
+
5749
|
474
|
+
5750
|
475
|
+
5751
|
476
|
+
5752
|
477
|
+
5753
|
478
|
+
5754
|
479
|
+
5755
|
480
|
+
5756
|
481
|
+
5758
|
482
|
+
5759
|
483
|
+
5761
|
484
|
+
5762
|
485
|
+
5763
|
486
|
+
5764
|
487
|
+
5765
|
488
|
+
6131
|
489
|
+
6132
|
490
|
+
6133
|
491
|
+
6136
|
492
|
+
6137
|
493
|
+
6138
|
494
|
+
6139
|
495
|
+
6140
|
496
|
+
6141
|
497
|
+
6142
|
498
|
+
6143
|
499
|
+
6144
|
500
|
+
6145
|
501
|
+
6147
|
502
|
+
6153
|
503
|
+
6162
|
504
|
+
6165
|
505
|
+
6175
|
506
|
+
6178
|
507
|
+
6212
|
508
|
+
6213
|
509
|
+
6214
|
510
|
+
6217
|
511
|
+
6232
|
512
|
+
6236
|
513
|
+
6237
|
514
|
+
6239
|
515
|
+
6242
|
516
|
+
6247
|
517
|
+
6249
|
518
|
+
6250
|
519
|
+
6252
|
520
|
+
6254
|
521
|
+
6255
|
522
|
+
6256
|
523
|
+
6257
|
524
|
+
6259
|
525
|
+
6261
|
526
|
+
6262
|
527
|
+
6264
|
528
|
+
6267
|
529
|
+
6269
|
530
|
+
6272
|
531
|
+
6273
|
532
|
+
6274
|
533
|
+
6277
|
534
|
+
6279
|
535
|
+
6296
|
536
|
+
6297
|
537
|
+
6299
|
538
|
+
6431
|
539
|
+
6432
|
540
|
+
6433
|
541
|
+
6434
|
542
|
+
6435
|
543
|
+
6436
|
544
|
+
6441
|
545
|
+
6442
|
546
|
+
6443
|
547
|
+
6444
|
548
|
+
6445
|
549
|
+
6446
|
550
|
+
6451
|
551
|
+
6452
|
552
|
+
6453
|
553
|
+
6454
|
554
|
+
6455
|
555
|
+
6456
|
556
|
+
6461
|
557
|
+
6462
|
558
|
+
6463
|
559
|
+
6464
|
560
|
+
6465
|
561
|
+
6471
|
562
|
+
6472
|
563
|
+
6473
|
564
|
+
6474
|
565
|
+
6550
|
566
|
+
6551
|
567
|
+
6552
|
568
|
+
6553
|
569
|
+
6554
|
570
|
+
6555
|
571
|
+
6556
|
572
|
+
6557
|
573
|
+
6558
|
574
|
+
6559
|
575
|
+
6560
|
576
|
+
6561
|
577
|
+
6562
|
578
|
+
6563
|
579
|
+
6564
|
580
|
+
6565
|
581
|
+
6566
|
582
|
+
6569
|
583
|
+
)
|
584
|
+
|
585
|
+
ndcs_with_4_subscriber_numbers = %w(
|
586
|
+
31422
|
587
|
+
32606
|
588
|
+
34342
|
589
|
+
36522
|
590
|
+
36552
|
591
|
+
37312
|
592
|
+
41372
|
593
|
+
41444
|
594
|
+
41483
|
595
|
+
41494
|
596
|
+
43388
|
597
|
+
43410
|
598
|
+
44474
|
599
|
+
53615
|
600
|
+
55431
|
601
|
+
56510
|
602
|
+
57442
|
603
|
+
57572
|
604
|
+
)
|
605
|
+
|
606
|
+
seven_digit_mobile_prefixes = [
|
607
|
+
'50', '66', '95', '99', # Vodafone
|
608
|
+
'67', '96', '97', '98', # Kyivstar
|
609
|
+
'63', '93', '73', # Lifecell
|
610
|
+
'39', # Kyivstar(Golden Telecom)
|
611
|
+
'68', # Kyivstar(Beeline)
|
612
|
+
'91', # UTEL
|
613
|
+
'92', # PEOPLEnet
|
614
|
+
'94' # Intertelecom
|
615
|
+
]
|
616
|
+
|
617
|
+
ndcs_with_3_subscriber_numbers = %w(433861)
|
618
|
+
|
619
|
+
Phony.define do
|
620
|
+
country '380',
|
621
|
+
trunk('0') |
|
622
|
+
one_of(ndcs_with_3_subscriber_numbers) >> split(3) |
|
623
|
+
one_of(ndcs_with_4_subscriber_numbers) >> split(4) |
|
624
|
+
one_of(ndcs_with_5_subscriber_numbers) >> split(3,2) |
|
625
|
+
one_of(ndcs_with_6_subscriber_numbers) >> split(3,3) |
|
626
|
+
one_of(seven_digit_mobile_prefixes) >> split(3,2,2) |
|
627
|
+
one_of('800') >> split(3,3) | # freephone
|
628
|
+
one_of(ndcs_with_7_subscriber_numbers) >> split(4,3) |
|
629
|
+
fixed(3) >> split(3,3) # other
|
630
|
+
end
|