phony 1.4.1 → 1.4.2

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.
@@ -18,16 +18,11 @@ require File.expand_path '../phony/dsl', __FILE__
18
18
  # The ones that need more space to define.
19
19
  #
20
20
  require File.expand_path '../phony/countries/austria', __FILE__
21
- require File.expand_path '../phony/countries/belgium', __FILE__
22
- require File.expand_path '../phony/countries/chile', __FILE__
23
21
  require File.expand_path '../phony/countries/china', __FILE__
24
22
  require File.expand_path '../phony/countries/germany', __FILE__
25
- require File.expand_path '../phony/countries/greece', __FILE__
26
- require File.expand_path '../phony/countries/hungary', __FILE__
27
23
  require File.expand_path '../phony/countries/italy', __FILE__
28
24
  require File.expand_path '../phony/countries/malaysia', __FILE__
29
25
  require File.expand_path '../phony/countries/netherlands', __FILE__
30
- require File.expand_path '../phony/countries/romania', __FILE__
31
26
  require File.expand_path '../phony/countries/south_korea', __FILE__
32
27
  require File.expand_path '../phony/countries/sweden', __FILE__
33
28
  require File.expand_path '../phony/countries/united_kingdom', __FILE__
@@ -20,79 +20,180 @@
20
20
  # Note: The ones that are commented are defined in their special files.
21
21
  #
22
22
  Phony.define do
23
+
24
+ # Reserved.
25
+ #
23
26
  country '0', fixed(1) >> split(10) # Reserved.
24
- country '1', fixed(3) >> split(3,4) # USA, Canada, etc.
25
- country '7', fixed(3) >> split(3,2,2) # Kazakhstan (Republic of) & Russian Federation
26
27
 
28
+ # USA, Canada, etc.
29
+ #
30
+ country '1', fixed(3) >> split(3,4)
31
+
32
+ # Kazakhstan (Republic of) & Russian Federation.
33
+ #
34
+ country '7', fixed(3) >> split(3,2,2)
35
+
36
+ # Egypt.
37
+ #
27
38
  country '20', one_of('800') >> split(7) | # Egypt
28
39
  one_of('2', '3') >> split(8) | # Cairo/Giza, Alexandria
29
40
  fixed(2) >> split(8)
30
41
  # :mobile? => /^10|11|12|14|16|17|18|19*$/, :service? => /^800.*$/
31
- country '27', fixed(2) >> split(3,4) # South Africa
32
42
 
33
- # country '30', Phony::Countries::Greece
34
- # country '31', Phony::Countries::Netherlands
35
- # country '32', Phony::Countries::Belgium
36
- country '33', fixed(1) >> split(2,2,2,2) # :service? => /^8.*$/, :mobile? => /^[67].*$/ # France
37
- country '34', fixed(2) >> split(3,4) # Spain
38
- # country '36', Phony::Countries::Hungary
39
- # country '39', Phony::Countries::Italy
43
+ # South Africa.
44
+ #
45
+ country '27', fixed(2) >> split(3,4)
46
+
47
+ # Greece.
48
+ #
49
+ country '30', match(/^(2[3-8]?1|69[0345789]|800)\d+$/) >> split(6) | # Geo/Mobile
50
+ fixed(4) >> split(6) # 3-digit NDCs
51
+
52
+ # country '31' # Netherlands, see special file.
53
+
54
+ # Belgium.
55
+ #
56
+ country '32', match(/^(70|800|90\d)\d+$/) >> split(3,3) | # Service
57
+ match(/^(4[789]\d)\d{6}$/) >> split(6) | # Mobile
58
+ one_of('2','3','4','9') >> split(3,5) | # Short NDCs
59
+ fixed(2) >> split(3,5) # 2-digit NDCs
60
+
61
+ # France.
62
+ #
63
+ country '33', fixed(1) >> split(2,2,2,2) # :service? => /^8.*$/, :mobile? => /^[67].*$/
64
+
65
+ # Spain.
66
+ #
67
+ country '34', fixed(2) >> split(3,4)
68
+
69
+ # Hungary.
70
+ #
71
+ # TODO Mobile.
72
+ #
73
+ country '36', one_of('104','105','107','112') >> split(3,3) | # Service
74
+ one_of('1') >> split(3,4) | # Budapest
75
+ fixed(2) >> split(3,4) # 2-digit NDCs
76
+
77
+ # country '39' # Italy, see special file.
40
78
 
