phony 2.12.8 → 2.12.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/phony/country.rb +1 -1
- data/lib/phony/country_codes.rb +4 -4
- data/spec/functional/format_spec.rb +116 -179
- data/spec/functional/plausibility_spec.rb +1 -2
- 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: 6e3d86e7298e2ebf5c621f7cabbafdb706863231
|
4
|
+
data.tar.gz: 90e5956221c59daa70fad43fef10c300f9525f8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05c9832e7d1de23aa9114cbc1998859dc1c29e8a69b8281b890dd134aa7b2a7efafe5e888548a4034c477c3e3240ffde87e67c6ccfcf401feca97fb3046db692
|
7
|
+
data.tar.gz: 14e74fd73e52ef533f39443d2a4d02fbe20ceae43076a28203c6d35c0d8356e7f61f27c32590c484ea361b995549b12b369e8cfabe34d9ea312e5cbd2e5d2dad
|
data/lib/phony/country.rb
CHANGED
data/lib/phony/country_codes.rb
CHANGED
@@ -28,15 +28,15 @@ module Phony
|
|
28
28
|
countries[cc.size][cc]
|
29
29
|
end
|
30
30
|
|
31
|
-
# Clean number of all non-numeric characters, initial zeros or (0
|
31
|
+
# Clean number of all non-numeric characters, initial zeros or (0.
|
32
32
|
#
|
33
|
-
@@basic_cleaning_pattern = /\A00?|\(0
|
34
|
-
# Clean number of all non-numeric characters, initial zeros or (0
|
33
|
+
@@basic_cleaning_pattern = /\A00?|\(0|\D/
|
34
|
+
# Clean number of all non-numeric characters, initial zeros or (0 and return it.
|
35
35
|
#
|
36
36
|
def clean number
|
37
37
|
clean! number && number.dup
|
38
38
|
end
|
39
|
-
# Clean number of all non-numeric characters, initial zeros or (0
|
39
|
+
# Clean number of all non-numeric characters, initial zeros or (0 and return a copy.
|
40
40
|
#
|
41
41
|
def clean! number
|
42
42
|
number.gsub!(@@basic_cleaning_pattern, EMPTY_STRING) || number
|
@@ -2,203 +2,140 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'Phony#format' do
|
4
4
|
|
5
|
-
describe 'formatted' do
|
6
|
-
it 'is an alias of format' do
|
7
|
-
Phony.formatted('41443643532').should eql '+41 44 364 35 32'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
describe 'with templates' do
|
12
|
-
it 'handles a basic template correctly' do
|
13
|
-
Phony.format('41443643532', :format => 'A%{cc}B%{ndc}C%{local}').should eql 'A41B44C364 35 32'
|
14
|
-
end
|
15
|
-
it 'handles a funky template correctly' do
|
16
|
-
Phony.format('41443643532', :format => '%{local}%{ndc}%{cc}', :local_spaces => '').should eql '36435324441'
|
17
|
-
end
|
18
|
-
it 'handles local_spaces correctly' do
|
19
|
-
Phony.format('41443643532', :format => 'A%{cc}B%{ndc}C%{local}', :local_spaces => '/').should eql 'A41B44C364/35/32'
|
20
|
-
end
|
21
|
-
it 'handles a russian example correctly' do
|
22
|
-
# https://github.com/floere/phony/issues/214
|
23
|
-
Phony.format('71234567890', :format => '(+%{cc} %{ndc}) %{local}', :local_spaces => '-').should eql '(+7 123) 45-67890'
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
5
|
describe 'cases' do
|
28
|
-
|
29
|
-
describe 'exceptions' do
|
6
|
+
describe 'Exceptions' do
|
30
7
|
it 'raises on nil' do
|
31
8
|
expect {
|
32
9
|
Phony.format nil
|
33
10
|
}.to raise_error(ArgumentError, 'Phone number cannot be nil. Use e.g. number && Phony.format(number).')
|
34
11
|
end
|
35
12
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
it 'formats Swiss national numbers' do
|
41
|
-
Phony.format('41443643532', :format => :national).should eql '044 364 35 32'
|
42
|
-
end
|
43
|
-
it 'formats Swiss service numbers' do
|
44
|
-
Phony.format('41800112233').should eql '+41 800 112 233'
|
45
|
-
end
|
46
|
-
it 'formats Austrian numbers' do
|
47
|
-
Phony.format('43198110').should eql '+43 1 98110'
|
48
|
-
end
|
49
|
-
it 'formats Danish national numbers' do
|
50
|
-
Phony.format('4540506070', format: :national).should eql '40 50 60 70'
|
51
|
-
end
|
52
|
-
it 'formats American numbers' do
|
53
|
-
Phony.format('18705551122').should eql '+1 870 555 1122'
|
54
|
-
end
|
55
|
-
it 'formats New Zealand 021 6-digit mobile numbers' do
|
56
|
-
Phony.format('6421123456').should eql '+64 21 123 456'
|
13
|
+
|
14
|
+
describe 'Templates' do
|
15
|
+
it 'handles a basic template correctly' do
|
16
|
+
Phony.format('41443643532', :format => 'A%{cc}B%{ndc}C%{local}').should eql 'A41B44C364 35 32'
|
57
17
|
end
|
58
|
-
it '
|
59
|
-
Phony.format('
|
18
|
+
it 'handles a funky template correctly' do
|
19
|
+
Phony.format('41443643532', :format => '%{local}%{ndc}%{cc}', :local_spaces => '').should eql '36435324441'
|
60
20
|
end
|
61
|
-
it '
|
62
|
-
Phony.format('
|
21
|
+
it 'handles local_spaces correctly' do
|
22
|
+
Phony.format('41443643532', :format => 'A%{cc}B%{ndc}C%{local}', :local_spaces => '/').should eql 'A41B44C364/35/32'
|
63
23
|
end
|
64
|
-
it '
|
65
|
-
|
66
|
-
|
67
|
-
it 'formats Indian numbers' do
|
68
|
-
Phony.format('914433993939').should eql '+91 44 339 93 939'
|
69
|
-
end
|
70
|
-
it 'formats Russian numbers' do
|
71
|
-
Phony.format(Phony.normalize('+370 800 12345'), :format => :international).should eql '+370 800 12 345'
|
72
|
-
end
|
73
|
-
it 'formats Russian numbers' do
|
74
|
-
Phony.format(Phony.normalize('+7 812 123 4567'), :format => :international).should eql '+7 812 123-45-67'
|
75
|
-
end
|
76
|
-
it 'formats Russian numbers' do
|
77
|
-
Phony.format(Phony.normalize('+370 800 12345'), :format => :national).should eql '8800 12 345'
|
78
|
-
end
|
79
|
-
it 'formats Russian numbers' do
|
80
|
-
Phony.format(Phony.normalize('+7 812 123 4567'), :format => :national).should eql '8812 123-45-67'
|
24
|
+
it 'handles a russian example correctly' do
|
25
|
+
# https://github.com/floere/phony/issues/214
|
26
|
+
Phony.format('71234567890', :format => '(+%{cc} %{ndc}) %{local}', :local_spaces => '-').should eql '(+7 123) 45-67890'
|
81
27
|
end
|
82
28
|
end
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
it 'formats austrian numbers' do
|
97
|
-
Phony.format('43198110', :format => :international_absolute).should eql '+43 1 98110'
|
98
|
-
end
|
99
|
-
it 'formats french numbers' do
|
100
|
-
Phony.format('33142278186', :format => :+).should eql '+33 1 42 27 81 86'
|
101
|
-
end
|
102
|
-
it 'formats austrian numbers' do
|
103
|
-
Phony.format('43198110', :format => :international_relative).should eql '0043 1 98110'
|
104
|
-
end
|
105
|
-
it 'formats liechtensteiner numbers' do
|
106
|
-
Phony.format('4233841148', :format => :international_relative).should eql '00423 384 11 48'
|
107
|
-
end
|
108
|
-
context 'with no spaces' do
|
109
|
-
it 'formats north american numbers' do
|
110
|
-
Phony.format('18091231234', :format => :international, :spaces => '').should eql '+18091231234'
|
111
|
-
end
|
112
|
-
it 'formats austrian numbers' do
|
113
|
-
Phony.format('43198110', :format => :international, :spaces => '').should eql '+43198110'
|
114
|
-
end
|
115
|
-
it 'formats austrian numbers' do
|
116
|
-
Phony.format('43198110', :format => :international_absolute, :spaces => '').should eql '+43198110'
|
117
|
-
end
|
118
|
-
it 'formats french numbers' do
|
119
|
-
Phony.format('33142278186', :format => :+, :spaces => '').should eql '+33142278186'
|
120
|
-
end
|
121
|
-
it 'formats italian numbers' do
|
122
|
-
Phony.format('393333337647', :format => :international).should eql '+39 333 333 7647'
|
123
|
-
Phony.format('390108480161', :format => :international).should eql '+39 010 8480161'
|
124
|
-
end
|
125
|
-
it 'formats austrian numbers' do
|
126
|
-
Phony.format('43198110', :format => :international_relative, :spaces => '').should eql '0043198110'
|
127
|
-
end
|
128
|
-
it 'formats liechtensteiner numbers' do
|
129
|
-
Phony.format('4233841148', :format => :international_relative, :spaces => '').should eql '004233841148'
|
130
|
-
end
|
131
|
-
end
|
132
|
-
context 'with special spaces' do
|
133
|
-
it 'formats swiss numbers' do
|
134
|
-
Phony.format('41443643532', :format => :international).should eql '+41 44 364 35 32'
|
135
|
-
end
|
136
|
-
it 'formats north american numbers' do
|
137
|
-
Phony.format('18091231234', :format => :international, :spaces => :-).should eql '+1-809-123-1234'
|
138
|
-
end
|
139
|
-
it 'formats austrian numbers' do
|
140
|
-
Phony.format('43198110', :format => :international, :spaces => :-).should eql '+43-1-98110'
|
141
|
-
end
|
142
|
-
it 'formats austrian numbers' do
|
143
|
-
Phony.format('43198110', :format => :international_absolute, :spaces => :-).should eql '+43-1-98110'
|
144
|
-
end
|
145
|
-
it 'formats french numbers' do
|
146
|
-
Phony.format('33142278186', :format => :+, :spaces => :-).should eql '+33-1-42-27-81-86'
|
147
|
-
end
|
148
|
-
it 'formats austrian numbers' do
|
149
|
-
Phony.format('43198110', :format => :international_relative, :spaces => :-).should eql '0043-1-98110'
|
150
|
-
end
|
151
|
-
it 'formats liechtensteiner numbers' do
|
152
|
-
Phony.format('4233841148', :format => :international_relative, :spaces => :-).should eql '00423-384-11-48'
|
153
|
-
end
|
154
|
-
end
|
155
|
-
describe "'unsupported' countries" do
|
156
|
-
it 'formats as a single block' do
|
157
|
-
Phony.format('88132155605220').should eql '+881 32155605220'
|
158
|
-
end
|
159
|
-
it 'formats as a single block, regardless of format' do
|
160
|
-
Phony.format('8811819372205', :format => :international).should eql '+881 1819372205'
|
161
|
-
end
|
162
|
-
it 'formats as a single block, respecting custom spaces' do
|
163
|
-
Phony.format('8811819372205', :spaces => :-).should eql '+881-1819372205'
|
164
|
-
end
|
165
|
-
it 'formats as a single block, even without spaces' do
|
166
|
-
Phony.format('8811819372205', :spaces => '').should eql '+8811819372205'
|
29
|
+
|
30
|
+
def self.for_each_from tsv_file_name
|
31
|
+
require 'csv'
|
32
|
+
describe "from file #{tsv_file_name}" do
|
33
|
+
CSV.open(tsv_file_name, headers: true, col_sep: "\t").each.with_index do |row, index|
|
34
|
+
country, expected, original, format, spaces, local_spaces = *row.
|
35
|
+
values_at('Country', 'Expected', 'Original', 'Format', 'Spaces', 'Local Spaces')
|
36
|
+
options = {}
|
37
|
+
options[:format] = format.to_sym if format
|
38
|
+
options[:spaces] = spaces.to_sym if spaces
|
39
|
+
it "(row #{index + 2}) #{country}: #{expected} from #{original} with #{format}, #{spaces}, #{local_spaces}" do
|
40
|
+
Phony.format(original, options).should eql expected
|
41
|
+
end
|
167
42
|
end
|
168
43
|
end
|
169
44
|
end
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
it '
|
181
|
-
|
182
|
-
|
183
|
-
it '
|
184
|
-
|
185
|
-
|
186
|
-
it '
|
187
|
-
Phony.format('14159224711', :format => :national).should eql '1 415 922 4711'
|
188
|
-
end
|
189
|
-
it 'formats Dutch numbers with a trunk code' do
|
190
|
-
Phony.format('311012341234', :format => :national).should eql '010 123 41234'
|
191
|
-
end
|
45
|
+
|
46
|
+
# Countries.
|
47
|
+
#
|
48
|
+
for_each_from 'spec/functional/format.tab'
|
49
|
+
|
50
|
+
describe 'Austria' do
|
51
|
+
it { Phony.format('43198110').should eql '+43 1 98110' }
|
52
|
+
it { Phony.format('43198110', :format => :international).should eql '+43 1 98110' }
|
53
|
+
it { Phony.format('43198110', :format => :international_absolute).should eql '+43 1 98110' }
|
54
|
+
it { Phony.format('43198110', :format => :international_relative).should eql '0043 1 98110' }
|
55
|
+
it { Phony.format('43198110', :format => :international, :spaces => '').should eql '+43198110' }
|
56
|
+
it { Phony.format('43198110', :format => :international_absolute, :spaces => '').should eql '+43198110' }
|
57
|
+
it { Phony.format('43198110', :format => :international_relative, :spaces => '').should eql '0043198110' }
|
58
|
+
it { Phony.format('43198110', :format => :international, :spaces => :-).should eql '+43-1-98110' }
|
59
|
+
it { Phony.format('43198110', :format => :international_absolute, :spaces => :-).should eql '+43-1-98110' }
|
60
|
+
it { Phony.format('43198110', :format => :international_relative, :spaces => :-).should eql '0043-1-98110' }
|
61
|
+
it { Phony.format('43198110', :format => :national).should eql '01 98110' }
|
192
62
|
end
|
193
|
-
describe '
|
194
|
-
it '
|
195
|
-
|
196
|
-
|
197
|
-
it '
|
198
|
-
|
199
|
-
|
63
|
+
describe 'Denmark' do
|
64
|
+
it { Phony.format('4540506070', format: :national).should eql '40 50 60 70' }
|
65
|
+
end
|
66
|
+
describe 'France' do
|
67
|
+
it { Phony.format('33142278186', :format => :+).should eql '+33 1 42 27 81 86' }
|
68
|
+
it { Phony.format('33142278186', :format => :+, :spaces => '').should eql '+33142278186' }
|
69
|
+
it { Phony.format('33142278186', :format => :+, :spaces => :-).should eql '+33-1-42-27-81-86' }
|
70
|
+
end
|
71
|
+
describe 'India' do
|
72
|
+
it { Phony.format('914433993939').should eql '+91 44 339 93 939' }
|
73
|
+
end
|
74
|
+
describe 'Italy' do
|
75
|
+
it { Phony.format('393333337647', :format => :international).should eql '+39 333 333 7647' }
|
76
|
+
it { Phony.format('390108480161', :format => :international).should eql '+39 010 8480161' }
|
77
|
+
it { Phony.format('393333337647', :format => :national).should eql '333 333 7647' }
|
78
|
+
it { Phony.format('390108480161', :format => :national).should eql '010 8480161' }
|
79
|
+
end
|
80
|
+
describe 'Liechtenstein' do
|
81
|
+
it { Phony.format('4233841148', :format => :international_relative).should eql '00423 384 11 48' }
|
82
|
+
it { Phony.format('4233841148', :format => :international_relative, :spaces => '').should eql '004233841148' }
|
83
|
+
it { Phony.format('4233841148', :format => :international_relative, :spaces => :-).should eql '00423-384-11-48' }
|
84
|
+
end
|
85
|
+
describe 'NANP' do
|
86
|
+
it { Phony.format('18705551122').should eql '+1 870 555 1122' }
|
87
|
+
it { Phony.format('18091231234', :format => :international).should eql '+1 809 123 1234' }
|
88
|
+
it { Phony.format('18091231234', :format => :international, :spaces => '').should eql '+18091231234' }
|
89
|
+
# Gets a trunk code.
|
90
|
+
it { Phony.format('14152223333', :format => :national).should eql '1 415 222 3333' }
|
91
|
+
# Does not show a trunk code.
|
92
|
+
it { Phony.format('14152223333', :format => :national, :trunk => false).should eql '415 222 3333' }
|
93
|
+
it { Phony.format('18091231234', :format => :international, :spaces => :-).should eql '+1-809-123-1234' }
|
94
|
+
# leading trunk
|
95
|
+
it { Phony.format('14159224711', :format => :national).should eql '1 415 922 4711' }
|
96
|
+
end
|
97
|
+
describe 'Netherlands' do
|
98
|
+
it { Phony.format('311012341234', :format => :national).should eql '010 123 41234' }
|
99
|
+
end
|
100
|
+
describe 'New Zealand' do
|
101
|
+
it { Phony.format('6421123456').should eql '+64 21 123 456' }
|
102
|
+
it { Phony.format('64211234567').should eql '+64 21 123 4567' }
|
103
|
+
it { Phony.format('642112345678').should eql '+64 21 12 345 678' }
|
104
|
+
it { Phony.format('6493791234').should eql '+64 9 379 1234' }
|
105
|
+
end
|
106
|
+
describe 'Russia' do
|
107
|
+
it { Phony.format(Phony.normalize('+370 800 12345'), :format => :international).should eql '+370 800 12 345' }
|
108
|
+
it { Phony.format(Phony.normalize('+7 812 123 4567'), :format => :international).should eql '+7 812 123-45-67' }
|
109
|
+
it { Phony.format(Phony.normalize('+370 800 12345'), :format => :national).should eql '8800 12 345' }
|
110
|
+
it { Phony.format(Phony.normalize('+7 812 123 4567'), :format => :national).should eql '8812 123-45-67' }
|
111
|
+
end
|
112
|
+
describe 'Switzerland' do
|
113
|
+
it { Phony.format('41443643532').should eql '+41 44 364 35 32' }
|
114
|
+
it { Phony.format('41443643532', :format => :national).should eql '044 364 35 32' }
|
115
|
+
it { Phony.format('41800112233').should eql '+41 800 112 233' }
|
116
|
+
it { Phony.format('41443643532', :format => :international).should eql '+41 44 364 35 32' }
|
117
|
+
it { Phony.format('41443643532', :format => :national).should eql '044 364 35 32' }
|
118
|
+
it { Phony.format('41800112233', :format => :national).should eql '0800 112 233' }
|
119
|
+
it { Phony.format('41443643532', :format => :local).should eql '364 35 32' }
|
120
|
+
it { Phony.format('493038625454', :format => :local).should eql '386 25454' }
|
121
|
+
end
|
122
|
+
describe 'yet unsupported' do
|
123
|
+
# formats as a single block
|
124
|
+
it { Phony.format('88132155605220').should eql '+881 32155605220' }
|
125
|
+
# formats as a single block, regardless of format
|
126
|
+
it { Phony.format('8811819372205', :format => :international).should eql '+881 1819372205' }
|
127
|
+
# formats as a single block, respecting custom spaces
|
128
|
+
it { Phony.format('8811819372205', :spaces => :-).should eql '+881-1819372205' }
|
129
|
+
# formats as a single block, even without spaces
|
130
|
+
it { Phony.format('8811819372205', :spaces => '').should eql '+8811819372205' }
|
200
131
|
end
|
201
132
|
|
202
133
|
end
|
134
|
+
|
135
|
+
describe 'formatted' do
|
136
|
+
it 'is an alias of format' do
|
137
|
+
Phony.formatted('41443643532').should eql '+41 44 364 35 32'
|
138
|
+
end
|
139
|
+
end
|
203
140
|
|
204
141
|
end
|
@@ -491,12 +491,11 @@ describe 'plausibility' do
|
|
491
491
|
Phony.plausible?('+386 41 123 4567').should be_false
|
492
492
|
end
|
493
493
|
|
494
|
-
# TODO: more needs to be done here
|
495
|
-
#
|
496
494
|
it "is correct for Swiss numbers" do
|
497
495
|
Phony.plausible?('+41 44 111 22 33').should be_true
|
498
496
|
Phony.plausible?('+41 44 111 22 334').should be_false
|
499
497
|
Phony.plausible?('+41 44 111 22').should be_false
|
498
|
+
Phony.plausible?('+41 (044) 364 35 33').should be_true
|
500
499
|
end
|
501
500
|
|
502
501
|
it "is correct for Swedish numbers" do
|
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.12.
|
4
|
+
version: 2.12.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Hanke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-08 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
|