phony 1.9.0 → 2.19.14
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 +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,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Uruguay (Eastern Republic of)
|
4
|
+
# https://www.numberingplans.com/?page=dialling&sub=areacodes
|
5
|
+
# https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=UY
|
6
|
+
|
7
|
+
ndcs_with_7_subscriber_numbers = %w(2 4)
|
8
|
+
|
9
|
+
ndcs_with_6_subscriber_numbers = %w(
|
10
|
+
21
|
11
|
+
22
|
12
|
+
23
|
13
|
+
24
|
14
|
+
25
|
15
|
+
26
|
16
|
+
27
|
17
|
+
29
|
18
|
+
42
|
19
|
+
)
|
20
|
+
|
21
|
+
ndcs_with_5_subscriber_numbers = %w(
|
22
|
+
433
|
23
|
+
434
|
24
|
+
436
|
25
|
+
437
|
26
|
+
438
|
27
|
+
443
|
28
|
+
444
|
29
|
+
445
|
30
|
+
447
|
31
|
+
452
|
32
|
+
453
|
33
|
+
455
|
34
|
+
462
|
35
|
+
463
|
36
|
+
464
|
37
|
+
472
|
38
|
+
473
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
Phony.define do
|
43
|
+
country '598',
|
44
|
+
one_of('800') >> split(3,2) | # freephone
|
45
|
+
one_of('805') >> split(3,2) | # shared cost
|
46
|
+
one_of(%w(900 901 902 903 904 905 906 907 908)) >> split(3,2) | # premium rate
|
47
|
+
one_of('909') >> split(3,2) | # ISP
|
48
|
+
one_of(ndcs_with_5_subscriber_numbers) >> split(3,2) |
|
49
|
+
one_of(ndcs_with_6_subscriber_numbers) >> split(3,3) |
|
50
|
+
one_of(%w(93 94 95 96 97 98 99)) >> split(3,3) | # mobile
|
51
|
+
one_of(ndcs_with_7_subscriber_numbers) >> split(3,4) |
|
52
|
+
fixed(2) >> split(3,3)
|
53
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Vietnamese phone numbers.
|
4
|
+
#
|
5
|
+
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Vietnam
|
6
|
+
# http://www.wtng.info/wtng-84-vn.html
|
7
|
+
#
|
8
|
+
# Landline numbers are composed of 1 to 3 digit area code + 5 to 8 digits
|
9
|
+
# Mobile numbers are composed of 0 (trunk) + 2 to 3 digit carrier code + 5 to 8 digits
|
10
|
+
#
|
11
|
+
|
12
|
+
ndcs_with_7_subscriber_digits = [
|
13
|
+
'203', # Quảng Ninh Province
|
14
|
+
'204', # Bắc Giang (From 15 April 2017)
|
15
|
+
'205', # Lạng Sơn Province
|
16
|
+
'206', # Cao Bằng Province
|
17
|
+
'207', # Tuyên Quang Province
|
18
|
+
'208', # Thái Nguyên Provine
|
19
|
+
'209', # Bắc Kạn Province
|
20
|
+
'210', # Phú Thọ Province
|
21
|
+
'211', # Vĩnh Phúc Province
|
22
|
+
'212', # Sơn La Province
|
23
|
+
'213', # Lai Châu
|
24
|
+
'214', # Lào Cai Province
|
25
|
+
'215', # Điện Biên Province
|
26
|
+
'216', # Yên Bái Province
|
27
|
+
'218', # Hòa Bình Province
|
28
|
+
'219', # Hà Giang Province
|
29
|
+
'220', # Hải Dương Province
|
30
|
+
'221', # Hưng Yên Province
|
31
|
+
'222', # Bắc Ninh Province
|
32
|
+
'225', # Hải Phòng Province
|
33
|
+
'226', # Hà Nam Province
|
34
|
+
'227', # Thái Bình Province
|
35
|
+
'228', # Nam Định Province
|
36
|
+
'229', # Ninh Bình Province
|
37
|
+
'232', # Quảng Bình Province
|
38
|
+
'233', # Quảng Trị Province
|
39
|
+
'234', # Thừa Thiên Huế Province
|
40
|
+
'235', # Quảng Nam Province
|
41
|
+
'236', # Đà Nẵng Province
|
42
|
+
'237', # Thanh Hóa Province
|
43
|
+
'238', # Nghệ An Province
|
44
|
+
'239', # Hà Tĩnh Province
|
45
|
+
'251', # Đồng Nai Province
|
46
|
+
'252', # Bình Thuận Province
|
47
|
+
'254', # Bà Rịa Vũng Tàu Province
|
48
|
+
'255', # Quảng Ngãi Province
|
49
|
+
'256', # Bình Định Province
|
50
|
+
'257', # Phú Yên Province
|
51
|
+
'258', # Khánh Hòa Province
|
52
|
+
'259', # Ninh Thuận Province
|
53
|
+
'260', # Kon Tum Province
|
54
|
+
'261', # Đăk Nông Province
|
55
|
+
'262', # Đăk Lăk Province
|
56
|
+
'263', # Lâm Đồng Province
|
57
|
+
'269', # Gia Lai Province
|
58
|
+
'270', # Vĩnh Long Province
|
59
|
+
'271', # Bình Phước Province
|
60
|
+
'272', # Long An Province
|
61
|
+
'273', # Tiền Giang Province
|
62
|
+
'274', # Bình Dương Province
|
63
|
+
'275', # Bến Tre Province
|
64
|
+
'276', # Tây Ninh Province
|
65
|
+
'277', # Đồng Tháp Province
|
66
|
+
'290', # Cà Mau Province
|
67
|
+
'291', # Bạc Liêu Province
|
68
|
+
'292', # Cần Thơ Province
|
69
|
+
'293', # Hậu Giang Province
|
70
|
+
'294', # Trà Vinh Province
|
71
|
+
'296', # An Giang Province
|
72
|
+
'297', # Kiên Giang Province
|
73
|
+
'299', # Sóc Trăng Province
|
74
|
+
]
|
75
|
+
|
76
|
+
ndcs_with_8_subscriber_digits = [
|
77
|
+
'4', # Hà Nội Province
|
78
|
+
'24', # Hà Nội Province
|
79
|
+
'28', # Hồ Chí Minh Province
|
80
|
+
'8', # Hồ Chí Minh Province
|
81
|
+
]
|
82
|
+
|
83
|
+
mobile = [
|
84
|
+
'32', # Viettel Mobile
|
85
|
+
'33', # Viettel Mobile
|
86
|
+
'34', # Viettel Mobile
|
87
|
+
'35', # Viettel Mobile
|
88
|
+
'36', # Viettel Mobile
|
89
|
+
'37', # Viettel Mobile
|
90
|
+
'38', # Viettel Mobile
|
91
|
+
'39', # Viettel Mobile
|
92
|
+
'52', # Vietnammobile
|
93
|
+
'56', # Vietnamobile
|
94
|
+
'58', # Vietnamobile (previously known as HT Mobile)
|
95
|
+
'59', # GTel (traded as Beeline)
|
96
|
+
'70', # MobiFone
|
97
|
+
'76', # MobiFone
|
98
|
+
'77', # MobiFone
|
99
|
+
'78', # MobiFone
|
100
|
+
'79', # MobiFone
|
101
|
+
'81', # Vinaphone
|
102
|
+
'82', # Vinaphone
|
103
|
+
'83', # Vinaphone
|
104
|
+
'84', # Vinaphone
|
105
|
+
'85', # Vinaphone
|
106
|
+
'86', # Viettel
|
107
|
+
'87', # Itelecom
|
108
|
+
'88', # Vinaphone
|
109
|
+
'89', # MobiFone,
|
110
|
+
'90', # MobiFone
|
111
|
+
'91', # Vinaphone
|
112
|
+
'92', # Vietnamobile (previously known as HT Mobile)
|
113
|
+
'93', # MobiFone
|
114
|
+
'94', # Vinaphone
|
115
|
+
'96', # previously EVN Telecom, now Viettel Mobile
|
116
|
+
'97', # Viettel Mobile
|
117
|
+
'98', # Viettel Mobile
|
118
|
+
'99', # Gmobile (traded as Beeline)
|
119
|
+
]
|
120
|
+
|
121
|
+
mobile_with_trunk = (mobile).map{ |num| "0#{num}" }
|
122
|
+
|
123
|
+
Phony.define do
|
124
|
+
country '84',
|
125
|
+
trunk('0') |
|
126
|
+
one_of(mobile) >> split(4..8)|
|
127
|
+
one_of(ndcs_with_7_subscriber_digits) >> split(3,4) |
|
128
|
+
one_of(ndcs_with_8_subscriber_digits) >> split(4,4) |
|
129
|
+
one_of(mobile_with_trunk) >> split(5..8)|
|
130
|
+
# Govt reserved
|
131
|
+
fixed(80) >> split(5) |
|
132
|
+
fixed(69) >> split(1,5)
|
133
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Zimbabwe, https://www.numberingplans.com/?page=plans&sub=phonenr&alpha_2_input=ZW
|
4
|
+
# http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000E90002PDFE.pdf
|
5
|
+
|
6
|
+
Phony.define do
|
7
|
+
country '263',
|
8
|
+
trunk('0', normalize: true) |
|
9
|
+
one_of(%w(2582 2583 5483)) >>
|
10
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
11
|
+
/\A\d+\z/ => [3] ) | # geographic [XXXX] XXX(XXX)
|
12
|
+
one_of(%w(147 204 205 222 227 228 238 248 2582 2583 271 272 274 276 281 283
|
13
|
+
284 286 287 288 289 298 308 317 371 375 376 379 383 387 389 517 518
|
14
|
+
557 558 628 637 667 668 687 688 698 848)) >>
|
15
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
16
|
+
/\A\d+\z/ => [3] ) | # geographic [XXX] XXX(XXX)
|
17
|
+
one_of(%w(270)) >>
|
18
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
19
|
+
/\A\d+\z/ => [3,2] ) | # geographic [XXX] XXXXX(X)
|
20
|
+
one_of(%w(273 275 277 278 279 282 285)) >>
|
21
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
22
|
+
/\A\d+\z/ => [2,2] ) | # geographic [XXX] XXXX(XX)
|
23
|
+
one_of(%w(13 14 15 16 17 18 19 21 24 26 29 30 31 32 34 35 36 50 55 57 58 59 60
|
24
|
+
63 64 65 66 69)) >>
|
25
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
26
|
+
/\A\d+\z/ => [3] ) | # geographic [XX] XXX(XXX)
|
27
|
+
one_of(%w(20)) >>
|
28
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
29
|
+
/\A\d+\z/ => [3,2] ) | # geographic [XXX] XXXXX(X)
|
30
|
+
one_of(%w(25 33 39 51 52 53 54 56 61 62 67 68 )) >>
|
31
|
+
matched_split(/\A\d{6}\z/ => [3,3],
|
32
|
+
/\A\d+\z/ => [2,2] ) | # geographic [XXX] XXXX(XX)
|
33
|
+
one_of(%w(86)) >> split(4,4) | # VoIP telephony
|
34
|
+
one_of(%w(71 73 77 78)) >> split(3,4) | # mobile
|
35
|
+
one_of(%w(4 9)) >>
|
36
|
+
matched_split(/\A\d{6}\z/ => [4,4],
|
37
|
+
/\A\d+\z/ => [3,2] ) | # geographic [X] XXXXX(XXX)
|
38
|
+
fixed(2) >> split(3,3)
|
39
|
+
end
|