41
- # country '40', Phony::Countries::Romania
79
+ # Romania.
80
+ #
81
+ country '40', match(/^(112|800|90[036])\d+$/) >> split(3,3) | # Service
82
+ match(/^(7[1-8])\d+$/) >> split(3,4) | # Mobile
83
+ one_of('21', '31') >> split(3,4) | # Bucureşti
84
+ fixed(3) >> split(3,4) # 3-digit NDCs
85
+
86
+ # Switzerland.
87
+ #
42
88
  # :service => %w{800 840 842 844 848}, :mobile => %w{74 76 77 78 79}
43
89
  swiss_service_regex = /^(800|840|842|844|848)\d+$/
44
- country '41', match(swiss_service_regex) >> split(3,3) | # Switzerland
90
+ country '41', match(swiss_service_regex) >> split(3,3) |
45
91
  fixed(2) >> split(3,2,2)
46
- # country '43', Phony::Countries::Austria
47
- # country '44', Phony::Countries::UnitedKingdom
48
- country '45', none >> split(2,2,2,2) # Denmark
49
- # country '46', Phony::Countries::Sweden
50
- country '47', # Norway
51
- none >> matched_split(/^[1].*$/ => [3], /^[489].*$/ => [3,2,3], :fallback => [2,2,2,2])
92
+
93
+
94
+ # country '43' # Austria, see special file.
95
+ # country '44' # UnitedKingdom, see special file.
96
+
97
+ # Denmark.
98
+ #
99
+ country '45', none >> split(2,2,2,2)
100
+
101
+ # country '46' # Sweden, see special file.
102
+
103
+ # Norway.
104
+ #
105
+ country '47', none >> matched_split(/^[1].*$/ => [3], /^[489].*$/ => [3,2,3], :fallback => [2,2,2,2])
106
+
52
107
  # Poland (Republic of)
53
108
  # Although the NDCs are 2 digits, the representation is 3 digits.
54
109
  # Note: http://wapedia.mobi/en/Telephone_numbers_in_Poland, mobile not yet correct
55
110
  #
56
111
  country '48', fixed(3) >> split(3,3) # Poland
57
- # country '49', Phony::Countries::Germany
58
112
 
59
- country '51', one_of('103', '105') >> split(3,3) | # Peru
113
+ # country '49' # Germany, see special file.
114
+
115
+ # Peru.
116
+ #
117
+ country '51', one_of('103', '105') >> split(3,3) | # Service.
60
118
  one_of('1', '9') >> split(4,4) | # Lima and mobile.
61
- fixed(2) >> split(4,4)
62
- country '52', match(/^(0\d{2})\d+$/) >> split(2,2,2,2) | # Mexico
119
+ fixed(2) >> split(4,4) # 2-digit NDCs.
120
+
121
+ # Mexico.
122
+ #
123
+ country '52', match(/^(0\d{2})\d+$/) >> split(2,2,2,2) |
63
124
  match(/^(33|55|81)\d+$/) >> split(2,2,2,2) |
64
125
  match(/^(\d{3})\d+$/) >> split(3,2,2)
65
- country '53', match(/^(5\d{3})\d+$/) >> split(4) | # Cuba. Mobile.
66
- match(/^(7|21|22|23|4[1-8]|3[1-3])/) >> split(7) | #
67
- fixed(3) >> split(7)
68
- country '54', fixed(2) >> split(3,2,2) # TODO Argentine Republic
126
+
127
+ # Cuba.
128
+ #
129
+ country '53', match(/^(5\d{3})\d+$/) >> split(4) | # Mobile
130
+ match(/^(7|21|22|23|4[1-8]|3[1-3])/) >> split(7) | # Short NDCs
131
+ fixed(3) >> split(7) # 3-digit NDCs
132
+
133
+ # TODO Argentine Republic.
134
+ #
135
+ country '54', fixed(2) >> split(3,2,2)
136
+
137
+ # Brazil (Federative Republic of).
138
+ #
69
139
  brazilian_service = /^(100|128|190|191|192|193|194|197|198|199)\d+$/
