phony 2.18.3 → 3.0.3

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +117 -0
  3. data/lib/phony/config.rb +25 -26
  4. data/lib/phony/countries/argentina.rb +352 -0
  5. data/lib/phony/countries/austria.rb +73 -74
  6. data/lib/phony/countries/bangladesh.rb +27 -28
  7. data/lib/phony/countries/belarus.rb +110 -111
  8. data/lib/phony/countries/brazil.rb +93 -93
  9. data/lib/phony/countries/cambodia.rb +10 -14
  10. data/lib/phony/countries/china.rb +22 -18
  11. data/lib/phony/countries/croatia.rb +6 -5
  12. data/lib/phony/countries/georgia.rb +84 -84
  13. data/lib/phony/countries/germany.rb +4067 -4068
  14. data/lib/phony/countries/guinea.rb +8 -8
  15. data/lib/phony/countries/india.rb +31 -34
  16. data/lib/phony/countries/indonesia.rb +57 -46
  17. data/lib/phony/countries/ireland.rb +10 -9
  18. data/lib/phony/countries/italy.rb +79 -60
  19. data/lib/phony/countries/japan.rb +456 -406
  20. data/lib/phony/countries/kyrgyzstan.rb +109 -109
  21. data/lib/phony/countries/latvia.rb +34 -34
  22. data/lib/phony/countries/libya.rb +109 -107
  23. data/lib/phony/countries/malaysia.rb +12 -12
  24. data/lib/phony/countries/moldova.rb +42 -42
  25. data/lib/phony/countries/montenegro.rb +24 -20
  26. data/lib/phony/countries/myanmar.rb +39 -39
  27. data/lib/phony/countries/namibia.rb +35 -29
  28. data/lib/phony/countries/nepal.rb +60 -62
  29. data/lib/phony/countries/netherlands.rb +13 -13
  30. data/lib/phony/countries/pakistan.rb +135 -111
  31. data/lib/phony/countries/paraguay.rb +135 -135
  32. data/lib/phony/countries/russia_kazakhstan_abkhasia_south_ossetia.rb +125 -128
  33. data/lib/phony/countries/saudi_arabia.rb +5 -5
  34. data/lib/phony/countries/serbia.rb +48 -36
  35. data/lib/phony/countries/somalia.rb +18 -18
  36. data/lib/phony/countries/south_korea.rb +16 -13
  37. data/lib/phony/countries/sweden.rb +356 -48
  38. data/lib/phony/countries/taiwan.rb +20 -18
  39. data/lib/phony/countries/tajikistan.rb +70 -70
  40. data/lib/phony/countries/turkmenistan.rb +65 -65
  41. data/lib/phony/countries/ukraine.rb +607 -607
  42. data/lib/phony/countries/united_kingdom.rb +66 -66
  43. data/lib/phony/countries/uruguay.rb +40 -41
  44. data/lib/phony/countries/vietnam.rb +20 -14
  45. data/lib/phony/countries/zimbabwe.rb +31 -31
  46. data/lib/phony/countries.rb +509 -453
  47. data/lib/phony/country.rb +50 -44
  48. data/lib/phony/country_codes.rb +77 -57
  49. data/lib/phony/dsl.rb +25 -28
  50. data/lib/phony/local_splitters/fixed.rb +24 -29
  51. data/lib/phony/local_splitters/regex.rb +30 -31
  52. data/lib/phony/national_code.rb +7 -10
  53. data/lib/phony/national_splitters/default.rb +9 -11
  54. data/lib/phony/national_splitters/dsl.rb +8 -18
  55. data/lib/phony/national_splitters/fixed.rb +12 -15
  56. data/lib/phony/national_splitters/none.rb +8 -14
  57. data/lib/phony/national_splitters/regex.rb +13 -17
  58. data/lib/phony/national_splitters/variable.rb +37 -38
  59. data/lib/phony/trunk_code.rb +23 -23
  60. data/lib/phony/vanity.rb +12 -13
  61. data/lib/phony.rb +84 -83
  62. metadata +14 -45
  63. data/README.textile +0 -112
  64. data/spec/functional/config_spec.rb +0 -44
  65. data/spec/functional/plausibility_spec.rb +0 -608
  66. data/spec/lib/phony/countries_spec.rb +0 -1391
  67. data/spec/lib/phony/country_codes_spec.rb +0 -203
  68. data/spec/lib/phony/country_spec.rb +0 -84
  69. data/spec/lib/phony/dsl_spec.rb +0 -24
  70. data/spec/lib/phony/local_splitters/fixed_spec.rb +0 -56
  71. data/spec/lib/phony/local_splitters/regex_spec.rb +0 -97
  72. data/spec/lib/phony/national_code_spec.rb +0 -91
  73. data/spec/lib/phony/national_splitters/default_spec.rb +0 -34
  74. data/spec/lib/phony/national_splitters/fixed_spec.rb +0 -49
  75. data/spec/lib/phony/national_splitters/none_spec.rb +0 -28
  76. data/spec/lib/phony/national_splitters/regex_spec.rb +0 -23
  77. data/spec/lib/phony/national_splitters/variable_spec.rb +0 -39
  78. data/spec/lib/phony/vanity_spec.rb +0 -30
  79. data/spec/lib/phony_spec.rb +0 -70
