phony 2.1.2 → 2.1.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.
- checksums.yaml +6 -14
- data/lib/phony/countries.rb +2 -0
- data/lib/phony/countries/brazil.rb +92 -96
- data/lib/phony/countries/serbia.rb +7 -2
- data/lib/phony/country.rb +4 -3
- data/lib/phony/national_splitters/variable.rb +3 -7
- data/spec/functional/plausibility_spec.rb +2 -1
- data/spec/lib/phony/countries_spec.rb +7 -0
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZjM2MzVlMGU3ODM4NmFmMmM0MGFjZjc5ZTk2Y2UxMmI0NjBjNDQzN2E3MWVh
|
10
|
-
ZmU1Y2NjMDE1ZTU2YWY3ZGM4MzI5ZDJlMjY0YTBhYjUwNDk4NDQ3Zjc4Zjcz
|
11
|
-
NDE4NmQ2MGJhYzk3N2RlNDEzNzUwYmNlOGRiYjE4Y2JiNGUxODA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MjM0NjU1MDNkYjA2YTU2MjBmYTU4ZmM4ZTMxYmUxNTNiNjgwOGViYjE2ODM3
|
14
|
-
MjNlZmJiZTE4YTk3ZTkwNjUwYjYzOThkODRkM2E3ZjNjMDVhZTkwYzg0Zjkx
|
15
|
-
YzJlZmU0ZDRjOGQzNzVlNDMyZTY1NmM3NTI0OTU5NWQ1N2YwOWM=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3760bfc4fdec14fa4c466bce49cb8511e1e2acae
|
4
|
+
data.tar.gz: 9cca82ff693ac209e595f10eee22071efc46c313
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 58960e8e161f56e7d9c551ffcea11371f1d0a6264d18c4640bf020c0dbb23bb3e6880959ffca17894eff35b921e168a4058a24465b2483fb1c864cd51903fe93
|
7
|
+
data.tar.gz: e6476901e1e58b17da77613f2b1bbeaef380e1e6cad9ac9ac8762f50454a8770d5977c6755560e250969ba06e7ead4f7028e45b0a05b7a5bded917b9003757b6
|
data/lib/phony/countries.rb
CHANGED
@@ -67,6 +67,8 @@ Phony.define do
|
|
67
67
|
|
68
68
|
# Belgium.
|
69
69
|
#
|
70
|
+
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Belgium
|
71
|
+
#
|
70
72
|
country '32', match(/^(70|800|90\d)\d+$/) >> split(3,3) | # Service
|
71
73
|
match(/^(4[789]\d)\d{6}$/) >> split(6) | # Mobile
|
72
74
|
one_of('2','3','4','9') >> split(3,2,2) | # Short NDCs
|
@@ -1,108 +1,104 @@
|
|
1
1
|
# Brazilian phone numbers.
|
2
2
|
#
|
3
|
-
# http://www.anatel.gov.br/hotsites/CodigosNacionaisLocalidade/TelefoneCelular-CodigosDeArea.htm
|
4
|
-
#
|
5
|
-
# Note: São Paulo recently added an extra 9 digit to all mobile phones in the 11 area code
|
6
3
|
#
|
7
|
-
|
8
|
-
|
9
|
-
'11', #Sao Paulo
|
10
|
-
'12', #Sao Paulo
|
11
|
-
'13', #Sao Paulo
|
12
|
-
'14', #Sao Paulo
|
13
|
-
'15', #Sao Paulo
|
14
|
-
'16', #Sao Paulo
|
15
|
-
'17', #Sao Paulo
|
16
|
-
'18', #Sao Paulo
|
17
|
-
'19', #Sao Paulo
|
18
|
-
|
19
|
-
'21', #Rio de Janeiro
|
20
|
-
'22', #Rio de Janeiro
|
21
|
-
|
22
|
-
'24', #Rio de Janeiro
|
23
|
-
|
24
|
-
|
25
|
-
'27', #Espírito Santo
|
26
|
-
'28', #Espírito Santo
|
27
|
-
|
28
|
-
|
29
|
-
'31', #Minas Gerais
|
30
|
-
'32', #Minas Gerais
|
31
|
-
'33', #Minas Gerais
|
32
|
-
'34', #Minas Gerais
|
33
|
-
'35', #Minas Gerais
|
34
|
-
'36', #Minas Gerais
|
35
|
-
'37', #Minas Gerais
|
36
|
-
'38', #Minas Gerais
|
37
|
-
|
38
|
-
|
39
|
-
'41', #Paraná
|
40
|
-
'42', #Paraná
|
41
|
-
'43', #Paraná
|
42
|
-
'44', #Paraná
|
43
|
-
'45', #Paraná
|
44
|
-
'46', #Paraná
|
45
|
-
'47', #Santa Catarina
|
46
|
-
'48', #Santa Catarina
|
47
|
-
'49', #Santa Catarina
|
48
|
-
|
49
|
-
'51', #Rio Grande do Sul
|
50
|
-
'52', #Rio Grande do Sul
|
51
|
-
'53', #Rio Grande do Sul
|
52
|
-
'54', #Rio Grande do Sul
|
53
|
-
'55', #Rio Grande do Sul
|
54
|
-
|
55
|
-
'61', #Distrito Federal
|
56
|
-
'62', #Goiânia
|
57
|
-
'63', #Tocantins
|
58
|
-
'64', #Goiânia
|
59
|
-
'65', #Mato Grosso
|
60
|
-
'66', #Mato Grosso
|
61
|
-
'67', #Mato Grosso do Sul
|
62
|
-
'68', #Acre
|
63
|
-
'69', #Rondônia
|
64
|
-
|
65
|
-
'71', #Bahia
|
66
|
-
'72', #Bahia
|
67
|
-
'73', #Bahia
|
68
|
-
'74', #Bahia
|
69
|
-
'75', #Bahia
|
70
|
-
|
71
|
-
'77', #Bahia
|
72
|
-
'78', #Bahia
|
73
|
-
'79', #Sergipe
|
74
|
-
|
75
|
-
'81', #Pernambuco
|
76
|
-
'82', #Alagoas
|
77
|
-
'83', #Paraíba
|
78
|
-
'84', #Rio Grande do Norte
|
79
|
-
'85', #Ceará
|
80
|
-
'86', #Piauí
|
81
|
-
'87', #Pernambuco
|
82
|
-
'88', #Ceará
|
83
|
-
'89', #Piauí
|
84
|
-
|
85
|
-
'91', #Pará
|
86
|
-
'92', #Amazonas
|
87
|
-
'93', #Pará
|
88
|
-
'94', #Pará
|
89
|
-
'95', #Roraima
|
90
|
-
'96', #Amapá
|
91
|
-
'97', #Amazonas
|
92
|
-
'98', #Maranhão
|
93
|
-
'99', #Maranhão
|
4
|
+
# NDC Reference
|
5
|
+
# http://www.anatel.gov.br/hotsites/CodigosNacionaisLocalidade/TelefoneCelular-CodigosDeArea.htm
|
94
6
|
|
95
|
-
|
96
|
-
|
7
|
+
# 11 #Sao Paulo
|
8
|
+
# 12 #Sao Paulo
|
9
|
+
# 13 #Sao Paulo
|
10
|
+
# 14 #Sao Paulo
|
11
|
+
# 15 #Sao Paulo
|
12
|
+
# 16 #Sao Paulo
|
13
|
+
# 17 #Sao Paulo
|
14
|
+
# 18 #Sao Paulo
|
15
|
+
# 19 #Sao Paulo
|
16
|
+
#
|
17
|
+
# 21 #Rio de Janeiro
|
18
|
+
# 22 #Rio de Janeiro
|
19
|
+
#
|
20
|
+
# 24 #Rio de Janeiro
|
21
|
+
#
|
22
|
+
# 27 #Espírito Santo
|
23
|
+
# 28 #Espírito Santo
|
24
|
+
#
|
25
|
+
# 31 #Minas Gerais
|
26
|
+
# 32 #Minas Gerais
|
27
|
+
# 33 #Minas Gerais
|
28
|
+
# 34 #Minas Gerais
|
29
|
+
# 35 #Minas Gerais
|
30
|
+
# 36 #Minas Gerais
|
31
|
+
# 37 #Minas Gerais
|
32
|
+
# 38 #Minas Gerais
|
33
|
+
#
|
34
|
+
# 41 #Paraná
|
35
|
+
# 42 #Paraná
|
36
|
+
# 43 #Paraná
|
37
|
+
# 44 #Paraná
|
38
|
+
# 45 #Paraná
|
39
|
+
# 46 #Paraná
|
40
|
+
# 47 #Santa Catarina
|
41
|
+
# 48 #Santa Catarina
|
42
|
+
# 49 #Santa Catarina
|
43
|
+
#
|
44
|
+
# 51 #Rio Grande do Sul
|
45
|
+
# 52 #Rio Grande do Sul
|
46
|
+
# 53 #Rio Grande do Sul
|
47
|
+
# 54 #Rio Grande do Sul
|
48
|
+
# 55 #Rio Grande do Sul
|
49
|
+
#
|
50
|
+
# 61 #Distrito Federal
|
51
|
+
# 62 #Goiânia
|
52
|
+
# 63 #Tocantins
|
53
|
+
# 64 #Goiânia
|
54
|
+
# 65 #Mato Grosso
|
55
|
+
# 66 #Mato Grosso
|
56
|
+
# 67 #Mato Grosso do Sul
|
57
|
+
# 68 #Acre
|
58
|
+
# 69 #Rondônia
|
59
|
+
#
|
60
|
+
# 71 #Bahia
|
61
|
+
# 72 #Bahia
|
62
|
+
# 73 #Bahia
|
63
|
+
# 74 #Bahia
|
64
|
+
# 75 #Bahia
|
65
|
+
#
|
66
|
+
# 77 #Bahia
|
67
|
+
# 78 #Bahia
|
68
|
+
# 79 #Sergipe
|
69
|
+
#
|
70
|
+
# 81 #Pernambuco
|
71
|
+
# 82 #Alagoas
|
72
|
+
# 83 #Paraíba
|
73
|
+
# 84 #Rio Grande do Norte
|
74
|
+
# 85 #Ceará
|
75
|
+
# 86 #Piauí
|
76
|
+
# 87 #Pernambuco
|
77
|
+
# 88 #Ceará
|
78
|
+
# 89 #Piauí
|
79
|
+
#
|
80
|
+
# 91 #Pará
|
81
|
+
# 92 #Amazonas
|
82
|
+
# 93 #Pará
|
83
|
+
# 94 #Pará
|
84
|
+
# 95 #Roraima
|
85
|
+
# 96 #Amapá
|
86
|
+
# 97 #Amazonas
|
87
|
+
# 98 #Maranhão
|
88
|
+
# 99 #Maranhão
|
89
|
+
|
90
|
+
ndcs = /(11|12|13|14|15|16|17|18|19|21|22|24|27|28|31|32|33|34|35|36|37|38|41|42|43|44|45|46|47|48|49|51|52|53|54|55|61|62|63|64|65|66|67|68|69|71|72|73|74|75|77|78|79|81|82|83|84|85|86|87|88|89|91|92|93|94|95|96|97|98|99)\d{8}/
|
91
|
+
|
92
|
+
service = %w{ 100 128 190 191 192 193 194 197 198 199 } # State specific numbers were not added. See http://www.brasil.gov.br/navegue_por/aplicativos/agenda
|
97
93
|
|
98
94
|
special_numbers_3_4 = %w{ 0800 }
|
99
95
|
special_numbers_4 = %w{ 3003 4004 4020 }
|
100
96
|
|
101
97
|
Phony.define do
|
102
|
-
country '55', match(/^(11|12|13|14|15|16|17|18|19|21|22|24|27|28)9\d
|
98
|
+
country '55', match(/^(11|12|13|14|15|16|17|18|19|21|22|24|27|28)9\d{8}$/) >> split(5,4) |
|
99
|
+
match(ndcs) >> split(4,4) |
|
103
100
|
one_of(special_numbers_3_4) >> split(3,4) |
|
104
101
|
one_of(special_numbers_4) >> split(4) |
|
105
|
-
one_of(service) >> split(3
|
106
|
-
|
107
|
-
fixed(3) >> split(4,4)
|
102
|
+
one_of(service) >> split(3) |
|
103
|
+
fixed(3) >> split(3)
|
108
104
|
end
|
@@ -16,8 +16,13 @@ Phony.define do
|
|
16
16
|
/\A\d{5}\z/ => [3,2],
|
17
17
|
/\A\d+\z/ => [3,3]) |
|
18
18
|
one_of(%w(72)) >> split(3,3) | # ISP
|
19
|
-
one_of(%w(60 61 62 63
|
20
|
-
/\A\d{3}\z/ => [3],
|
19
|
+
one_of(%w(60 61 62 63 68 69)) >> matched_split(
|
20
|
+
/\A\d{3}\z/ => [3],
|
21
|
+
/\A\d{7}\z/ => [3,4],
|
22
|
+
/\A\d+\z/ => [3,3,4]) | # mobile, voicemail (mobile)
|
23
|
+
one_of(%w(66)) >> matched_split(
|
24
|
+
/\A\d{3}\z/ => [3],
|
25
|
+
/\A\d{6}\z/ => [3,3],
|
21
26
|
/\A\d{7}\z/ => [3,4],
|
22
27
|
/\A\d+\z/ => [3,3,4]) | # mobile, voicemail (mobile)
|
23
28
|
one_of(%w(64 65)) >> matched_split(
|
data/lib/phony/country.rb
CHANGED
@@ -24,8 +24,9 @@ module Phony
|
|
24
24
|
# TODO Rewrite.
|
25
25
|
#
|
26
26
|
def with cc, options = {}
|
27
|
-
@cc
|
28
|
-
@
|
27
|
+
@cc = cc
|
28
|
+
@countrify_regex = /\A(?!#{@cc})/
|
29
|
+
@invalid_ndcs = options[:invalid_ndcs] || []
|
29
30
|
end
|
30
31
|
|
31
32
|
# A number is split with the code handlers as given in the initializer.
|
@@ -68,7 +69,7 @@ module Phony
|
|
68
69
|
countrify! number || number
|
69
70
|
end
|
70
71
|
def countrify! number
|
71
|
-
number.sub!
|
72
|
+
number.sub! @countrify_regex, @cc
|
72
73
|
end
|
73
74
|
|
74
75
|
# Removes 0s from partially normalized numbers
|
@@ -26,9 +26,9 @@ module Phony
|
|
26
26
|
|
27
27
|
# Try for all possible mapped.
|
28
28
|
#
|
29
|
-
@mapped_ndc_min_length.upto
|
30
|
-
|
31
|
-
return [@zero, presumed_code, national_number] unless
|
29
|
+
@mapped_ndc_min_length.upto @mapped_ndc_max_length do |i|
|
30
|
+
ndcs_of_size_i = @ndcs[i]
|
31
|
+
return [@zero, presumed_code, national_number] unless ndcs_of_size_i && !ndcs_of_size_i.include?(presumed_code)
|
32
32
|
presumed_code << national_number.slice!(0..0)
|
33
33
|
end
|
34
34
|
|
@@ -45,10 +45,6 @@ module Phony
|
|
45
45
|
|
46
46
|
private
|
47
47
|
|
48
|
-
# def restructure ndc_map
|
49
|
-
# optimize ndc_map.values.flatten
|
50
|
-
# end
|
51
|
-
|
52
48
|
# Optimizes and restructures the given ndcs array.
|
53
49
|
#
|
54
50
|
def optimize ndc_ary
|
@@ -628,7 +628,8 @@ describe 'plausibility' do
|
|
628
628
|
'+381 9 123 4567',
|
629
629
|
'+381 60 123',
|
630
630
|
'+381 60 123 456 7890',
|
631
|
-
'+381 70 123 456'
|
631
|
+
'+381 70 123 456',
|
632
|
+
'+381 66 12 1234']
|
632
633
|
it_is_correct_for 'Sierra Leone', :samples => '+232 42 393 972'
|
633
634
|
it_is_correct_for 'Solomon Islands', :samples => '+677 97851'
|
634
635
|
it_is_correct_for 'Somali Democratic Republic', :samples => ['+252 1034 123 45',
|
@@ -105,6 +105,8 @@ describe 'country descriptions' do
|
|
105
105
|
it_splits '5511981231234', ['55', '11', '98123', '1234'] # São Paulo's 9 digits mobile
|
106
106
|
it_splits '552181231234', ['55', '21', '8123', '1234']
|
107
107
|
it_splits '5521981231234', ['55', '21', '98123', '1234'] # Rio de Janeiro's 9 digits mobile
|
108
|
+
it_splits '551931311234', ['55', '19', '3131', '1234'] # Rio de Janeiro's 9 digits mobile
|
109
|
+
it_splits '5519991311234', ['55', '19', '99131', '1234'] # Rio de Janeiro's 9 digits mobile
|
108
110
|
|
109
111
|
context "special states with 9 in mobile" do
|
110
112
|
%w{ 11 12 13 14 15 16 17 18 19 21 22 24 27 28}.each do |state_code|
|
@@ -118,6 +120,11 @@ describe 'country descriptions' do
|
|
118
120
|
it_splits '5540209999', ['55', '4020', '9999']
|
119
121
|
it_splits '5540048999', ['55', '4004', '8999']
|
120
122
|
end
|
123
|
+
|
124
|
+
context "service numbers" do
|
125
|
+
it_splits '55100', ['55', '100', ""]
|
126
|
+
it_splits '55199', ['55', '199', ""]
|
127
|
+
end
|
121
128
|
end
|
122
129
|
describe 'Cambodia' do
|
123
130
|
it_splits '85512236142', ["855", "12", "236", "142"] # mobile (Mobitel)
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Hanke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: 'Fast international phone number (E164 standard) normalizing, splitting
|
14
14
|
and formatting. Lots of formatting options: International (+.., 00..), national
|
15
15
|
(0..), and local).'
|
16
16
|
email: florian.hanke+phony@gmail.com
|
@@ -19,6 +19,9 @@ extensions: []
|
|
19
19
|
extra_rdoc_files:
|
20
20
|
- README.textile
|
21
21
|
files:
|
22
|
+
- README.textile
|
23
|
+
- lib/phony.rb
|
24
|
+
- lib/phony/countries.rb
|
22
25
|
- lib/phony/countries/austria.rb
|
23
26
|
- lib/phony/countries/bangladesh.rb
|
24
27
|
- lib/phony/countries/belarus.rb
|
@@ -55,7 +58,6 @@ files:
|
|
55
58
|
- lib/phony/countries/united_kingdom.rb
|
56
59
|
- lib/phony/countries/uruguay.rb
|
57
60
|
- lib/phony/countries/zimbabwe.rb
|
58
|
-
- lib/phony/countries.rb
|
59
61
|
- lib/phony/country.rb
|
60
62
|
- lib/phony/country_codes.rb
|
61
63
|
- lib/phony/dsl.rb
|
@@ -70,8 +72,6 @@ files:
|
|
70
72
|
- lib/phony/national_splitters/variable.rb
|
71
73
|
- lib/phony/trunk_code.rb
|
72
74
|
- lib/phony/vanity.rb
|
73
|
-
- lib/phony.rb
|
74
|
-
- README.textile
|
75
75
|
- spec/functional/normalize_spec.rb
|
76
76
|
- spec/functional/plausibility_spec.rb
|
77
77
|
- spec/lib/phony/countries_spec.rb
|
@@ -97,17 +97,17 @@ require_paths:
|
|
97
97
|
- lib
|
98
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.0
|
110
|
+
rubygems_version: 2.2.0
|
111
111
|
signing_key:
|
112
112
|
specification_version: 4
|
113
113
|
summary: Fast international phone number (E164 standard) normalizing, splitting and
|