70
- country '55', match(brazilian_service) >> split(3,3) | # Brazil (Federative Republic of)
71
- fixed(2) >> split(4,4)
140
+ country '55', match(brazilian_service) >> split(3,3) | # Service.
141
+ fixed(2) >> split(4,4) # NDCs
72
142
  # :service? => brazilian_service, :mobile? => ?
73
143
  # http://en.wikipedia.org/wiki/Telephone_numbers_in_Brazil
74
- # country '56', Phony::Countries::Chile
75
- country '57', fixed(2) >> split(3,2,2) # TODO Colombia
76
- country '58', fixed(3) >> split(7) # Venezuela (Bolivarian Republic of)
77
144
 
78
- # country '60', Phony::Countries::Malaysia
79
- country '61', match(/^(4\d\d)\d+$/) >> split(3,3) | # Australia
80
- fixed(1) >> split(4,4)
145
+ # Chile.
146
+ #
147
+ country '56', match(/^(13[0-79]|14[79])\d+$/) >> split(3,3) | # Service
148
+ one_of('2', '9') >> split(8) | # Santiago, Mobile
149
+ fixed(2) >> split(8) # 2-digit NDCs
150
+
151
+ # TODO Colombia.
152
+ #
153
+ country '57', fixed(2) >> split(3,2,2)
154
+
155
+ # Venezuela (Bolivarian Republic of)
156
+ #
157
+ country '58', fixed(3) >> split(7)
158
+
159
+ # country '60' # Malaysia, see special file.
160
+
161
+ # Australia.
162
+ #
163
+ country '61', match(/^(4\d\d)\d+$/) >> split(3,3) | # Mobile
164
+ fixed(1) >> split(4,4) # Rest
81
165
  country '62', fixed(2) >> split(3,2,2) # TODO Indonesia (Republic of)
82
166
  country '63', fixed(2) >> split(3,2,2) # TODO Philippines (Republic of the)
83
- country '64', fixed(1) >> split(3,4) # New Zealand
167
+
168
+ # New Zealand.
169
+ #
170
+ # TODO Mobile?
171
+ #
172
+ country '64', fixed(1) >> split(3,4)
173
+
84
174
  country '65', fixed(2) >> split(3,2,2) # TODO Singapore (Republic of)
85
175
  country '66', fixed(2) >> split(3,2,2) # TODO Thailand
86
176
 
87
177
  country '81', fixed(2) >> split(3,2,2) # TODO Japan
88
- # country '82', Phony::Countries::SouthKorea
178
+
179
+ # country '82' # SouthKorea, see special file.
180
+
89
181
  country '84', fixed(2) >> split(3,2,2) # TODO Viet Nam (Socialist Republic of)
90
- # country '86', Phony::Countries::China
91
182
 
92
- country '90', fixed(3) >> split(3,4) # Turkey. Wiki says 7, but the examples say 3, 4.
183
+ # country '86' # China, see special file.
184
+
185
+ # Turkey.
186
+ #
187
+ country '90', fixed(3) >> split(3,4) # Wiki says 7, but the examples say 3, 4.
188
+
93
189
  country '91', fixed(2) >> split(3,2,2) # TODO India (Republic of)
94
190
  country '92', fixed(2) >> split(3,2,2) # TODO Pakistan (Islamic Republic of), http://en.wikipedia.org/wiki/Telephone_numbers_in_Pakistan, NDC 2-5
