phony 1.9.0 → 2.19.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/README.textile +64 -112
  3. data/lib/phony/config.rb +91 -0
  4. data/lib/phony/countries/argentina.rb +355 -0
  5. data/lib/phony/countries/austria.rb +56 -22
  6. data/lib/phony/countries/bangladesh.rb +57 -0
  7. data/lib/phony/countries/belarus.rb +133 -0
  8. data/lib/phony/countries/brazil.rb +101 -95
  9. data/lib/phony/countries/cambodia.rb +131 -0
  10. data/lib/phony/countries/china.rb +13 -6
  11. data/lib/phony/countries/croatia.rb +23 -0
  12. data/lib/phony/countries/georgia.rb +94 -0
  13. data/lib/phony/countries/germany.rb +66 -42
  14. data/lib/phony/countries/guinea.rb +46 -0
  15. data/lib/phony/countries/india.rb +50 -0
  16. data/lib/phony/countries/indonesia.rb +55 -0
  17. data/lib/phony/countries/ireland.rb +35 -28
  18. data/lib/phony/countries/italy.rb +272 -166
  19. data/lib/phony/countries/japan.rb +468 -0
  20. data/lib/phony/countries/kyrgyzstan.rb +120 -0
  21. data/lib/phony/countries/latvia.rb +43 -0
  22. data/lib/phony/countries/libya.rb +116 -0
  23. data/lib/phony/countries/malaysia.rb +31 -7
  24. data/lib/phony/countries/moldova.rb +53 -0
  25. data/lib/phony/countries/montenegro.rb +30 -0
  26. data/lib/phony/countries/myanmar.rb +55 -0
  27. data/lib/phony/countries/namibia.rb +37 -0
  28. data/lib/phony/countries/nepal.rb +73 -0
  29. data/lib/phony/countries/netherlands.rb +17 -5
  30. data/lib/phony/countries/pakistan.rb +121 -0
  31. data/lib/phony/countries/paraguay.rb +147 -0
  32. data/lib/phony/countries/{russia_kazakhstan_abhasia_south_osetia.rb → russia_kazakhstan_abkhasia_south_ossetia.rb} +35 -24
  33. data/lib/phony/countries/saudi_arabia.rb +40 -0
  34. data/lib/phony/countries/serbia.rb +47 -0
  35. data/lib/phony/countries/somalia.rb +26 -0
  36. data/lib/phony/countries/south_korea.rb +19 -10
  37. data/lib/phony/countries/sweden.rb +58 -38
  38. data/lib/phony/countries/taiwan.rb +28 -0
  39. data/lib/phony/countries/tajikistan.rb +79 -0
  40. data/lib/phony/countries/turkmenistan.rb +76 -0
  41. data/lib/phony/countries/ukraine.rb +630 -0
  42. data/lib/phony/countries/united_kingdom.rb +639 -44
  43. data/lib/phony/countries/uruguay.rb +53 -0
  44. data/lib/phony/countries/vietnam.rb +133 -0
  45. data/lib/phony/countries/zimbabwe.rb +39 -0
  46. data/lib/phony/countries.rb +901 -301
  47. data/lib/phony/country.rb +177 -20
  48. data/lib/phony/country_codes.rb +119 -101
  49. data/lib/phony/dsl.rb +113 -68
  50. data/lib/phony/local_splitters/fixed.rb +25 -1
  51. data/lib/phony/local_splitters/regex.rb +16 -2
  52. data/lib/phony/national_code.rb +7 -7
  53. data/lib/phony/national_splitters/default.rb +35 -3
  54. data/lib/phony/national_splitters/dsl.rb +12 -7
  55. data/lib/phony/national_splitters/fixed.rb +7 -1
  56. data/lib/phony/national_splitters/none.rb +7 -3
  57. data/lib/phony/national_splitters/regex.rb +6 -0
  58. data/lib/phony/national_splitters/variable.rb +13 -9
  59. data/lib/phony/trunk_code.rb +57 -0
  60. data/lib/phony/vanity.rb +3 -3
  61. data/lib/phony.rb +239 -55
  62. data/spec/functional/config_spec.rb +44 -0
  63. data/spec/functional/plausibility_spec.rb +656 -0
  64. data/spec/lib/phony/countries_spec.rb +1207 -119
  65. data/spec/lib/phony/country_codes_spec.rb +99 -81
  66. data/spec/lib/phony/country_spec.rb +54 -14
  67. data/spec/lib/phony/dsl_spec.rb +2 -2
  68. data/spec/lib/phony/local_splitters/fixed_spec.rb +4 -4
  69. data/spec/lib/phony/local_splitters/regex_spec.rb +50 -2
  70. data/spec/lib/phony/national_code_spec.rb +34 -34
  71. data/spec/lib/phony/national_splitters/default_spec.rb +34 -0
  72. data/spec/lib/phony/national_splitters/fixed_spec.rb +12 -6
  73. data/spec/lib/phony/national_splitters/none_spec.rb +13 -3
  74. data/spec/lib/phony/national_splitters/regex_spec.rb +1 -1
  75. data/spec/lib/phony/national_splitters/variable_spec.rb +11 -5
  76. data/spec/lib/phony/trunk_code_spec.rb +85 -0
  77. data/spec/lib/phony/vanity_spec.rb +15 -19
  78. data/spec/lib/phony_spec.rb +59 -277
  79. metadata +67 -34
  80. data/lib/phony/validator.rb +0 -26
  81. data/lib/phony/validators.rb +0 -88
  82. 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