@@ -3,416 +3,466 @@
3
3
  # Japan
4
4
  # http://www.itu.int/oth/T020200006D/en
5
5
 
6
- ndcs_with_8_subscriber_numbers = %w(3 6)
6
+ ndcs_with_8_subscriber_numbers = %w[3 6]
7
7
 
8
- ndcs_with_7_subscriber_numbers = %w(
9
- 11
10
- 15
11
- 17
12
- 18
13
- 19
14
- 22
15
- 23
16
- 24
17
- 25
18
- 26
19
- 27
20
- 28
21
- 29
22
- 42
23
- 43
24
- 44
25
- 45
26
- 46
27
- 47
28
- 48
29
- 49
30
- 52
31
- 53
32
- 54
33
- 55
34
- 58
35
- 59
36
- 72
37
- 73
38
- 75
39
- 76
40
- 77
41
- 78
42
- 79
43
- 82
44
- 83
45
- 84
46
- 86
47
- 87
48
- 88
49
- 89
50
- 92
51
- 93
52
- 95
53
- 96
54
- 97
55
- 98
56
- 99
57
- )
8
+ ndcs_with_7_subscriber_numbers = %w[
9
+ 11
10
+ 15
11
+ 17
12
+ 18
13
+ 19
14
+ 22
15
+ 23
16
+ 24
17
+ 25
18
+ 26
19
+ 27
20
+ 28
21
+ 29
22
+ 42
23
+ 43
24
+ 44
25
+ 45
26
+ 46
27
+ 47
28
+ 48
29
+ 49
30
+ 52
31
+ 53
32
+ 54
33
+ 55
34
+ 58
35
+ 59
36
+ 72
37
+ 73
38
+ 75
39
+ 76
40
+ 77
41
+ 78
42
+ 79
43
+ 82
44
+ 83
45
+ 84
46
+ 86
47
+ 87
48
+ 88
49
+ 89
50
+ 92
51
+ 93
52
+ 95
53
+ 96
54
+ 97
55
+ 98
56
+ 99
57
+ ]
58
58
 