95
- country '93', fixed(2) >> split(7) # Afghanistan. Note: the document says 6, but the examples use 7. http://www.wtng.info/wtng-93-af.html
191
+
192
+ # Afghanistan.
193
+ #
194
+ # From http://www.wtng.info/wtng-93-af.html
195
+ #
196
+ country '93', fixed(2) >> split(7) # Note: the document says 6, but the examples use 7.
96
197
 
97
198
  country '94', fixed(2) >> split(3,2,2) # TODO Sri Lanka (Democratic Socialist Republic of)
98
199
  country '95', fixed(2) >> split(3,2,2) # TODO Myanmar (Union of)
@@ -187,27 +288,37 @@ Phony.define do
187
288
  country '299', fixed(2) >> split(3,2,2) # Greenland
188
289
 
189
290
  country '350', fixed(2) >> split(3,2,2) # Gibraltar
190
- country '351', one_of('700', '800') >> split(3,3) | # Portugal
191
- match(/^(9\d)\d+$/) >> split(3,4) | # mobile
291
+
292
+ # Portugal.
293
+ #
294
+ country '351', one_of('700', '800') >> split(3,3) | # Service.
295
+ match(/^(9\d)\d+$/) >> split(3,4) | # Mobile.
192
296
  one_of('21', '22') >> split(3,4) | # Lisboa & Porto
193
- fixed(3) >> split(3,4)
297
+ fixed(3) >> split(3,4) # 3-digit NDCs
298
+
194
299
  country '352', fixed(2) >> split(3,2,2) # Luxembourg
195
300
  country '353', fixed(2) >> split(3,2,2) # Ireland (0-3-4)
196
301
  country '354', none >> split(3,4) # Iceland
197
302
  country '355', fixed(2) >> split(3,2,2) # Albania
198
303
  country '356', fixed(2) >> split(3,2,2) # Malta
199
304
  country '357', fixed(2) >> split(3,2,2) # Cyprus
200
- country '358', match(/^([6-8]00)\d+$/) >> split(3,3) | # Finland
201
- match(/^(4\d|50)\d+$/) >> split(3,2,2) |
202
- one_of('2','3','5','6','8','9') >> split(3,3) |
203
- fixed(2) >> split(3,3)
305
+
306
+ # Finland.
307
+ #
308
+ country '358', match(/^([6-8]00)\d+$/) >> split(3,3) | # Service
309
+ match(/^(4\d|50)\d+$/) >> split(3,2,2) | # Mobile
310
+ one_of('2','3','5','6','8','9') >> split(3,3) | # Short NDCs
311
+ fixed(2) >> split(3,3) # 2-digit NDCs
204
312
  country '359', fixed(2) >> split(3,2,2) # Bulgaria
205
313
 
206
- country '370', one_of('700', '800') >> split(2,3) | # Lithuania
314
+ # Lithuania.
315
+ #
316
+ country '370', one_of('700', '800') >> split(2,3) | # Service
207
317
  match(/^(6\d\d)\d+$/) >> split(2,3) | # Mobile
208
318
  one_of('5') >> split(3,2,2) | # Vilnius
209
- one_of('37','41') >> split(2,2,2) | #
210
- fixed(3) >> split(1,2,2)
319
+ one_of('37','41') >> split(2,2,2) | # Kaunas, Šiauliai
320
+ fixed(3) >> split(1,2,2) # 3-digit NDCs.
321
+
211
322
  country '371', fixed(2) >> split(3,2,2) # Latvia
212
323
  country '372', fixed(2) >> split(3,2,2) # Estonia
213
324
  country '373', fixed(2) >> split(3,2,2) # Moldova
@@ -223,17 +334,25 @@ Phony.define do
223
334
  country '382', fixed(2) >> split(3,2,2) # -
224
335
  country '383', fixed(2) >> split(3,2,2) # -
225
336
  country '384', fixed(2) >> split(3,2,2) # -
226
- country '385', one_of('1') >> split(3,5) | # Croatia
227
- fixed(2) >> split(3,5)
337
+
338
+ # Croatia.
339
+ #
340
+ country '385', one_of('1') >> split(3,5) | # Zagreb
341
+ fixed(2) >> split(3,5) # 2-digit NDCs
342
+
228
343
  country '386', fixed(2) >> split(3,2,2) # Slovenia
