phony 1.9.0 → 2.0.0.beta1

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