phony 2.15.44 → 2.15.46
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 +4 -4
- data/lib/phony/countries.rb +11 -6
- data/lib/phony/countries/croatia.rb +11 -16
- data/lib/phony/countries/taiwan.rb +19 -46
- data/spec/functional/plausibility_spec.rb +21 -8
- data/spec/lib/phony/countries_spec.rb +26 -10
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 425702e9ff19dfa1d39a04347c5aa17aa68ee0c9
|
|
4
|
+
data.tar.gz: 0d33325a64b947754d840bb30f59288157c06c36
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 944eef26079290a5ed72511efdb219eefe5328918964ad80febc0a368a4e759436cee633cfe3857f9a43c285ad9cd6fe138f770c2da427a252b01290050854f2
|
|
7
|
+
data.tar.gz: 98c7fc92e39eed57867085e44bd77f54965405ffbbce9692c5eb6620cd00b6a895ac7558c7c678c9a5d32f0250cace9dca2ef48ea2b49a91a75c9dd1da426382
|
data/lib/phony/countries.rb
CHANGED
|
@@ -472,9 +472,11 @@ Phony.define do
|
|
|
472
472
|
|
|
473
473
|
# Zambia
|
|
474
474
|
# http://www.wtng.info/wtng-260-zm.html
|
|
475
|
+
# https://github.com/googlei18n/libphonenumber/
|
|
475
476
|
country '260',
|
|
476
|
-
match(/^(9(
|
|
477
|
-
match(/^(
|
|
477
|
+
match(/^(9(5[034589]|[67]\d))/) >> split(6) | # Mobile
|
|
478
|
+
match(/^(800)/) >> split(3,3) | # Toll free
|
|
479
|
+
match(/^(21[1-8])/) >> split(6) # Fixed
|
|
478
480
|
|
|
479
481
|
# Madagascar http://www.wtng.info/wtng-261-mg.html
|
|
480
482
|
# http://www.itu.int/oth/T020200007F/en
|
|
@@ -751,9 +753,11 @@ Phony.define do
|
|
|
751
753
|
|
|
752
754
|
# Slovak Republic.
|
|
753
755
|
#
|
|
754
|
-
country '421', match(/^(9\d\d).+$/)
|
|
755
|
-
|
|
756
|
-
|
|
756
|
+
country '421', match(/^(9\d\d).+$/) >> split(6) | # Mobile
|
|
757
|
+
match(/\A(2)1\d{2,4}\z/) >> split(3..5) | # Bratislava Short
|
|
758
|
+
match(/\A(\d{2})1\d{2,4}\z/) >> split(3..5) | # 2-digit NDCs Short
|
|
759
|
+
one_of('2') >> split(8) | # Bratislava
|
|
760
|
+
fixed(2) >> split(7) # 2-digit NDCs
|
|
757
761
|
|
|
758
762
|
country '422', todo # Spare code
|
|
759
763
|
country '423', none >> split(3,2,2) # Liechtenstein (Principality of)
|
|
@@ -986,7 +990,8 @@ Phony.define do
|
|
|
986
990
|
# Macao, China
|
|
987
991
|
country '853', # Macao, China
|
|
988
992
|
match(/^(28)\d+$/) >> split(2,4) | # Landline.
|
|
989
|
-
match(/^(
|
|
993
|
+
match(/^(8)\d+$/) >> split(3,4) | # Landline.
|
|
994
|
+
match(/^(6)\d+$/) >> split(3,4) # Mobile.
|
|
990
995
|
|
|
991
996
|
country '854', todo # Spare code
|
|
992
997
|
|
|
@@ -3,24 +3,19 @@
|
|
|
3
3
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Croatia
|
|
4
4
|
# http://dialcode.org/Europe/Croatia/
|
|
5
5
|
# http://www.howtocallabroad.com/croatia/
|
|
6
|
-
#
|
|
7
|
-
# Landline numbers are composed by a 2 digits area code + 6 fixed digits
|
|
8
|
-
# Mobile numbers are composed by a 2 digits prefix + 7 fixed digits
|
|
6
|
+
# https://github.com/googlei18n/libphonenumber/
|
|
9
7
|
#
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
91
|
|
13
|
-
92
|
|
14
|
-
95
|
|
15
|
-
97
|
|
16
|
-
977
|
|
17
|
-
98
|
|
18
|
-
99
|
|
19
|
-
)
|
|
9
|
+
landline = /^(2[0-3]|3[1-5]|4[02-47-9]|5[1-3])/
|
|
20
10
|
|
|
21
11
|
Phony.define do
|
|
22
12
|
country '385', trunk('0') |
|
|
23
|
-
one_of(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
one_of('1') >> split(4, 3) | # Zagreb
|
|
14
|
+
match(/^(80[01])/) >> matched_split(
|
|
15
|
+
/\A\d{4}\z/ => [4],
|
|
16
|
+
/\A\d{6}\z/ => [3,3]) | # Toll free
|
|
17
|
+
match(/^(9\d)/) >> split(3, 3..4) | # Mobile
|
|
18
|
+
match(landline) >> split(3, 3..4) | # Landline
|
|
19
|
+
match(/^(6[01])/) >> split(2,2..3) | # Premium rate
|
|
20
|
+
match(/^([67]\d)/) >> split(3,3..4) # Premium, personal and UAN
|
|
21
|
+
end
|
|
@@ -1,52 +1,25 @@
|
|
|
1
1
|
# Taiwan
|
|
2
|
-
# https://
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
ndcs_with_8_subscriber_numbers = %w(1 2)
|
|
6
|
-
|
|
7
|
-
ndcs_with_7_subscriber_numbers = %w(3 4 5 6 7 8)
|
|
8
|
-
|
|
9
|
-
ndcs_with_6_subscriber_numbers = %w(
|
|
10
|
-
33
|
|
11
|
-
34
|
|
12
|
-
35
|
|
13
|
-
36
|
|
14
|
-
37
|
|
15
|
-
38
|
|
16
|
-
39
|
|
17
|
-
42
|
|
18
|
-
43
|
|
19
|
-
44
|
|
20
|
-
45
|
|
21
|
-
46
|
|
22
|
-
47
|
|
23
|
-
48
|
|
24
|
-
49
|
|
25
|
-
55
|
|
26
|
-
56
|
|
27
|
-
62
|
|
28
|
-
66
|
|
29
|
-
67
|
|
30
|
-
69
|
|
31
|
-
88
|
|
32
|
-
89
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
ndcs_with_5_subscriber_numbers = %w(823 826 827)
|
|
2
|
+
# https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E9%95%B7%E9%80%94%E9%9B%BB%E8%A9%B1%E5%8D%80%E8%99%9F%E8%A1%A8
|
|
3
|
+
# https://en.wikipedia.org/wiki/Telephone_numbers_in_Taiwan
|
|
36
4
|
|
|
37
5
|
Phony.define do
|
|
38
6
|
country '886',
|
|
39
7
|
trunk('0') |
|
|
40
|
-
|
|
41
|
-
match(/\A(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/\A\d
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
8
|
+
match(/\A(826)\d{5}\z/) >> split(1,4) | # 烏坵, start with 0826, plus 5 digits
|
|
9
|
+
match(/\A(836)\d{5}\z/) >> split(1,4) | # 馬祖, start with 0836, plus 5 digits
|
|
10
|
+
match(/\A(82)\d{6}\z/) >> split(2,4) | # 金門, start with 082, plus 6 digits
|
|
11
|
+
match(/\A(89)\d{6}\z/) >> split(2,4) | # 臺東, start with 089, plus 6 digits
|
|
12
|
+
match(/\A(8)\d{7}\z/) >> split(3,4) | # 屏東, start with 08, plus 7 digits
|
|
13
|
+
match(/\A(49)\d{7}\z/) >> split(3,4) | # 南投, start with 049, plus 7 digits
|
|
14
|
+
one_of(%w(4)) >> matched_split(
|
|
15
|
+
/\A\d{7}\z/ => [3,4], # 彰化, start with 04, plus 7 digits
|
|
16
|
+
/\A\d+\z/ => [4,4])| # 臺中, start with 04, plus 8 digits
|
|
17
|
+
match(/\A(37)\d{6}\z/) >> split(2,4) | # 苗栗, start with 037, plus 6 digits
|
|
18
|
+
match(/\A(3)\d{7}\z/) >> split(3,4) | # 桃園 新竹 花蓮 宜蘭, start with 03, plus 7 digits
|
|
19
|
+
match(/\A(5)\d{7}\z/) >> split(3,4) | # 嘉義 雲林, start with 05, plus 7 digits
|
|
20
|
+
match(/\A(6)\d{7}\z/) >> split(3,4) | # 臺南 澎湖, start with 06, plus 7 digits
|
|
21
|
+
match(/\A(7)\d{7}\z/) >> split(3,4) | # 高雄, start with 07, plus 7 digits
|
|
22
|
+
match(/\A(2)\d{8}\z/) >> split(4,4) | # 臺北, start with 02, plus 8 digits
|
|
23
|
+
match(/\A(9\d\d)\d{6}\z/) >> split(3,3) | # mobile phone, start with 09, plus 8 digits, but local usually show 4-3-3.
|
|
24
|
+
fixed(2) >> split(4,4) # fallback unknown
|
|
52
25
|
end
|
|
@@ -53,6 +53,16 @@ describe 'plausibility' do
|
|
|
53
53
|
it_is_correct_for 'Congo', :samples => '+242 1234 56789'
|
|
54
54
|
it_is_correct_for 'Cook Islands', :samples => '+682 71928'
|
|
55
55
|
it_is_correct_for 'Costa Rica', :samples => '+506 2 234 5678'
|
|
56
|
+
it 'is correct for Croatia' do
|
|
57
|
+
Phony.plausible?('+385 21 695 900').should be_true # Landline
|
|
58
|
+
Phony.plausible?('+385 1 4566 666').should be_true # Landline (Zagreb)
|
|
59
|
+
Phony.plausible?('+385 99 444 999').should be_true # Mobile
|
|
60
|
+
Phony.plausible?('+385 91 896 7509').should be_true # Mobile
|
|
61
|
+
Phony.plausible?('+385 800 1234').should be_true # Toll free
|
|
62
|
+
Phony.plausible?('+385 800 123 456').should be_true # Toll free
|
|
63
|
+
Phony.plausible?('+385 60 12 345').should be_true # Premium rate
|
|
64
|
+
Phony.plausible?('+385 62 123 456').should be_true # Premium, personal and UAN
|
|
65
|
+
end
|
|
56
66
|
it_is_correct_for "Côte d'Ivoire", :samples => '+225 9358 8764'
|
|
57
67
|
it_is_correct_for 'Democratic Republic of Timor-Leste', :samples => ['+670 465 7886', '+670 7465 7886']
|
|
58
68
|
it_is_correct_for 'Democratic Republic of the Congo', :samples => '+243 80 864 9794'
|
|
@@ -171,6 +181,9 @@ describe 'plausibility' do
|
|
|
171
181
|
Phony.plausible?('+231 4 123 456').should be_true
|
|
172
182
|
Phony.plausible?('+231 77 123 4567').should be_true
|
|
173
183
|
end
|
|
184
|
+
it_is_correct_for 'Macao', :samples => ['+853 28 12 3456',
|
|
185
|
+
'+853 8 123 4567',
|
|
186
|
+
'+853 6 123 4567',]
|
|
174
187
|
it_is_correct_for 'Macedonia', :samples => ['+389 2 123 4567',
|
|
175
188
|
'+389 7 124 3456',
|
|
176
189
|
'+389 7 234 5678']
|
|
@@ -270,15 +283,12 @@ describe 'plausibility' do
|
|
|
270
283
|
'+963 31 123 4567',
|
|
271
284
|
'+963 15 731 234',
|
|
272
285
|
'+963 9 1234 5678']
|
|
273
|
-
it_is_correct_for 'Taiwan', :samples => ['+886
|
|
274
|
-
'+886 612 123 4567',
|
|
275
|
-
'+886 2 1234 5678',
|
|
286
|
+
it_is_correct_for 'Taiwan', :samples => ['+886 6 123 4567',
|
|
276
287
|
'+886 3 123 4567',
|
|
277
288
|
'+886 33 123 456',
|
|
278
289
|
'+886 827 123 45',
|
|
279
|
-
'+886
|
|
280
|
-
|
|
281
|
-
'+886 94 991 345']
|
|
290
|
+
'+886 4 123 1234',
|
|
291
|
+
'+886 9 1234 5678']
|
|
282
292
|
it_is_correct_for 'Tajikistan', :samples => ['+992 3130 123 45',
|
|
283
293
|
'+992 331700 123',
|
|
284
294
|
'+992 372 123 345',
|
|
@@ -362,8 +372,11 @@ describe 'plausibility' do
|
|
|
362
372
|
'+967 77 123 4567',
|
|
363
373
|
'+967 58 1234']
|
|
364
374
|
it 'is correct for Zambia' do
|
|
365
|
-
Phony.plausible?('+260
|
|
366
|
-
Phony.plausible?('+260
|
|
375
|
+
Phony.plausible?('+260 211 123456').should be_true # Fixed
|
|
376
|
+
Phony.plausible?('+260 955 123456').should be_true # Mobile
|
|
377
|
+
Phony.plausible?('+260 967 123456').should be_true # Mobile
|
|
378
|
+
Phony.plausible?('+260 978 123456').should be_true # Mobile
|
|
379
|
+
Phony.plausible?('+260 800 123 456').should be_true # Toll free
|
|
367
380
|
end
|
|
368
381
|
it_is_correct_for 'Zimbabwe', :samples => [['+263 2582 123 456', '+263 2582 123'],
|
|
369
382
|
['+263 147 123 456', '+263 147 123'],
|
|
@@ -201,7 +201,12 @@ describe 'country descriptions' do
|
|
|
201
201
|
describe 'Croatia' do
|
|
202
202
|
it_splits '38521695900', %w( 385 21 695 900 ) # Landline
|
|
203
203
|
it_splits '38514566666', %w( 385 1 4566 666 ) # Landline (Zagreb)
|
|
204
|
+
it_splits '38599444999', %w( 385 99 444 999 ) # Mobile
|
|
204
205
|
it_splits '385918967509', %w( 385 91 896 7509 ) # Mobile
|
|
206
|
+
it_splits '3858001234', %w( 385 800 1234 ) # Toll free
|
|
207
|
+
it_splits '385800123456', %w( 385 800 123 456 ) # Toll free
|
|
208
|
+
it_splits '3856012345', %w( 385 60 12 345 ) # Premium rate
|
|
209
|
+
it_splits '38562123456', %w( 385 62 123 456 ) # Premium, personal and UAN
|
|
205
210
|
end
|
|
206
211
|
describe 'Cuba' do
|
|
207
212
|
it_splits '5351231234', ['53', '5123', '1234'] # Mobile
|
|
@@ -474,6 +479,7 @@ describe 'country descriptions' do
|
|
|
474
479
|
end
|
|
475
480
|
describe 'Macao' do
|
|
476
481
|
it_splits '85328123456', ["853", "28", "12", "3456"] # Landline
|
|
482
|
+
it_splits '85381234567', ["853", "8", "123", "4567"] # Landline
|
|
477
483
|
it_splits '85361234567', ["853", "6", "123", "4567"] # Mobile
|
|
478
484
|
end
|
|
479
485
|
describe 'Malaysia' do
|
|
@@ -660,7 +666,9 @@ describe 'country descriptions' do
|
|
|
660
666
|
describe 'Slovakia' do
|
|
661
667
|
it_splits '421912123456', ['421', '912', '123456'] # Mobile
|
|
662
668
|
it_splits '421212345678', ['421', '2', '12345678'] # Bratislava
|
|
669
|
+
it_splits '4212123', ['421', '2', '123'] # Bratislava Short
|
|
663
670
|
it_splits '421371234567', ['421', '37', '1234567'] # Nitra / Other
|
|
671
|
+
it_splits '42137123', ['421', '37', '123'] # Nitra / Other Short
|
|
664
672
|
end
|
|
665
673
|
|
|
666
674
|
describe 'Slovenia' do
|
|
@@ -777,8 +785,11 @@ describe 'country descriptions' do
|
|
|
777
785
|
it_splits '84412345678', ['84', '4', '1234', '5678'] # Hanoi
|
|
778
786
|
end
|
|
779
787
|
describe 'Zambia' do
|
|
780
|
-
it_splits '
|
|
781
|
-
it_splits '
|
|
788
|
+
it_splits '260211123456', ['260', '211', '123456'] # Fixed
|
|
789
|
+
it_splits '260955123456', ['260', '955', '123456'] # Mobile
|
|
790
|
+
it_splits '260967123456', ['260', '967', '123456'] # Mobile
|
|
791
|
+
it_splits '260978123456', ['260', '978', '123456'] # Mobile
|
|
792
|
+
it_splits '260800123456', ['260', '800', '123', '456'] # Toll free
|
|
782
793
|
end
|
|
783
794
|
describe 'New Zealand' do
|
|
784
795
|
it_splits '6491234567', ['64', '9', '123', '4567']
|
|
@@ -1211,16 +1222,21 @@ describe 'country descriptions' do
|
|
|
1211
1222
|
it_splits '963912345678', %w(963 9 1234 5678)
|
|
1212
1223
|
end
|
|
1213
1224
|
describe 'Taiwan' do
|
|
1214
|
-
it_splits '88618123456', %w(886 18 123 456)
|
|
1215
|
-
it_splits '8866121234567', %w(886 612 123 4567)
|
|
1216
1225
|
it_splits '886212345678', %w(886 2 1234 5678)
|
|
1217
1226
|
it_splits '88631234567', %w(886 3 123 4567)
|
|
1218
|
-
it_splits '
|
|
1219
|
-
it_splits '
|
|
1220
|
-
it_splits '
|
|
1221
|
-
it_splits '
|
|
1222
|
-
it_splits '
|
|
1223
|
-
it_splits '
|
|
1227
|
+
it_splits '88651234567', %w(886 5 123 4567)
|
|
1228
|
+
it_splits '88661234567', %w(886 6 123 4567)
|
|
1229
|
+
it_splits '88671234567', %w(886 7 123 4567)
|
|
1230
|
+
it_splits '88633123456', %w(886 3 312 3456)
|
|
1231
|
+
it_splits '88637123456', %w(886 37 12 3456)
|
|
1232
|
+
it_splits '88682712345', %w(886 82 71 2345)
|
|
1233
|
+
it_splits '88689712345', %w(886 89 71 2345)
|
|
1234
|
+
it_splits '88682672345', %w(886 826 7 2345)
|
|
1235
|
+
it_splits '88683672345', %w(886 836 7 2345)
|
|
1236
|
+
it_splits '88641212345', %w(886 4 121 2345)
|
|
1237
|
+
it_splits '886412123456', %w(886 4 1212 3456)
|
|
1238
|
+
it_splits '886491234567', %w(886 49 123 4567)
|
|
1239
|
+
it_splits '886901234567', %w(886 901 234 567)
|
|
1224
1240
|
end
|
|
1225
1241
|
describe 'Togolese Republic' do
|
|
1226
1242
|
it_splits '22812345678', ['228', false, '1234', '5678']
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phony
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.15.
|
|
4
|
+
version: 2.15.46
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Hanke
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-06-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: 'Fast international phone number (E164 standard) normalizing, splitting
|
|
14
14
|
and formatting. Lots of formatting options: International (+.., 00..), national
|