phony 1.7.9 → 1.7.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/phony/countries/united_kingdom.rb +16 -16
- data/spec/lib/phony/countries_spec.rb +9 -14
- metadata +1 -1
@@ -1,4 +1,5 @@
|
|
1
|
-
# The United Kingdom uses a variable-length ndc code,
|
1
|
+
# The United Kingdom uses a variable-length ndc code,
|
2
|
+
# thus we use a separate file to not let all_other.rb explode.
|
2
3
|
#
|
3
4
|
# Note: The United Kingdom uses a variable ndc format from length 2 to 5.
|
4
5
|
#
|
@@ -9,13 +10,13 @@
|
|
9
10
|
# a 5 or 4 formatting rule with area codes that are 5 digits long.
|
10
11
|
#
|
11
12
|
# To reflect this different formatting, we need to install all handlers in a row.
|
12
|
-
# First, the area codes of length 2, without a fallback length (since this
|
13
|
+
# First, the area codes of length 2, without a fallback length (since this
|
14
|
+
# captures all), but with a nil fallback length.
|
13
15
|
#
|
14
16
|
# TODO Implement and use length-based splitter.
|
15
17
|
#
|
16
|
-
handlers = []
|
17
18
|
|
18
|
-
|
19
|
+
two_digit_ndc = [
|
19
20
|
'20', # London
|
20
21
|
'23', # Southampton, Portsmith
|
21
22
|
'24', # Coventry
|
@@ -24,12 +25,9 @@ area_code_2_national = Phony::NationalSplitters::Variable.new nil, [
|
|
24
25
|
'55', # Corporate
|
25
26
|
'56', # LIECS/VoIP
|
26
27
|
'70', # Personal numbers
|
27
|
-
|
28
28
|
]
|
29
|
-
area_code_2_local = Phony::LocalSplitters::Fixed.instance_for [4, 4]
|
30
|
-
handlers << Phony::NationalCode.new(area_code_2_national, area_code_2_local)
|
31
29
|
|
32
|
-
|
30
|
+
three_digit_ndc = [
|
33
31
|
# Geographic.
|
34
32
|
#
|
35
33
|
'113', # Leeds
|
@@ -68,7 +66,6 @@ area_code_3_national = Phony::NationalSplitters::Variable.new nil, [
|
|
68
66
|
'372',
|
69
67
|
'373',
|
70
68
|
|
71
|
-
# '500', # Freephone (9 digits) -- to do 0500 + 6 digits
|
72
69
|
'800', # Freephone (9 or 10 digits)
|
73
70
|
'808', # Freephone (10 digits)
|
74
71
|
|
@@ -95,12 +92,12 @@ area_code_3_national = Phony::NationalSplitters::Variable.new nil, [
|
|
95
92
|
'909', # Sexual entertainment services
|
96
93
|
'982', # Sexual entertainment services
|
97
94
|
]
|
98
|
-
area_code_3_local = Phony::LocalSplitters::Fixed.instance_for [3, 4]
|
99
|
-
handlers << Phony::NationalCode.new(area_code_3_national, area_code_3_local)
|
100
95
|
|
101
96
|
# 6 is the fallback length.
|
102
97
|
#
|
103
|
-
|
98
|
+
no_split = [
|
99
|
+
'500', # Freephone (9 digits)
|
100
|
+
|
104
101
|
# Geographic.
|
105
102
|
#
|
106
103
|
'1204', # Bolton
|
@@ -168,6 +165,9 @@ area_code_45_national = Phony::NationalSplitters::Variable.new 6, [
|
|
168
165
|
|
169
166
|
# Geographic.
|
170
167
|
#
|
168
|
+
# Note: We could remove these and use fixed(5) >> split(5)
|
169
|
+
# for this as a catchall (see sweden.rb).
|
170
|
+
#
|
171
171
|
'13873', # Langholm
|
172
172
|
'15242', # Hornby
|
173
173
|
'15394', # Hawkshead
|
@@ -181,11 +181,11 @@ area_code_45_national = Phony::NationalSplitters::Variable.new 6, [
|
|
181
181
|
'17687', # Keswick
|
182
182
|
'19467', # Gosforth
|
183
183
|
].flatten
|
184
|
-
area_code_45_local = Phony::LocalSplitters::Fixed.instance_for [6]
|
185
|
-
handlers << Phony::NationalCode.new(area_code_45_national, area_code_45_local)
|
186
184
|
|
187
|
-
# '16977', # Brampton --
|
185
|
+
# '16977', # Brampton -- TODO 016977 + 4 digits for 169772 and 169773
|
188
186
|
|
189
187
|
Phony.define do
|
190
|
-
country '44',
|
188
|
+
country '44', one_of(two_digit_ndc) >> split(4,4) |
|
189
|
+
one_of(three_digit_ndc) >> split(3,4) |
|
190
|
+
one_of(no_split) >> split(6)
|
191
191
|
end
|
@@ -82,7 +82,8 @@ describe 'country descriptions' do
|
|
82
82
|
Phony.split('358600123').should == ['358', '600', '123'] # Service
|
83
83
|
end
|
84
84
|
it 'handles french numbers' do
|
85
|
-
Phony.split('33112345678').should == ['33', '1', '12','34','56','78']
|
85
|
+
Phony.split('33112345678').should == ['33', '1', '12','34','56','78'] # Paris
|
86
|
+
Phony.split('33812345678').should == ['33', '8', '12','34','56','78'] # Service number
|
86
87
|
end
|
87
88
|
it 'handles german numbers' do
|
88
89
|
Phony.split('493038625454').should == ['49', '30', '386', '25454'] # Berlin
|
@@ -91,8 +92,8 @@ describe 'country descriptions' do
|
|
91
92
|
Phony.split('497614767676').should == ['49', '761', '476', '7676'] # Freiburg im Breisgau
|
92
93
|
Phony.split('4921535100').should == ['49', '2153', '510', '0'] # Nettetal-Lobberich
|
93
94
|
Phony.split('493434144602').should == ['49', '34341', '446', '02'] # Geithain
|
94
|
-
Phony.split('491805878323').should == ['49', '180', '587', '8323'] # Service
|
95
|
-
Phony.split('491815878323').should == ['49', '181', '587', '8323'] # Service
|
95
|
+
Phony.split('491805878323').should == ['49', '180', '587', '8323'] # Service number
|
96
|
+
Phony.split('491815878323').should == ['49', '181', '587', '8323'] # Service number
|
96
97
|
end
|
97
98
|
it 'handles ghanese numbers' do
|
98
99
|
Phony.split('233302123456').should == ['233', '30', '212', '3456'] # Mobile Vodafone, Accra
|
@@ -215,7 +216,8 @@ describe 'country descriptions' do
|
|
215
216
|
Phony.split('46125123456').should == ['46', '125', '123456']
|
216
217
|
end
|
217
218
|
it 'handles swiss numbers' do
|
218
|
-
Phony.split('41443643532').should == ['41', '44', '364', '35', '32']
|
219
|
+
Phony.split('41443643532').should == ['41', '44', '364', '35', '32'] # Zurich (usually)
|
220
|
+
Phony.split('41800334455').should == ['41', '800', '334', '455'] # Service number
|
219
221
|
end
|
220
222
|
it 'handles tanzanian numbers' do
|
221
223
|
Phony.split('255221231234').should == ['255', '22', '123', '1234'] # Dar Es Salaam
|
@@ -242,13 +244,13 @@ describe 'country descriptions' do
|
|
242
244
|
Phony.split('44169772333').should == ['44', '16977', '2333'] # Brampton
|
243
245
|
Phony.split('443005878323').should == ['44', '300', '587', '8323'] # Non-geographic
|
244
246
|
Phony.split('443457777334').should == ['44', '345', '777', '7334'] # Non-geographic
|
245
|
-
|
247
|
+
Phony.split('44500557788').should == ['44', '500', '557788'] # Freefone
|
246
248
|
Phony.split('445575671113').should == ['44', '55', '7567', '1113'] # Corporate
|
247
249
|
Phony.split('445644775533').should == ['44', '56', '4477', '5533'] # LIECS/VoIP
|
248
250
|
Phony.split('447020229901').should == ['44', '70', '2022', '9901'] # Personal numbers
|
249
251
|
Phony.split('447780605207').should == ['44', '7780', '605207'] # Mobile
|
250
252
|
Phony.split('447480605207').should == ['44', '7480', '605207'] # Mobile
|
251
|
-
#
|
253
|
+
# Phony.split('44800557788').should == ['44', '800', '557788'] # Freefone
|
252
254
|
Phony.split('448084682355').should == ['44', '808', '468', '2355'] # Freefone
|
253
255
|
Phony.split('448005878323').should == ['44', '800', '587', '8323'] # Freefone, regression
|
254
256
|
end
|
@@ -263,16 +265,9 @@ describe 'country descriptions' do
|
|
263
265
|
Phony.split('8499612345').should == ['84', '996', '12345'] # GTel
|
264
266
|
Phony.split('8441234567').should == ['84', '4', '1234567'] # Hanoi
|
265
267
|
end
|
266
|
-
it 'handles new zealand numbers' do
|
268
|
+
it 'handles new zealand / kiwi numbers' do
|
267
269
|
Phony.split('6491234567').should == ['64', '9', '123', '4567']
|
268
270
|
end
|
269
|
-
|
270
|
-
it 'handles french service numbers' do
|
271
|
-
Phony.split('33812345678').should == ['33', '8', '12','34','56','78']
|
272
|
-
end
|
273
|
-
it 'handles swiss service numbers' do
|
274
|
-
Phony.split('41800334455').should == ['41', '800', '334', '455']
|
275
|
-
end
|
276
271
|
end
|
277
272
|
|
278
273
|
end
|