59
- ndcs_with_6_subscriber_numbers = %w(
60
- 123
61
- 124
62
- 125
63
- 126
64
- 133
65
- 134
66
- 135
67
- 136
68
- 137
69
- 138
70
- 139
71
- 142
72
- 143
73
- 144
74
- 145
75
- 146
76
- 152
77
- 153
78
- 154
79
- 155
80
- 156
81
- 157
82
- 158
83
- 162
84
- 163
85
- 164
86
- 165
87
- 166
88
- 167
89
- 172
90
- 173
91
- 174
92
- 175
93
- 176
94
- 178
95
- 179
96
- 182
97
- 183
98
- 184
99
- 185
100
- 186
101
- 187
102
- 191
103
- 192
104
- 193
105
- 194
106
- 195
107
- 197
108
- 198
109
- 220
110
- 223
111
- 224
112
- 225
113
- 226
114
- 228
115
- 229
116
- 233
117
- 234
118
- 235
119
- 237
120
- 238
121
- 240
122
- 241
123
- 242
124
- 243
125
- 244
126
- 246
127
- 247
128
- 248
129
- 250
130
- 254
131
- 255
132
- 256
133
- 257
134
- 258
135
- 259
136
- 260
137
- 261
138
- 263
139
- 264
140
- 265
141
- 266
142
- 267
143
- 268
144
- 269
145
- 270
146
- 274
147
- 276
148
- 277
149
- 278
150
- 279
151
- 280
152
- 282
153
- 283
154
- 284
155
- 285
156
- 287
157
- 288
158
- 289
159
- 291
160
- 293
161
- 294
162
- 295
163
- 296
164
- 297
165
- 299
166
- 422
167
- 428
168
- 436
169
- 439
170
- 460
171
- 463
172
- 465
173
- 466
174
- 467
175
- 470
176
- 475
177
- 476
178
- 478
179
- 479
180
- 480
181
- 493
182
- 494
183
- 495
184
- 531
185
- 532
186
- 533
187
- 536
188
- 537
189
- 538
190
- 539
191
- 544
192
- 545
193
- 547
194
- 548
195
- 550
196
- 551
197
- 553
198
- 554
199
- 555
200
- 556
201
- 557
202
- 558
203
- 561
204
- 562
205
- 563
206
- 564
207
- 565
208
- 566
209
- 567
210
- 568
211
- 569
212
- 572
213
- 573
214
- 574
215
- 575
216
- 576
217
- 577
218
- 578
219
- 581
220
- 584
221
- 585
222
- 586
223
- 587
224
- 594
225
- 595
226
- 596
227
- 597
228
- 598
229
- 599
230
- 721
231
- 725
232
- 735
233
- 736
234
- 737
235
- 738
236
- 739
237
- 740
238
- 742
239
- 743
240
- 744
241
- 745
242
- 746
243
- 747
244
- 748
245
- 749
246
- 761
247
- 763
248
- 765
249
- 766
250
- 767
251
- 768
252
- 770
253
- 771
254
- 772
255
- 773
256
- 774
257
- 776
258
- 778
259
- 779
260
- 790
261
- 791
262
- 794
263
- 795
264
- 796
265
- 797
266
- 798
267
- 799
268
- 820
269
- 823
270
- 824
271
- 826
272
- 827
273
- 829
274
- 833
275
- 834
276
- 835
277
- 836
278
- 837
279
- 838
280
- 845
281
- 846
282
- 847
283
- 848
284
- 849
285
- 852
286
- 853
287
- 854
288
- 855
289
- 856
290
- 857
291
- 858
292
- 859
293
- 863
294
- 865
295
- 866
296
- 867
297
- 868
298
- 869
299
- 875
300
- 877
301
- 879
302
- 880
303
- 883
304
- 884
305
- 885
306
- 887
307
- 889
308
- 892
309
- 893
310
- 894
311
- 895
312
- 896
313
- 897
314
- 898
315
- 920
316
- 930
317
- 940
318
- 942
319
- 943
320
- 944
321
- 946
322
- 947
323
- 948
324
- 949
325
- 950
326
- 952
327
- 954
328
- 955
329
- 956
330
- 957
331
- 959
332
- 964
333
- 965
334
- 966
335
- 967
336
- 968
337
- 969
338
- 972
339
- 973
340
- 974
341
- 977
342
- 978
343
- 979
344
- 980
345
- 982
346
- 983
347
- 984
348
- 985
349
- 986
350
- 987
351
- 993
352
- 994
353
- 995
354
- 996
355
- 997
356
- )
59
+ ndcs_with_6_subscriber_numbers = %w[
60
+ 123
61
+ 124
62
+ 125
63
+ 126
64
+ 133
65
+ 134
66
+ 135
67
+ 136
68
+ 137
69
+ 138
70
+ 139
71
+ 142
72
+ 143
73
+ 144
74
+ 145
75
+ 146
76
+ 152
77
+ 153
78
+ 154
79
+ 155
80
+ 156
81
+ 157
82
+ 158
83
+ 162
84
+ 163
85
+ 164
86
+ 165
87
+ 166
88
+ 167
89
+ 172
90
+ 173
91
+ 174
92
+ 175
93
+ 176
94
+ 178
95
+ 179
96
+ 182
97
+ 183
98
+ 184
99
+ 185
100
+ 186
101
+ 187
102
+ 191
103
+ 192
104
+ 193
105
+ 194
106
+ 195
107
+ 197
108
+ 198
109
+ 220
110
+ 223
111
+ 224
112
+ 225
113
+ 226
114
+ 228
115
+ 229
116
+ 233
117
+ 234
118
+ 235
119
+ 237
120
+ 238
121
+ 240
122
+ 241
123
+ 242
124
+ 243
125
+ 244
126
+ 246
127
+ 247
128
+ 248
129
+ 250
130
+ 254
131
+ 255
132
+ 256
133
+ 257
134
+ 258
135
+ 259
136
+ 260
137
+ 261
138
+ 263
139
+ 264
140
+ 265
141
+ 266
142
+ 267
143
+ 268
144
+ 269
145
+ 270
146
+ 274
147
+ 276
148
+ 277
149
+ 278
150
+ 279
151
+ 280
152
+ 282
153
+ 283
154
+ 284
155
+ 285
156
+ 287
157
+ 288
158
+ 289
159
+ 291
160
+ 293
161
+ 294
162
+ 295
163
+ 296
164
+ 297
165
+ 299
166
+ 422
167
+ 428
168
+ 436
169
+ 438
170
+ 439
171
+ 460
172
+ 463
173
+ 465
174
+ 466
175
+ 467
176
+ 470
177
+ 475
178
+ 476
179
+ 478
180
+ 479
181
+ 480
182
+ 493
183
+ 494
184
+ 495
185
+ 531
186
+ 532
187
+ 533
188
+ 536
189
+ 537
190
+ 538
191
+ 539
192
+ 544
193
+ 545
194
+ 547
195
+ 548
196
+ 550
197
+ 551
198
+ 553
199
+ 554
200
+ 555
201
+ 556
202
+ 557
203
+ 558
204
+ 561
205
+ 562
206
+ 563
207
+ 564
208
+ 565
209
+ 566
210
+ 567
211
+ 568
212
+ 569
213
+ 572
214
+ 573
215
+ 574
216
+ 575
217
+ 576
218
+ 577
219
+ 578
220
+ 581
221
+ 584
222
+ 585
223
+ 586
224
+ 587
225
+ 594
226
+ 595
227
+ 596
228
+ 597
229
+ 598
230
+ 599
231
+ 721
232
+ 725
233
+ 735
234
+ 736
235
+ 737
236
+ 738
237
+ 739
238
+ 740
239
+ 742
240
+ 743
241
+ 744
242
+ 745
243
+ 746
244
+ 747
245
+ 748
246
+ 749
247
+ 761
248
+ 763
249
+ 765
250
+ 766
251
+ 767
252
+ 768
253
+ 770
254
+ 771
255
+ 772
256
+ 773
257
+ 774
258
+ 776
259
+ 778
260
+ 779
261
+ 790
262
+ 791
263
+ 794
264
+ 795
265
+ 796
266
+ 797
267
+ 798
268
+ 799
269
+ 820
270
+ 823
271
+ 824
272
+ 826
273
+ 827
274
+ 829
275
+ 833
276
+ 834
277
+ 835
278
+ 836
279
+ 837
280
+ 838
281
+ 845
282
+ 846
283
+ 847
284
+ 848
285
+ 852
286
+ 853
287
+ 854
288
+ 855
289
+ 856
290
+ 857
291
+ 858
292
+ 859
293
+ 863
294
+ 865
295
+ 866
296
+ 867
297
+ 868
298
+ 869
299
+ 875
300
+ 877
301
+ 879
302
+ 880
303
+ 883
304
+ 884
305
+ 885
306
+ 887
307
+ 889
308
+ 892
309
+ 893
310
+ 894
311
+ 895
312
+ 896
313
+ 897
314
+ 898
315
+ 920
316
+ 930
317
+ 940
318
+ 942
319
+ 943
320
+ 944
321
+ 946
322
+ 947
323
+ 948
324
+ 949
325
+ 950
326
+ 952
327
+ 954
328
+ 955
329
+ 956
330
+ 957
331
+ 959
332
+ 964
333
+ 965
334
+ 966
335
+ 967
336
+ 968
337
+ 969
338
+ 972
339
+ 973
340
+ 974
341
+ 977
342
+ 978
343
+ 979
344
+ 980
345
+ 982
346
+ 983
347
+ 984
348
+ 985
349
+ 986
350
+ 987
351
+ 993
352
+ 994
353
+ 995
354
+ 996
355
+ 997
356
+ ]
357
357
 
