phony 2.4.3 → 2.5.0
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.
- checksums.yaml +8 -8
- data/lib/phony/countries.rb +100 -82
- data/lib/phony/countries/belarus.rb +1 -0
- data/lib/phony/countries/brazil.rb +7 -6
- data/lib/phony/countries/china.rb +6 -4
- data/lib/phony/countries/croatia.rb +2 -1
- data/lib/phony/countries/georgia.rb +1 -0
- data/lib/phony/countries/germany.rb +1 -0
- data/lib/phony/countries/india.rb +7 -6
- data/lib/phony/countries/indonesia.rb +42 -42
- data/lib/phony/countries/japan.rb +9 -8
- data/lib/phony/countries/malaysia.rb +7 -5
- data/lib/phony/countries/moldova.rb +1 -0
- data/lib/phony/countries/montenegro.rb +1 -0
- data/lib/phony/countries/serbia.rb +1 -0
- data/lib/phony/countries/south_korea.rb +9 -7
- data/lib/phony/countries/sweden.rb +5 -3
- data/lib/phony/countries/taiwan.rb +13 -12
- data/lib/phony/countries/ukraine.rb +9 -8
- data/lib/phony/countries/united_kingdom.rb +11 -9
- data/lib/phony/countries/vietnam.rb +9 -7
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTY1NzU0ODM4NDg2NDg3MzU3NTFiZDM3MDIxMGIwYzlmMmYwMzgxOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWZkYzZjNTM2OTY4MTdlNjQ4Y2UzYzZkNTM2ZjY0ODUyMjdjZjFiNA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzkyM2I2MDAwNmQ0ZGMyZTg1MDIzNTM0NjE2ZjYwNjI0YmExNTQ0YzRmYmRk
|
10
|
+
MWVkMTA4OTdlMDlmYjVhMjJiNDY1N2MyY2QxYWRjZmUyNTY1NDdlNjE1NDMx
|
11
|
+
NGY4YTVkNzZmZGQ1ODc1ZjE1Mzc1Y2RhNTBlZDlmMmQ4YThmZTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjJkMDAzODRlMDk2OWQyOWE0ODI4OGY3ZTYxZWEwZGQwNjU5NTRjNWIzZTMw
|
14
|
+
NTliYzc2MjFlOTA2NWVmMDA0YjRjZGE5NzgwZThhZDNkMmJkNGExNDljMGFh
|
15
|
+
MjU3NTE1MGI2MTNlMGQ4YTk5MzcwZDc0MDJlZGEyYjBkNmU5YTg=
|
data/lib/phony/countries.rb
CHANGED
@@ -72,14 +72,17 @@ Phony.define do
|
|
72
72
|
#
|
73
73
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Belgium
|
74
74
|
#
|
75
|
-
country '32',
|
75
|
+
country '32', trunk('0') |
|
76
|
+
match(/^(70|800|90\d)\d+$/) >> split(3,3) | # Service
|
76
77
|
match(/^(4[789]\d)\d{6}$/) >> split(6) | # Mobile
|
77
78
|
one_of('2','3','4','9') >> split(3,2,2) | # Short NDCs
|
78
79
|
fixed(2) >> split(2,2,2) # 2-digit NDCs
|
79
80
|
|
80
81
|
# France.
|
81
82
|
#
|
82
|
-
country '33',
|
83
|
+
country '33',
|
84
|
+
trunk('0') |
|
85
|
+
fixed(1) >> split(2,2,2,2) # :service? => /^8.*$/, :mobile? => /^[67].*$/
|
83
86
|
|
84
87
|
# Spain.
|
85
88
|
#
|
@@ -105,6 +108,7 @@ Phony.define do
|
|
105
108
|
# Romania.
|
106
109
|
#
|
107
110
|
country '40',
|
111
|
+
trunk('0') |
|
108
112
|
match(/^(112|800|90[036])\d+$/) >> split(3,3) | # Service
|
109
113
|
match(/^(7[1-8])\d+$/) >> split(3,4) | # Mobile
|
110
114
|
one_of('21', '31') >> split(3,4) | # Bucureşti
|
@@ -182,62 +186,66 @@ Phony.define do
|
|
182
186
|
# Chile.
|
183
187
|
#
|
184
188
|
country '56',
|
185
|
-
|
186
|
-
|
187
|
-
|
189
|
+
match(/^(13[0-79]|14[79])\d+$/) >> split(3,3) | # Service
|
190
|
+
one_of('2', '9') >> split(8) | # Santiago, Mobile
|
191
|
+
fixed(2) >> split(8) # 2-digit NDCs
|
188
192
|
|
189
193
|
# Colombia.
|
190
194
|
# http://www.itu.int/oth/T020200002C/en
|
191
195
|
country '57',
|
192
|
-
|
193
|
-
|
196
|
+
match(/\A(3\d\d)\d+\z/) >> split(3,4) | # mobile (300 310 311 312 313 315 316)
|
197
|
+
fixed(1) >> split(3,4)
|
194
198
|
|
195
199
|
# Venezuela (Bolivarian Republic of)
|
196
200
|
#
|
197
201
|
country '58',
|
198
|
-
|
202
|
+
fixed(3) >> split(7)
|
199
203
|
|
200
204
|
# country '60' # Malaysia, see special file.
|
201
205
|
|
202
206
|
# Australia.
|
203
207
|
#
|
204
208
|
country '61',
|
205
|
-
|
206
|
-
|
209
|
+
trunk('0') |
|
210
|
+
match(/^(4\d\d)\d+$/) >> split(3,3) | # Mobile
|
211
|
+
fixed(1) >> split(4,4) # Rest
|
207
212
|
|
208
213
|
# country '62' # Indonesia (Republic of), see special file
|
209
214
|
|
210
|
-
#
|
215
|
+
# Philippines (Republic of the)
|
211
216
|
# https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=PH
|
212
217
|
country '63',
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
218
|
+
trunk('0') |
|
219
|
+
# 7/10 digits for area code '2'.
|
220
|
+
match(/\A(2)\d{10}\z/) >> split(10) |
|
221
|
+
one_of('2') >> split(7) |
|
222
|
+
# mobile
|
223
|
+
match(/\A(9\d\d)\d{7}\z/) >> split(7) |
|
224
|
+
match(/\A(9\d\d)\d+\z/) >> split(6) |
|
225
|
+
#
|
226
|
+
fixed(2) >> split(7)
|
221
227
|
|
222
228
|
# New Zealand.
|
223
229
|
#
|
224
230
|
country '64',
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
231
|
+
trunk('0') |
|
232
|
+
match(/^(2\d)\d{7}$/) >> split(3,4) | # Mobile
|
233
|
+
match(/^(2\d)\d{6}$/) >> split(3,3) |
|
234
|
+
match(/^(2\d)\d{8}$/) >> split(2,3,3) |
|
235
|
+
fixed(1) >> split(3,4) # Rest
|
229
236
|
|
230
237
|
# Singapore (Republic of).
|
231
238
|
#
|
232
239
|
country '65',
|
233
|
-
|
240
|
+
none >> split(4,4) # TODO Short Codes.
|
234
241
|
|
235
242
|
# Thailand.
|
236
243
|
#
|
237
244
|
country '66',
|
238
|
-
|
239
|
-
|
240
|
-
|
245
|
+
trunk('0') |
|
246
|
+
match(/\A(8\d\d)\d+\z/) >> split(3,3) | # mobile
|
247
|
+
one_of('2') >> split(3,4) | # Bangkok
|
248
|
+
fixed(2) >> split(3,3) # Rest
|
241
249
|
|
242
250
|
# country '81' # Japan, see special file.
|
243
251
|
|
@@ -250,7 +258,8 @@ Phony.define do
|
|
250
258
|
# Turkey.
|
251
259
|
#
|
252
260
|
country '90',
|
253
|
-
|
261
|
+
trunk('0') |
|
262
|
+
fixed(3) >> split(3,4) # Wiki says 7, but the examples say 3, 4.
|
254
263
|
|
255
264
|
# country '91' # India (Republic of) see special file
|
256
265
|
|
@@ -263,20 +272,21 @@ Phony.define do
|
|
263
272
|
country '93', fixed(2) >> split(7) # Note: the document says 6, but the examples use 7.
|
264
273
|
|
265
274
|
country '94', # TODO Sri Lanka (Democratic Socialist Republic of)
|
266
|
-
|
275
|
+
fixed(2) >> split(3,2,2)
|
267
276
|
|
268
|
-
country '95', fixed(2) >> split(3,2,2) # TODO Myanmar (Union of)
|
277
|
+
country '95', trunk('0') | fixed(2) >> split(3,2,2) # TODO Myanmar (Union of)
|
269
278
|
|
270
279
|
country '98', # Iran (Islamic Republic of)
|
271
|
-
|
272
|
-
|
280
|
+
one_of('21') >> split(4,4) | # Teheran
|
281
|
+
fixed(3) >> split(3,4)
|
273
282
|
|
274
283
|
country '210', todo # -
|
275
284
|
country '211', fixed(3) >> split(3,3) # South Sudan, http://www.wtng.info/wtng-211-ss.html
|
276
285
|
|
277
286
|
country '212', # Morocco
|
278
|
-
|
279
|
-
|
287
|
+
trunk('0') |
|
288
|
+
one_of('6') >> split(2,2,2,2) | # mobile
|
289
|
+
fixed(2) >> split(4,3)
|
280
290
|
|
281
291
|
country '213', fixed(2) >> split(3,4) # Algeria
|
282
292
|
country '214', todo # -
|
@@ -304,12 +314,12 @@ Phony.define do
|
|
304
314
|
# Liberia
|
305
315
|
# https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=LR
|
306
316
|
country '231',
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
317
|
+
none >> matched_split(
|
318
|
+
/\A[23]\d+\z/ => [4,4], # LIBTELCO, TEMAS
|
319
|
+
/\A[4568]\d+\z/ => [4,3], # mobile Lonestar, Libercell, Comium Liberia Inc.
|
320
|
+
/\A7\d+\z/ => [4,4], # mobile Cellcom
|
321
|
+
/\A9\d+\z/ => [4,4], # premium rate Telelinks International SAL, Interactive Media Corporation
|
322
|
+
)
|
313
323
|
|
314
324
|
country '232', fixed(2) >> split(3, 3) # Sierra Leone http://www.wtng.info/wtng-232-sl.html
|
315
325
|
|
@@ -322,11 +332,11 @@ Phony.define do
|
|
322
332
|
# Nigeria
|
323
333
|
# Wikipedia says 3 4 split, many local number with no splitting
|
324
334
|
country '234',
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
335
|
+
one_of('1', '2', '9') >> split(3,4) | # Lagos, Ibadan and Abuja
|
336
|
+
match(/^(702\d)\d+$/) >> split(3,4) | # Mobile
|
337
|
+
match(/^(70[3-9])\d+$/) >> split(3,4) | # Mobile
|
338
|
+
match(/^(8[01]\d)\d+$/) >> split(3,4) | # Mobile
|
339
|
+
fixed(2) >> split(3,4) # 2-digit NDC
|
330
340
|
|
331
341
|
country '235', none >> split(4,4) # Chad http://www.wtng.info/wtng-235-td.html
|
332
342
|
country '236', none >> split(4,4) # Central African Republic http://www.wtng.info/wtng-236-cf.html
|
@@ -345,16 +355,17 @@ Phony.define do
|
|
345
355
|
country '247', none >> split(4) # Ascension
|
346
356
|
|
347
357
|
country '248', # Seychelles
|
348
|
-
|
358
|
+
fixed(1) >> split(2,2,2)
|
349
359
|
|
350
360
|
country '249', fixed(2) >> split(3,4) # Sudan
|
351
361
|
|
352
362
|
# Rwanda
|
353
363
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Rwanda
|
354
364
|
country '250',
|
355
|
-
|
356
|
-
|
357
|
-
|
365
|
+
trunk('0') |
|
366
|
+
one_of('25') >> split(7) | # Geographic, fixed
|
367
|
+
match(/^(7[238])/) >> split(7) | # Non-geographic, mobile
|
368
|
+
one_of('06') >> split(6) # Satellite
|
358
369
|
|
359
370
|
country '251', fixed(2) >> split(3, 4) # Ethiopia http://www.wtng.info/wtng-251-et.html
|
360
371
|
|
@@ -372,32 +383,33 @@ Phony.define do
|
|
372
383
|
# Tanzania.
|
373
384
|
#
|
374
385
|
country '255',
|
375
|
-
|
376
|
-
|
377
|
-
|
386
|
+
trunk('0') |
|
387
|
+
match(/^([89]\d\d)/) >> split(3,3) | # Special/Premium.
|
388
|
+
one_of('112', '118') >> split(3,3) | # Short Codes.
|
389
|
+
fixed(2) >> split(3,4) # Geographic.
|
378
390
|
|
379
391
|
# Uganda.
|
380
392
|
#
|
381
393
|
country '256',
|
382
|
-
|
383
|
-
|
394
|
+
match(/^(46[45]|4[78]\d)/) >> split(6) | # Geo 1.
|
395
|
+
fixed(2) >> split(7) # Geo 2.
|
384
396
|
|
385
397
|
country '257', none >> split(4,4) # Burundi http://www.wtng.info/wtng-257-bi.html
|
386
398
|
|
387
399
|
# Mozambique, https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=MZ
|
388
400
|
country '258',
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
+
one_of('600') >> split(3,3) | # audiotext
|
402
|
+
one_of('610') >> split(3,3) | # ISP
|
403
|
+
one_of('800') >> split(3,3) | # freephone
|
404
|
+
one_of('801') >> split(3,3) | # local rate
|
405
|
+
one_of('802') >> split(3,3) | # national rate
|
406
|
+
one_of(%w(251 252 271 272 281 282 293)) >> split(3,2) |
|
407
|
+
one_of(%w(21 23 24 26)) >> split(3,3) |
|
408
|
+
one_of(%w(82 84 86)) >> split(4,3) | # mobile
|
409
|
+
one_of('89') >> split(4,3) | # satellite GMPCS
|
410
|
+
one_of('7') >> split(4,4) | # universal access
|
411
|
+
one_of('9') >> split(4,4) | # premium rate
|
412
|
+
fixed(2) >> split(3,3)
|
401
413
|
|
402
414
|
country '259', todo # -
|
403
415
|
|
@@ -549,7 +561,8 @@ Phony.define do
|
|
549
561
|
# country '353' # Republic of Ireland, see special file.
|
550
562
|
|
551
563
|
country '354', none >> split(3,4) # Iceland
|
552
|
-
country '355',
|
564
|
+
country '355', trunk('0') |
|
565
|
+
one_of('4') >> split(4,3) | # Albania
|
553
566
|
match(/\A(2[24]|3[2-5]|47|5[2-5]|6[6-9]|8[2-5])\d*\z/) >> split(3,3) |
|
554
567
|
fixed(3) >> split(3,2)
|
555
568
|
|
@@ -562,12 +575,14 @@ Phony.define do
|
|
562
575
|
|
563
576
|
# Cyprus
|
564
577
|
# http://www.cytaglobal.com/cytaglobal/userfiles/NewNumberingPlan.pdf
|
565
|
-
country '357',
|
578
|
+
country '357', trunk('0') |
|
579
|
+
one_of('121','122','123') >> split(2,6) | # voicemail
|
566
580
|
fixed(2) >> split(6) # fixed & mobile
|
567
581
|
|
568
582
|
# Finland
|
569
583
|
#
|
570
584
|
country '358',
|
585
|
+
trunk('0') |
|
571
586
|
match(/^([6-8]00)\d+$/) >> split(3,3) | # Service
|
572
587
|
match(/^(4\d|50)\d+$/) >> split(3,2,2) | # Mobile
|
573
588
|
one_of('2','3','5','6','8','9') >> split(3,3) | # Short NDCs
|
@@ -576,17 +591,18 @@ Phony.define do
|
|
576
591
|
# Bulgaria
|
577
592
|
#
|
578
593
|
country '359',
|
594
|
+
trunk('0') |
|
579
595
|
fixed(2) >> split(3,2,2) # Bulgaria
|
580
596
|
|
581
597
|
# Lithuania
|
582
598
|
#
|
583
599
|
country '370',
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
600
|
+
trunk('8') |
|
601
|
+
one_of('700', '800') >> split(2,3) | # Service
|
602
|
+
match(/^(6\d\d)\d+$/) >> split(2,3) | # Mobile
|
603
|
+
one_of('5') >> split(3,2,2) | # Vilnius
|
604
|
+
one_of('37','41') >> split(2,2,2) | # Kaunas, Šiauliai
|
605
|
+
fixed(3) >> split(1,2,2) # 3-digit NDCs.
|
590
606
|
|
591
607
|
# country '371' # Latvia, see special file
|
592
608
|
|
@@ -633,10 +649,10 @@ Phony.define do
|
|
633
649
|
|
634
650
|
# country '385' # Croatia, see special file.
|
635
651
|
|
636
|
-
country '386', fixed(2) >> split(3, 2, 2) # Slovenia
|
637
|
-
country '387', fixed(2) >> split(3,2,2) # Bosnia and Herzegovina
|
638
|
-
country '388', fixed(2) >> split(3,2,2) # Group of countries, shared code
|
639
|
-
country '389', fixed(2) >> split(3,2,2) # The Former Yugoslav Republic of Macedonia
|
652
|
+
country '386', trunk('0') | fixed(2) >> split(3, 2, 2) # Slovenia
|
653
|
+
country '387', trunk('0') | fixed(2) >> split(3,2,2) # Bosnia and Herzegovina
|
654
|
+
country '388', trunk('0') | fixed(2) >> split(3,2,2) # Group of countries, shared code
|
655
|
+
country '389', trunk('0') | fixed(2) >> split(3,2,2) # The Former Yugoslav Republic of Macedonia
|
640
656
|
|
641
657
|
country '420', fixed(3) >> split(3,3) # Czech Republic
|
642
658
|
|
@@ -705,7 +721,8 @@ Phony.define do
|
|
705
721
|
# https://www.numberingplans.com/?page=dialling&sub=areacodes
|
706
722
|
country '590', fixed(3) >> split(3,3)
|
707
723
|
|
708
|
-
country '591',
|
724
|
+
country '591', # Bolivia (Republic of) http://www.itu.int/oth/T020200001A/en
|
725
|
+
fixed(1) >> split(3,4)
|
709
726
|
|
710
727
|
# Guyana http://www.wtng.info/wtng-592-gy.html
|
711
728
|
# https://www.numberingplans.com
|
@@ -1009,9 +1026,10 @@ Phony.define do
|
|
1009
1026
|
|
1010
1027
|
# Israel (State of) (also works for numbers in Palestinian territories)
|
1011
1028
|
country '972',
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1029
|
+
trunk('0') |
|
1030
|
+
one_of('1') >> split(3,3,3) | # special numbers
|
1031
|
+
one_of('2', '3', '4', '8', '9') >> split(3,4) | # 1 digit ndc
|
1032
|
+
match(/^(5[023456789]|7[23467])\d+$/) >> split(3,4) # 2 digit ndc
|
1015
1033
|
|
1016
1034
|
country '973', none >> split(4,4..4) # Bahrain (Kingdom of) http://www.itu.int/oth/T0202000011/en
|
1017
1035
|
|
@@ -114,6 +114,7 @@ ndcs_with_7_subscriber_digits = %w(17 25 29 33 44)
|
|
114
114
|
|
115
115
|
Phony.define do
|
116
116
|
country '375',
|
117
|
+
trunk('8') |
|
117
118
|
one_of(ndcs_with_5_subscriber_digits) >> split(5) |
|
118
119
|
one_of(ndcs_with_6_subscriber_digits) >> split(6) |
|
119
120
|
one_of(ndcs_with_7_subscriber_digits) >> split(7) |
|
@@ -95,10 +95,11 @@ special_numbers_3_4 = %w{ 0800 }
|
|
95
95
|
special_numbers_4 = %w{ 3003 4004 4020 }
|
96
96
|
|
97
97
|
Phony.define do
|
98
|
-
country '55',
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
98
|
+
country '55',
|
99
|
+
match(/^(11|12|13|14|15|16|17|18|19|21|22|24|27|28)9\d{8}$/) >> split(5,4) |
|
100
|
+
match(ndcs) >> split(4,4) |
|
101
|
+
one_of(special_numbers_3_4) >> split(3,4) |
|
102
|
+
one_of(special_numbers_4) >> split(4) |
|
103
|
+
one_of(service) >> split(3) |
|
104
|
+
fixed(3) >> split(3)
|
104
105
|
end
|
@@ -21,8 +21,10 @@ mobile = %w{ 130 131 132 133 135 136 137 138 139 145 150 151 152 153 155 156 157
|
|
21
21
|
service = %w{ 110 114 119 120 122 999 } # Probably not exhaustive. TODO Look at http://www.eoc.com.cn/?action-viewnews-itemid-11493.
|
22
22
|
|
23
23
|
Phony.define do
|
24
|
-
country '86',
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
country '86',
|
25
|
+
trunk('0') |
|
26
|
+
one_of(service) >> split(8) |
|
27
|
+
one_of(mobile) >> split(4,4) |
|
28
|
+
one_of(ndcs) >> split(4,4) |
|
29
|
+
fixed(3) >> split(4,4)
|
28
30
|
end
|
@@ -83,6 +83,7 @@ ndcs_with_6_subscirber_digits = %w(
|
|
83
83
|
|
84
84
|
Phony.define do
|
85
85
|
country '995',
|
86
|
+
trunk('0') |
|
86
87
|
one_of('220') >> split(3,2) |
|
87
88
|
one_of(%w(514 550 551 555 557 558 568 571 574 577 578 579 591 592 593 595 596 597 598 599 770 790)) >> split(3,3) | # mobile
|
88
89
|
one_of(ndcs_with_6_subscirber_digits) >> split(3,3) |
|
@@ -38,10 +38,11 @@ mobile = %w{ 91 92 93 94 97 98 99 }
|
|
38
38
|
pagers = %w{ 96 }
|
39
39
|
|
40
40
|
Phony.define do
|
41
|
-
country '91',
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
country '91',
|
42
|
+
trunk('0') |
|
43
|
+
one_of(sdca_with_3_digits) >> split(3, 2, 2) |
|
44
|
+
one_of(sdca_with_2_digits) >> split(3, 2, 3) |
|
45
|
+
one_of(mobile) >> split(3, 2, 3) |
|
46
|
+
one_of(pagers) >> split(2, 3, 3) |
|
47
|
+
fixed(4) >> split(3, 3) # fallback (4 digit sdca)
|
47
48
|
end
|
@@ -4,47 +4,47 @@
|
|
4
4
|
|
5
5
|
Phony.define do
|
6
6
|
country '62',
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
7
|
+
trunk('0') |
|
8
|
+
one_of('21') >> matched_split(
|
9
|
+
/\A\d{5}\z/ => [3,2],
|
10
|
+
/\A\d{7}\z/ => [3,4],
|
11
|
+
/\A\d+\z/ => [4,4]) |
|
12
|
+
one_of(%w(22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 72)) >> matched_split(
|
13
|
+
/\A\d{5}\z/ => [3,2],
|
14
|
+
/\A\d+\z/ => [3,4]) |
|
15
|
+
one_of('70') >> split(3,3) |
|
16
|
+
one_of(%w(71 73 74 75 76 77)) >> matched_split(
|
17
|
+
/\A\d{6}\z/ => [3,3],
|
18
|
+
/\A\d+\z/ => [3,4]) |
|
19
|
+
one_of('13') >> matched_split( # pager
|
20
|
+
/\A\d{3}\z/ => [3],
|
21
|
+
/\A\d+\z/ => [3,3]) |
|
22
|
+
one_of(%w(174 175)) >> matched_split( # satellite
|
23
|
+
/\A\d{2}\z/ => [2],
|
24
|
+
/\A\d+\z/ => [2,3]) |
|
25
|
+
one_of('177') >> matched_split( # satellite
|
26
|
+
/\A\d{2}\z/ => [2],
|
27
|
+
/\A\d+\z/ => [4,4]) |
|
28
|
+
one_of('178') >> matched_split( # satellite
|
29
|
+
/\A\d{3}\z/ => [3],
|
30
|
+
/\A\d+\z/ => [3,2]) |
|
31
|
+
one_of(%w(870)) >> split(3,2) | # satellite
|
32
|
+
match(/\A(81\d|82\d|84\d|85\d|86\d|87\d|88\d)\d+\z/) >> matched_split( # mobile
|
33
|
+
/\A\d{6}\z/ => [3,3],
|
34
|
+
/\A\d{7}\z/ => [3,4],
|
35
|
+
/\A\d+\z/ => [4,4]) |
|
36
|
+
one_of(%w(9)) >> matched_split( # geographic
|
37
|
+
/\A\d{7}\z/ => [4,3],
|
38
|
+
/\A\d+\z/ => [3,3,3]) |
|
39
|
+
one_of(%w(4 5)) >> matched_split(
|
40
|
+
/\A\d{6}\z/ => [3,3],
|
41
|
+
/\A\d+\z/ => [4,4]) |
|
42
|
+
one_of('6') >> matched_split(
|
43
|
+
/\A\d{7}\z/ => [3,4],
|
44
|
+
/\A\d+\z/ => [4,4]) |
|
45
|
+
one_of('9') >> matched_split(
|
46
|
+
/\A\d{7}\z/ => [3,4],
|
47
|
+
/\A\d+\z/ => [4,5]) |
|
48
|
+
fixed(2) >> split(4,4)
|
49
49
|
end
|
50
50
|
|
@@ -401,12 +401,13 @@ ndcs_with_5_subscriber_numbers = %w(
|
|
401
401
|
|
402
402
|
Phony.define do
|
403
403
|
country '81',
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
404
|
+
trunk('0') |
|
405
|
+
one_of(ndcs_with_5_subscriber_numbers) >> split(3,2) |
|
406
|
+
one_of(ndcs_with_6_subscriber_numbers) >> split(3,3) |
|
407
|
+
one_of(%w(120 800)) >> split(3,3) | # freephone
|
408
|
+
one_of(ndcs_with_7_subscriber_numbers) >> split(4,3) |
|
409
|
+
one_of(ndcs_with_8_subscriber_numbers) >> split(4,4) |
|
410
|
+
one_of('20', '50', '60', '70', '90') >> split(4,4) | # mobile, VoIP telephony
|
411
|
+
# TODO: 91(NDC) N(S)N length: 5-13 - Non-geographic number (Direct subscriber telephone service (legacy))
|
412
|
+
fixed(2) >> split(4,4)
|
412
413
|
end
|
@@ -16,9 +16,11 @@ mobile = %w{ 10 11 12 13 14 153 154 156 158 16 17 18 19 }
|
|
16
16
|
freephone = %w{ 300 700 800 }
|
17
17
|
|
18
18
|
Phony.define do
|
19
|
-
country '60',
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
country '60',
|
20
|
+
trunk('0') |
|
21
|
+
one_of(freephone) >> split(2,4) | # Freephone, Tollfree, Forwarding
|
22
|
+
# one_of(service) >> none | # Service
|
23
|
+
one_of(mobile) >> split(3,4..5) | # Mobile
|
24
|
+
one_of(ndcs) >> split(8) | # 1-digit NDCs
|
25
|
+
fixed(2) >> split(8) # 2-digit NDCs (Also, fallback)
|
24
26
|
end
|
@@ -10,11 +10,13 @@ special = %w{ 100 101 105 106 107 108 109 111 112 113 114 115 116 117 118 119 12
|
|
10
10
|
# mobile = ('10'..'19').to_a # Note: Mobile not used as it is (for now) handled by the fixed catchall.
|
11
11
|
|
12
12
|
Phony.define do
|
13
|
-
country '82',
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
country '82',
|
14
|
+
trunk('0') |
|
15
|
+
match(/^(#{special.join("|")})$/) >> split(3,3) | # Special actually don't need to be split – but better err.
|
16
|
+
one_of('2') >> split(4,4) | # Seoul, also includes "services".
|
17
|
+
fixed(2) >> split(4,4) # Catchall.
|
18
|
+
|
19
|
+
# See above.
|
20
|
+
#
|
21
|
+
# one_of(*mobile) >> split(4,4) |
|
20
22
|
end
|
@@ -54,7 +54,9 @@ service = [
|
|
54
54
|
]
|
55
55
|
|
56
56
|
Phony.define do
|
57
|
-
country '46',
|
58
|
-
|
59
|
-
|
57
|
+
country '46',
|
58
|
+
trunk('0') |
|
59
|
+
one_of(service) >> split(3,3) |
|
60
|
+
one_of(ndcs + mobile) >> split(3,2,2) |
|
61
|
+
fixed(3) >> split(3,3,2) # catchall
|
60
62
|
end
|
@@ -36,16 +36,17 @@ ndcs_with_5_subscriber_numbers = %w(823 826 827)
|
|
36
36
|
|
37
37
|
Phony.define do
|
38
38
|
country '886',
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
39
|
+
trunk('0') |
|
40
|
+
one_of(ndcs_with_5_subscriber_numbers) >> split(3,2) |
|
41
|
+
match(/\A(6\d\d)\d{7}\z/) >> split(3,4) | # geographic ; Taipei
|
42
|
+
one_of(%w(412)) >> split(4) | # VoIP telephony ; Taichung
|
43
|
+
one_of(ndcs_with_6_subscriber_numbers) >> split(3,3) |
|
44
|
+
one_of(%w(18)) >> split(3,3) | # freephone
|
45
|
+
one_of(%w(90 91 92 93 95 96 97 98)) >> matched_split(
|
46
|
+
/\A\d{6}\z/ => [3,3],
|
47
|
+
/\A\d+\z/ => [3,4]) | # mobile
|
48
|
+
one_of(%w(60 70 94 95 99)) >> split(3,3) | # pager
|
49
|
+
one_of(ndcs_with_7_subscriber_numbers) >> split(3,4) |
|
50
|
+
one_of(ndcs_with_8_subscriber_numbers) >> split(4,4) |
|
51
|
+
fixed(2) >> split(3,3)
|
51
52
|
end
|
@@ -615,12 +615,13 @@ ndcs_with_3_subscriber_numbers = %w(433861)
|
|
615
615
|
|
616
616
|
Phony.define do
|
617
617
|
country '380',
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
618
|
+
trunk('0') |
|
619
|
+
one_of(ndcs_with_3_subscriber_numbers) >> split(3) |
|
620
|
+
one_of(ndcs_with_4_subscriber_numbers) >> split(4) |
|
621
|
+
one_of(ndcs_with_5_subscriber_numbers) >> split(3,2) |
|
622
|
+
one_of(ndcs_with_6_subscriber_numbers) >> split(3,3) |
|
623
|
+
one_of(seven_digit_mobile_prefixes) >> split(3,2,2) |
|
624
|
+
one_of('800') >> split(3,3) | # freephone
|
625
|
+
one_of(ndcs_with_7_subscriber_numbers) >> split(4,3) |
|
626
|
+
fixed(3) >> split(3,3) # other
|
626
627
|
end
|
@@ -790,13 +790,15 @@ four_digit_ndc = [
|
|
790
790
|
]
|
791
791
|
|
792
792
|
Phony.define do
|
793
|
-
country '44',
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
793
|
+
country '44',
|
794
|
+
trunk('0') |
|
795
|
+
one_of(mobile_ndc) >> split(6) | # 4-6
|
796
|
+
one_of(two_digit_ndc) >> split(4,4) | # 2-4-4
|
797
|
+
match(/^([58]00)\d{6}$/) >> split(6) | # 3-6, Special handling for 500 and 800.
|
798
|
+
one_of(three_digit_ndc) >> split(3,4) | # 3-3-4
|
799
|
+
match(/^(16977)\d{4}$/) >> split(4) | # 5-4, Special handling for 16977.
|
800
|
+
one_of(five_digit_ndc) >> split(5) | # 5-5
|
801
|
+
one_of(variable_length_number) >> split(6) | # 4-6 and 4-5, in 40 areas.
|
802
|
+
one_of(four_digit_ndc) >> split(6) | # 4-6
|
803
|
+
fixed(4) >> split(6) # Catchall for undefined numbers.
|
802
804
|
end
|
@@ -119,11 +119,13 @@ mobile = [
|
|
119
119
|
mobile_with_trunk = mobile.map{|num| "0#{num}" }
|
120
120
|
|
121
121
|
Phony.define do
|
122
|
-
country '84',
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
122
|
+
country '84',
|
123
|
+
trunk('0') |
|
124
|
+
one_of(ndcs_with_7_subscriber_digits) >> split(3,4) |
|
125
|
+
one_of(ndcs_with_8_subscriber_digits) >> split(4,4) |
|
126
|
+
one_of(mobile) >> split(5..8)|
|
127
|
+
one_of(mobile_with_trunk) >> split(5..8)|
|
128
|
+
# Govt reserved
|
129
|
+
fixed(80) >> split(5) |
|
130
|
+
fixed(69) >> split(1,5)
|
129
131
|
end
|