229
344
  country '387', fixed(2) >> split(3,2,2) # Bosnia and Herzegovina
230
345
  country '388', fixed(2) >> split(3,2,2) # Group of countries, shared code
231
346
  country '389', fixed(2) >> split(3,2,2) # The Former Yugoslav Republic of Macedonia
232
347
 
233
348
  country '420', fixed(3) >> split(3,3) # Czech Republic
234
- country '421', match(/^(9\d\d).+$/) >> split(6) | # Slovak Republic
349
+
350
+ # Slovak Republic.
351
+ #
352
+ country '421', match(/^(9\d\d).+$/) >> split(6) | # Mobile
235
353
  one_of('2') >> split(8) | # Bratislava
236
- fixed(2) >> split(7)
354
+ fixed(2) >> split(7) # 2-digit NDCs
355
+
237
356
  country '422', fixed(2) >> split(3,2,2) # Spare code
238
357
  country '423', none >> split(3,2,2) # Liechtenstein (Principality of)
239
358
  country '424', fixed(2) >> split(3,2,2) # -
@@ -15,7 +15,8 @@ mobile = %w{ 10 11 12 13 14 153 154 156 158 16 17 18 19 }
15
15
  service = %w{ 100 101 102 103 104 108 112 991 994 995 999 }
16
16
 
17
17
  Phony.define do
18
- country '60', one_of(service) >> split(3,3) |
19
- one_of(mobile) >> split(8) |
20
- one_of(ndcs, :max_length => 2) >> split(8)
18
+ country '60', one_of(service) >> split(3,3) | # Service
19
+ one_of(mobile) >> split(8) | # Mobile
20
+ one_of(ndcs) >> split(8) | # 1-digit NDCs
21
+ fixed(2) >> split(8) # 2-digit NDCs
21
22
  end
@@ -1,32 +1,44 @@
1
1
  module Phony
2
-
2
+
3
+ EMPTY_STRING = ''
4
+
3
5
  # Handles determining the correct national code handler.
4
6
  #
5
7
  class CountryCodes
6
-
7
- attr_reader :mapping
8
-
8
+
9
+ attr_reader :mapping
10
+ attr_accessor :international_absolute_format, :international_relative_format, :national_format
11
+
12
+ def initialize
13
+ @international_absolute_format = '+%s%s%s%s'
14
+ @international_relative_format = '00%s%s%s%s'
15
+ @national_format = '0%s%s'
16
+
17
+ @normalize_format = '%s%s'
18
+ @default_space = ' '
19
+ end
20
+
9
21
  def self.instance
10
22
  @instance ||= new
11
23
  end
12
-
24
+
13
25
  def normalize number
14
26
  # Remove non-digit chars.
15
27
  #
16
- number.gsub! /\D*/, ''
28
+ number.gsub! /\D*/, EMPTY_STRING
17
29
  national_handler, cc, rest = split_cc number
18
- '%s%s' % [cc, national_handler.normalize(rest)]
30
+ @normalize_format % [cc, national_handler.normalize(rest)]
19
31
  end
20
-
32
+
21
33
  # Splits this number into cc, ndc and locally split number parts.
22
34
  #
23
35
  def split number
24
36
  national_handler, cc, rest = split_cc number
25
37
  [cc, *national_handler.split(rest)]
26
38
  end
27
-
39
+
28
40
  def formatted number, options = {}
29
- format_cc_ndc_local options[:format], options[:spaces] || ' ', *split(number)
41
+ format_cc_ndc_local options[:format], options[:spaces] || @default_space, *split(number)
30
42
  end
31
43
  # Formats country code and national destination code.
32
44
  #
@@ -34,22 +46,21 @@ module Phony
34
46
  "#{format_cc_ndc(format, space, cc, ndc)}#{format_local(space, parts)}"
35
47
  end
36
48
  def format_cc_ndc format, space, cc, ndc