358
- ndcs_with_5_subscriber_numbers = %w(
359
- 1267
360
- 1372
361
- 1374
362
- 1377
363
- 1392
364
- 1394
365
- 1397
366
- 1398
367
- 1456
368
- 1457
369
- 1466
370
- 1547
371
- 1558
372
- 1564
373
- 1586
374
- 1587
375
- 1632
376
- 1634
377
- 1635
378
- 1648
379
- 1654
380
- 1655
381
- 1656
382
- 1658
383
- 4992
384
- 4994
385
- 4996
386
- 4998
387
- 5769
388
- 5979
389
- 7468
390
- 8387
391
- 8388
392
- 8396
393
- 8477
394
- 8512
395
- 8514
396
- 8636
397
- 9496
398
- 9802
399
- 9912
400
- 9913
401
- 9969
402
- )
358
+ ndcs_with_5_subscriber_numbers = %w[
359
+ 1267
360
+ 1372
361
+ 1374
362
+ 1377
363
+ 1392
364
+ 1397
365
+ 1398
366
+ 1456
367
+ 1457
368
+ 1466
369
+ 1547
370
+ 1558
371
+ 1564
372
+ 1586
373
+ 1587
374
+ 1632
375
+ 1634
376
+ 1635
377
+ 1648
378
+ 1654
379
+ 1655
380
+ 1656
381
+ 1658
382
+ 4992
383
+ 4994
384
+ 4996
385
+ 4998
386
+ 5769
387
+ 5979
388
+ 7468
389
+ 8387
390
+ 8388
391
+ 8396
392
+ 8477
393
+ 8512
394
+ 8514
395
+ 9496
396
+ 9802
397
+ 9912
398
+ 9913
399
+ 9969
400
+ ]
403
401
 