37
- format, split_phone_number = case format
49
+ case format
38
50
  when nil, :international_absolute, :international, :+
39
- [ndc.empty? ? '+%s%s' : '+%s%s%s%s', [cc, space, ndc, space]]
51
+ @international_absolute_format % [cc, space, ndc, space]
40
52
  when :international_relative
41
- [ndc.empty? ? '00%s%s' : '00%s%s%s%s', [cc, space, ndc, space]]
53
+ @international_relative_format % [cc, space, ndc, space]
42
54
  when :national
43
- [ndc.empty? ? '' : '0%s%s', [ndc, space]]
55
+ (ndc.empty? ? EMPTY_STRING : @national_format) % [ndc, space]
44
56
  when :local
45
- ['', []]
57
+ EMPTY_STRING
46
58
  end
47
- format % split_phone_number
48
59
  end
49
60
  def format_local space, parts_ary
50
61
  parts_ary.join space.to_s
51
62
  end
52
-
63
+
53
64
  #
54
65
  #
55
66
  def service? number
@@ -64,7 +75,7 @@ module Phony
64
75
  national_handler, cc, rest = split_cc number
65
76
  national_handler.landline? rest
66
77
  end
67
-
78
+
68
79
  # Is the given number a vanity number?
69
80
  #
70
81
  def vanity? number
@@ -77,7 +88,7 @@ module Phony
77
88
  national_handler, cc, rest = split_cc vanity_number
78
89
  "#{cc}#{national_handler.vanity_to_number(rest)}"
79
90
  end
80
-
91
+
81
92
  def split_cc rest
82
93
  presumed_cc = ''
83
94
  1.upto(3) do |i|
@@ -87,25 +98,25 @@ module Phony
87
98
  end
88
99
  # This line is never reached as CCs are in prefix code.
89
100
  end
90
-
101
+
91
102
  # # TODO
92
103
  # #
93
104
  # def self.with_cc cc
94
105
  # mapping[cc.size][cc.to_s]
95
106
  # end
96
-
107
+
97
108
  # Add the given country to the mapping under the
98
109
  # given country code.
99
110
  #
100
111
  def add country_code, country
101
112
  country_code = country_code.to_s
102
113
  optimized_country_code_access = country_code.size
103
-
114
+
104
115
  @mapping ||= {}
105
116
  @mapping[optimized_country_code_access] ||= {}
106
117
  @mapping[optimized_country_code_access][country_code] = country
107
118
  end
108
-
119
+
109
120
  end
110
-
121
+
111
122
  end
@@ -28,15 +28,18 @@ describe 'country descriptions' do
28
28
  Phony.split('3225551212').should == ['32', '2', '555', '1212'] # Brussels
29
29
  Phony.split('3295551914').should == ['32', '9', '555', '1914'] # Gent
30
30
  Phony.split('3245551414').should == ['32', '4', '555', '1414'] # Liège
31
+ Phony.split('3216473200').should == ['32', '16', '473', '200'] # Leuven
31
32
  Phony.split('32475279584').should == ['32', '475', '279584'] # mobile
33
+ Phony.split('3270123123').should == ['32', '70', '123', '123'] # Bus Service?
32
34
  end
33
35
  it 'handles brazilian numbers' do
34
36
  Phony.split('551112341234').should == ['55', '11', '1234', '1234']
35
37
  end
36
38
  it 'handles chilean numbers' do
37
- Phony.split('5621234567').should == ['56', '2', '1234567'] # Santiago
38
- Phony.split('5675123456').should == ['56', '75', '123456'] # Curico
39
- Phony.split('56912345678').should == ['56', '9', '12345678'] # mobile
39
+ Phony.split('5621234567').should == ['56', '2', '1234567'] # Santiago
40
+ Phony.split('5675123456').should == ['56', '75', '123456'] # Curico
41
+ Phony.split('56912345678').should == ['56', '9', '12345678'] # Mobile
42
+ Phony.split('56137123456').should == ['56', '137', '123', '456'] # Service
40
43
  end
41
44
  it 'handles chinese numbers' do
42
45
  Phony.split('862112345678').should == ['86', '21', '1234', '5678'] # Shanghai
@@ -83,7 +86,8 @@ describe 'country descriptions' do
83
86
  Phony.split('491815878323').should == ['49', '181', '587', '8323'] # Service numbers
84
87
  end
85
88
  it "handles greek numbers" do
86
- Phony.split('3021123456').should == ['30', '21', '123456']
89
+ Phony.split('3021123456').should == ['30', '21', '123456'] # Athens
90
+ Phony.split('3069512345').should == ['30', '695', '12345'] # Mobile
87
91
  Phony.split('3025941234').should == ['30', '2594', '1234']
88
92
  Phony.split('3022631234').should == ['30', '2263', '1234']
89
93
  end
@@ -6,6 +6,46 @@ describe Phony::CountryCodes do
6
6
  @countries = Phony::CountryCodes.instance
7
7
  end
8
8
 
9
+ describe 'international_absolute_format=' do
10
+ it 'formats correctly' do
11
+ @countries.formatted('41443643532', :format => :international).should == '+41 44 364 35 32'
12
+ end
13
+ it 'formats correctly' do
14
+ old_format = @countries.international_absolute_format
15
+ @countries.international_absolute_format = '!!! %s%s%s%s'
16
+
17
+ @countries.formatted('41443643532', :format => :international).should == '!!! 41 44 364 35 32'
18
+
19
+ @countries.international_absolute_format = old_format
20
+ end
21
+ end
22
+ describe 'international_relative_format=' do
23
+ it 'formats correctly' do
24
+ @countries.formatted('41443643532', :format => :international_relative).should == '0041 44 364 35 32'
25
+ end
26
+ it 'formats correctly' do
27
+ old_format = @countries.international_relative_format
28
+ @countries.international_relative_format = '000 %s%s%s%s'
29
+
30
+ @countries.formatted('41443643532', :format => :international_relative).should == '000 41 44 364 35 32'
31
+
32
+ @countries.international_relative_format = old_format
33
+ end
34
+ end
35
+ describe 'national_format=' do
36
+ it 'formats correctly' do
37
+ @countries.formatted('41443643532', :format => :international_relative).should == '0041 44 364 35 32'
38
+ end
39
+ it 'formats correctly' do
40
+ old_format = @countries.national_format
41
+ @countries.national_format = '%s%s'
42
+
43
+ @countries.formatted('11231231234', :format => :national).should == '123 123 1234'
44
+
45
+ @countries.national_format = old_format
46
+ end
47
+ end
48
+
9
49
  describe 'split' do
10
50
  it 'splits correctly' do
11
51
  @countries.split('41443643532').should == ['41', '44', '364', '35', '32']
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: phony
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.4.1
5
+ version: 1.4.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Florian Hanke
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-02 00:00:00 +10:00
13
+ date: 2011-05-06 00:00:00 +10:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -24,16 +24,11 @@ extra_rdoc_files:
24
24
  - README.textile
25
25
  files:
26
26
  - lib/phony/countries/austria.rb
27
- - lib/phony/countries/belgium.rb
28
- - lib/phony/countries/chile.rb
29
27
  - lib/phony/countries/china.rb
30
28
  - lib/phony/countries/germany.rb
31
- - lib/phony/countries/greece.rb
32
- - lib/phony/countries/hungary.rb
33
29
  - lib/phony/countries/italy.rb
34
30
  - lib/phony/countries/malaysia.rb
35
31
  - lib/phony/countries/netherlands.rb
36
- - lib/phony/countries/romania.rb
37
32
  - lib/phony/countries/south_korea.rb
38
33
  - lib/phony/countries/sweden.rb
39
34
  - lib/phony/countries/united_kingdom.rb