404
402
  Phony.define do
405
403
  country '81',
406
- trunk('0') |
407
- one_of('20', '50', '60', '70', '90') >> split(4,4) | # mobile, VoIP telephony
408
- one_of(ndcs_with_5_subscriber_numbers) >> split(1,4) |
409
- one_of(ndcs_with_6_subscriber_numbers) >> split(2,4) |
410
- one_of(%w(120)) >> split(3,3) | # freephone
411
- one_of(%w(120 800)) >> split(3,4) | # freephone
412
- one_of(ndcs_with_7_subscriber_numbers) >> split(3,4) |
413
- one_of(ndcs_with_8_subscriber_numbers) >> split(4,4) |
414
- # TODO: 91(NDC) N(S)N length: 5-13 - Non-geographic number (Direct subscriber telephone service (legacy))
415
- fixed(2) >> split(4,4),
416
- :local_space => :- ,
417
- :space => :-
404
+ trunk('0', normalize: true, format: true, split: true) |
405
+ one_of(%w[20 50 60 70 90]) >> split(4, 4) | # mobile, VoIP telephony
406
+ match(/\A(597)9[0178]\d+\z/) >> split(2, 4) |
407
+ one_of(ndcs_with_5_subscriber_numbers) >> split(1, 4) |
408
+ match(/\A(4)70[019]\d+\z/) >> split(4, 4) |
409
+ match(/\A(4)71\d+\z/) >> split(4, 4) |
410
+ match(/\A(4)20\d+\z/) >> split(4, 4) |
411
+ match(/\A(4)29[02-69]\d+\z/) >> split(4, 4) |
412
+ match(/\A(15)4[018]\d+\z/) >> split(3, 4) |
413
+ match(/\A(22)3[014-9]\d+\z/) >> split(3, 4) |
414
+ match(/\A(25)[04][01]\d+\z/) >> split(3, 4) |
415
+ match(/\A(25)5[0-69]\d+\z/) >> split(3, 4) |
416
+ match(/\A(25)[68][01]\d+\z/) >> split(3, 4) |
417
+ match(/\A(25)7[015-9]\d+\z/) >> split(3, 4) |
418
+ match(/\A(25)917\d+\z/) >> split(3, 4) |
419
+ match(/\A(25)999\d+\z/) >> split(3, 4) |
420
+ match(/\A(26)4[016-9]\d+\z/) >> split(3, 4) |
421
+ match(/\A(28)3[0134]\d+\z/) >> split(3, 4) |
422
+ match(/\A(28)9[0-5]\d+\z/) >> split(3, 4) |
423
+ match(/\A(29)17\d+\z/) >> split(3, 4) |
424
+ match(/\A(29)3[015-9]\d+\z/) >> split(3, 4) |
425
+ match(/\A(42)21\d+\z/) >> split(3, 4) |
426
+ match(/\A(42)8[01456]\d+\z/) >> split(3, 4) |
427
+ match(/\A(47)5[019]\d+\z/) >> split(3, 4) |
428
+ match(/\A(47)9[019]\d+\z/) >> split(3, 4) |
429
+ match(/\A(59)8[019]\d+\z/) >> split(3, 4) |
430
+ match(/\A(59)9[01]\d+\z/) >> split(3, 4) |
431
+ match(/\A(79)4[0-59]\d+\z/) >> split(3, 4) |
432
+ match(/\A(79)5[01569]\d+\z/) >> split(3, 4) |
433
+ match(/\A(79)6[0167]\d+\z/) >> split(3, 4) |
434
+ match(/\A(82)4[0-39]\d+\z/) >> split(3, 4) |
435
+ match(/\A(82)9[019]\d+\z/) >> split(3, 4) |
436
+ match(/\A(82)92[1-9]\d+\z/) >> split(3, 4) |
437
+ match(/\A(82)94[1-3]\d+\z/) >> split(3, 4) |
438
+ match(/\A(82)96[0-47-9]\d+\z/) >> split(3, 4) |
439
+ match(/\A(82)965[01346-9]\d+\z/) >> split(3, 4) |
440
+ match(/\A(82)966[1-9]\d+\z/) >> split(3, 4) |
441
+ match(/\A(83)76[6-8]\d+\z/) >> split(3, 4) |
442
+ match(/\A(83)7[01789]\d+\z/) >> split(3, 4) |
443
+ match(/\A(83)8[01]\d+\z/) >> split(3, 4) |
444
+ match(/\A(86)36[23]\d+\z/) >> split(3, 4) |
445
+ match(/\A(86)5[0-389]\d+\z/) >> split(3, 4) |
446
+ match(/\A(86)55[23]\d+\z/) >> split(3, 4) |
447
+ match(/\A(86)[01]\d+\z/) >> split(3, 4) |
448
+ match(/\A(86)9[178]\d+\z/) >> split(3, 4) |
449
+ match(/\A(86)72\d+\z/) >> split(3, 4) |
450
+ match(/\A(86)8[019]\d+\z/) >> split(3, 4) |
451
+ match(/\A(86)9[0145]\d+\z/) >> split(3, 4) |
452
+ match(/\A(86)99[014-9]\d+\z/) >> split(3, 4) |
453
+ match(/\A(99)331\d+\z/) >> split(3, 4) |
454
+ match(/\A(99)34[357]\d+\z/) >> split(3, 4) |
455
+ match(/\A(99)4[0178]\d+\z/) >> split(3, 4) |
456
+ one_of(ndcs_with_6_subscriber_numbers) >> split(2, 4) |
457
+ one_of(%w[120]) >> split(3, 3) | # freephone
458
+ one_of(%w[800]) >> split(3, 4) | # freephone
459
+ one_of(%w[180 570]) >> split(3, 3) | # Tele-gong/Tele-dome, Navi-dial
460
+ one_of(%w[170 990]) >> split(2, 4) | # Dengon-dial, Dial Q2 (discontinued)
461
+ one_of(%w[80]) >> split(4, 4) | # mobile
462
+ one_of(ndcs_with_7_subscriber_numbers) >> split(3, 4) |
463
+ one_of(ndcs_with_8_subscriber_numbers) >> split(4, 4) |
464
+ # TODO: 91(NDC) N(S)N length: 5-13 - Non-geographic number (Direct subscriber telephone service (legacy))
465
+ fixed(2) >> split(4, 4),
466
+ local_space: :-,
467
+ space: :-
418
468
  end