@@ -1,33 +0,0 @@
1
- # Belgium uses a variable-length ndc code, thus we use a separate file to not let all_other.rb explode.
2
- #
3
- # Taken from: http://en.wikipedia.org/wiki/Telephone_numbers_in_Belgium
4
- #
5
- ndcs = [
6
- '2', # Brussels (Bruxelles/Brussel)
7
- '3', # Antwerpen (Antwerp), Sint-Niklaas
8
- '4', # Liège (Luik), Voeren (Fourons)
9
- '9', # Gent (Ghent/Gand)
10
- ]
11
-
12
- mobile_regex = /^(4[789]\d)\d{6}$/ # Mobistar, Base, Proximus
13
-
14
- service = [
15
- '70', # Specialty numbers, i.e. bus information or bank information
16
- '800', # Tollfree
17
- '900', # Premium
18
- '901', # Premium
19
- '902', # Premium
20
- '903', # Premium
21
- '904', # Premium
22
- '905', # Premium
23
- '906', # Premium
24
- '907', # Premium
25
- '908', # Premium
26
- '909' # Premium
27
- ]
28
-
29
- Phony.define do
30
- country '32', one_of(service) >> split(3,3) |
31
- match(mobile_regex) >> split(6) |
32
- one_of(ndcs, :max_length => 2) >> split(3,5)
33
- end
@@ -1,14 +0,0 @@
1
- # Chilean phone numbers.
2
- #
3
- # http://en.wikipedia.org/wiki/Telephone_numbers_in_Chile
4
- # http://www.wtng.info/wtng-56-cl.html
5
- #
6
- # Note: Totally unsure about this one, as I get contradicting infos (see links above).
7
- # As usual, best effort.
8
- #
9
- service = %w{130 131 132 133 134 135 136 137 139 147 149}
10
-
11
- Phony.define do
12
- country '56', one_of(*service) >> split(3,3) |
13
- one_of('2', '9', :max_length => 2) >> split(8) # Santiago (2) and mobile.
14
- end
@@ -1,26 +0,0 @@
1
- # Greece uses a variable-length ndc code, thus we use a separate file to not let all_other.rb explode.
2
- #
3
- # Note: Greece uses a variable ndc format from length 2 to 4.
4
- # To save space, we only use ndcs of length up to 3 (and use the fallback).
5
- #
6
- ndcs = [
7
- '21', # Athens
8
- '231', # Thessaloniki
9
- '241', # Larissa
10
- '251', # Kavala
11
- '261', # Patras
12
- '271', # Tripoli
13
- '281', # Heraklion
14
- '690', # Mobile
15
- '693', # Mobile
16
- '694', # Mobile
17
- '695', # Mobile
18
- '697', # Mobile
19
- '698', # Mobile
20
- '699', # Mobile
21
- '800' # Service
22
- ]
23
-
24
- Phony.define do
25
- country '30', one_of(ndcs, :max_length => 4) >> split(6)
26
- end
@@ -1,10 +0,0 @@
1
- # Hungarian phone numbers.
2
- #
3
- # http://en.wikipedia.org/wiki/Telephone_numbers_in_Hungary
4
- #
5
-
6
- Phony.define do
7
- country '36', one_of('104', '105', '107', '112') >> split(3,3) | # special
8
- # TODO mobile
9
- one_of('1', :max_length => 2) >> split(3,4)
10
- end
@@ -1,32 +0,0 @@
1
- # Romanian phone numbers.
2
- #
3
- # http://en.wikipedia.org/wiki/Romania_telephone_area_codes
4
- #
5
-
6
- ndcs = [
7
- '21', # Bucureşti
8
- '31', # Bucureşti
9
- ]
10
- mobile = [
11
- '71',
12
- '72',
13
- '73',
14
- '74',
15
- '75',
16
- '76',
17
- '77',
18
- '78',
19
- ]
20
- service = [
21
- '112',
22
- '800',
23
- '900',
24
- '903',
25
- '906',
26
- ]
27
-
28
- Phony.define do
29
- country '40', one_of(*service) >> split(3,3) |
30
- match(/^(7[1-8])\d*$/) >> split(3,4) |
31
- one_of('21', '31', :max_length => 3) >> split(3,4) # Bucureşti
32
- end