phony 1.7.11 → 1.7.12

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.
@@ -272,7 +272,16 @@ Phony.define do
272
272
  #
273
273
  country '233', fixed(2) >> split(3,4)
274
274
 
275
- country '234', todo # Nigeria
275
+ # Nigeria
276
+ # Wikipedia says 3 4 split, many local number with no splitting
277
+ country '234',
278
+ one_of('1', '2', '9') >> split(3,4) | # Lagos, Ibadan and Abuja
279
+ match(/^(702\d)\d+$/) >> split(3,4) | # Mobile
280
+ match(/^(70[3-9])\d+$/) >> split(3,4) | # Mobile
281
+ match(/^(8[01]\d)\d+$/) >> split(3,4) | # Mobile
282
+ fixed(2) >> split(3,4) # 2-digit NDC
283
+
284
+
276
285
  country '235', todo # Chad
277
286
  country '236', todo # Central African Republic
278
287
  country '237', todo # Cameroon
@@ -356,7 +365,14 @@ Phony.define do
356
365
  one_of('21', '22') >> split(3,4) | # Lisboa & Porto
357
366
  fixed(3) >> split(3,4) # 3-digit NDCs
358
367
 
359
- country '352', todo # Luxembourg
368
+ # Luxembourg
369
+ #
370
+ country '352',
371
+ one_of('4') >> split(2,2,2) | # Luxembourg City
372
+ match(/^(2[467]\d{2})$/) >> split(2,2,2) | # 4-digit NDC
373
+ match(/^(6\d[18])\d+$/) >> split(3,3) | # mobile
374
+ match(/^(60\d{2})\d{8}$/) >> split(2,2,2,2) | # mobile machine to machine
375
+ match(/^([2-9]\d)/) >> split(2,2,2) # 2-digit NDC
360
376
 
361
377
  # country '353' # Republic of Ireland, see special file.
362
378
 
@@ -129,70 +129,79 @@ describe 'country descriptions' do
129
129
  it_splits '390909709511', ['39', '090', '970', '9511'] # Barcellona
130
130
  end
131
131
  describe 'Kenya' do
132
- it { Phony.split('254201234567').should == ['254', '20', '1234567'] } # Nairobi
133
- it { Phony.split('254111234567').should == ['254', '11', '1234567'] } # Mombasa
132
+ it_splits '254201234567', ['254', '20', '1234567'] # Nairobi
133
+ it_splits '254111234567', ['254', '11', '1234567'] # Mombasa
134
134
  end
135
135
  describe 'Lithuania' do
136
- it { Phony.split('37070012123').should == ['370', '700', '12', '123'] } # Service
137
- it { Phony.split('37061212123').should == ['370', '612', '12', '123'] } # Mobile
138
- it { Phony.split('37051231212').should == ['370', '5', '123', '12', '12'] } # Vilnius
139
- it { Phony.split('37037121212').should == ['370', '37', '12', '12', '12'] } # Kaunas
140
- it { Phony.split('37044011212').should == ['370', '440', '1', '12', '12'] } # Skuodas
136
+ it_splits '37070012123', ['370', '700', '12', '123'] # Service
137
+ it_splits '37061212123', ['370', '612', '12', '123'] # Mobile
138
+ it_splits '37051231212', ['370', '5', '123', '12', '12'] # Vilnius
139
+ it_splits '37037121212', ['370', '37', '12', '12', '12'] # Kaunas
140
+ it_splits '37044011212', ['370', '440', '1', '12', '12'] # Skuodas
141
+ end
142
+ describe 'Luxembourg' do
143
+ it_splits '352222809', ['352', '22', '28', '09']
144
+ it_splits '35226222809', ['352', '26', '22', '28', '09']
145
+ it_splits '352621123456', ['352', '621', '123', '456']
146
+ it_splits '3524123456', ['352', '4', '12', '34', '56']
147
+ it_splits '352602112345678', ['352', '6021', '12', '34', '56', '78']
148
+ it_splits '352370431', ['352', '37', '04', '31']
149
+ it_splits '35227855', ['352', '27', '85', '5']
141
150
  end
142
151
  describe 'Malaysia' do
143
- it { Phony.split('6082123456').should == ['60', '82', '123456'] } # Kuching
144
- it { Phony.split('60312345678').should == ['60', '3', '12345678'] } # Kuala Lumpur
145
- it { Phony.split('60212345678').should == ['60', '2', '12345678'] } # Singapore
152
+ it_splits '6082123456', ['60', '82', '123456'] # Kuching
153
+ it_splits '60312345678', ['60', '3', '12345678'] # Kuala Lumpur
154
+ it_splits '60212345678', ['60', '2', '12345678'] # Singapore
146
155
  end
147
156
  describe 'Mexico' do
148
- it { Phony.split('525512121212').should == ['52', '55', '12', '12', '12', '12'] } # Mexico City
149
- it { Phony.split('526641231212').should == ['52', '664', '123', '12', '12'] } # Tijuana
157
+ it_splits '525512121212', ['52', '55', '12', '12', '12', '12'] # Mexico City
158
+ it_splits '526641231212', ['52', '664', '123', '12', '12'] # Tijuana
150
159
  end
151
160
  describe 'The Netherlands' do
152
- it { Phony.split('31612345678').should == ['31', '6', '12345678'] } # mobile
153
- it { Phony.split('31201234567').should == ['31', '20', '1234567'] }
154
- it { Phony.split('31222123456').should == ['31', '222', '123456'] }
161
+ it_splits '31612345678', ['31', '6', '12345678'] # mobile
162
+ it_splits '31201234567', ['31', '20', '1234567']
163
+ it_splits '31222123456', ['31', '222', '123456']
155
164
  end
156
165
  describe 'Norway' do
157
- Phony.split('4721234567').should == ['47',false,'21','23','45','67']
158
- Phony.split('4731234567').should == ['47',false,'31','23','45','67']
159
- Phony.split('4741234567').should == ['47',false,'412','34','567']
160
- Phony.split('4751234567').should == ['47',false,'51','23','45','67']
161
- Phony.split('4761234567').should == ['47',false,'61','23','45','67']
162
- Phony.split('4771234567').should == ['47',false,'71','23','45','67']
163
- Phony.split('4781234567').should == ['47',false,'812','34','567']
164
- Phony.split('4791234567').should == ['47',false,'912','34','567']
166
+ it_splits '4721234567', ['47',false,'21','23','45','67']
167
+ it_splits '4731234567', ['47',false,'31','23','45','67']
168
+ it_splits '4741234567', ['47',false,'412','34','567']
169
+ it_splits '4751234567', ['47',false,'51','23','45','67']
170
+ it_splits '4761234567', ['47',false,'61','23','45','67']
171
+ it_splits '4771234567', ['47',false,'71','23','45','67']
172
+ it_splits '4781234567', ['47',false,'812','34','567']
173
+ it_splits '4791234567', ['47',false,'912','34','567']
165
174
  end
166
175
  describe 'Peru' do
167
- Phony.split('51112341234').should == ['51', '1', '1234', '1234'] # Lima
168
- Phony.split('51912341234').should == ['51', '9', '1234', '1234'] # mobile
169
- Phony.split('51841234123').should == ['51', '84', '1234', '123'] # Cuzco, best effort
176
+ it_splits '51112341234', ['51', '1', '1234', '1234'] # Lima
177
+ it_splits '51912341234', ['51', '9', '1234', '1234'] # mobile
178
+ it_splits '51841234123', ['51', '84', '1234', '123'] # Cuzco, best effort
170
179
  end
171
180
  describe 'Poland' do
172
- Phony.split('48123456789').should == ['48', '12', '345', '67', '89'] # Landline
173
- Phony.split('48501123456').should == ['48', '501', '123', '456'] # Mobile
174
- Phony.split('48800123456').should == ['48', '800', '123', '456'] # Free
175
- Phony.split('48801123456').should == ['48', '801', '123', '456'] # Shared cost
176
- Phony.split('48701123456').should == ['48', '701', '123', '456'] # Premium
181
+ it_splits '48123456789', ['48', '12', '345', '67', '89'] # Landline
182
+ it_splits '48501123456', ['48', '501', '123', '456'] # Mobile
183
+ it_splits '48800123456', ['48', '800', '123', '456'] # Free
184
+ it_splits '48801123456', ['48', '801', '123', '456'] # Shared cost
185
+ it_splits '48701123456', ['48', '701', '123', '456'] # Premium
177
186
  end
178
187
  describe 'Portugal' do
179
- Phony.split('351211231234').should == ['351', '21', '123', '1234'] # Lisboa
180
- Phony.split('351241123123').should == ['351', '241', '123', '123'] # Abrantes
181
- Phony.split('351931231234').should == ['351', '93', '123', '1234'] # mobile
188
+ it_splits '351211231234', ['351', '21', '123', '1234'] # Lisboa
189
+ it_splits '351241123123', ['351', '241', '123', '123'] # Abrantes
190
+ it_splits '351931231234', ['351', '93', '123', '1234'] # mobile
182
191
  end
183
192
  describe 'Romania' do
184
- it { Phony.split('40211231234').should == ['40', '21', '123', '1234'] } # Bucureşti
185
- it { Phony.split('40721231234').should == ['40', '72', '123', '1234'] } # mobile
186
- it { Phony.split('40249123123').should == ['40', '249', '123', '123'] } # Olt
193
+ it_splits '40211231234', ['40', '21', '123', '1234'] # Bucureşti
194
+ it_splits '40721231234', ['40', '72', '123', '1234'] # mobile
195
+ it_splits '40249123123', ['40', '249', '123', '123'] # Olt
187
196
  end
188
197
  describe 'Russia' do
189
- it { Phony.split('78122345678').should == ['7', '812', '234', '56', '78'] } # Russia 3-digit
190
- it { Phony.split('74012771077').should == ['7', '4012', '77', '10', '77'] } # Russia 4-digit
191
- it { Phony.split('78402411212').should == ['7', '84024', '1', '12', '12'] } # Russia 5-digit
192
- it { Phony.split('7840121212').should == ['7', '840', '12', '12', '12'] } # Abhasia
193
- it { Phony.split('7799121212').should == ['7', '799', '12', '12', '12'] } # Kazachstan
194
- it { Phony.split('7995344121212').should == ['7','995344','12','12','12'] } # South Osetia
195
- it { Phony.split('7209175276').should == ['7', '209', '17', '52', '76'] } # Fantasy number
198
+ it_splits '78122345678', ['7', '812', '234', '56', '78'] # Russia 3-digit
199
+ it_splits '74012771077', ['7', '4012', '77', '10', '77'] # Russia 4-digit
200
+ it_splits '78402411212', ['7', '84024', '1', '12', '12'] # Russia 5-digit
201
+ it_splits '7840121212', ['7', '840', '12', '12', '12'] # Abhasia
202
+ it_splits '7799121212', ['7', '799', '12', '12', '12'] # Kazachstan
203
+ it_splits '7995344121212', ['7','995344','12','12','12'] # South Osetia
204
+ it_splits '7209175276', ['7', '209', '17', '52', '76'] # Fantasy number
196
205
  end
197
206
  describe 'South Korea' do
198
207
  it { Phony.split('82212345678').should == ['82', '2', '1234', '5678'] } # Seoul
@@ -109,6 +109,33 @@ describe Phony::CountryCodes do
109
109
  it "should format irish numbers" do
110
110
  @countries.formatted('35311234567', :format => :international).should == '+353 1 123 4567'
111
111
  end
112
+ it "should format luxembourgian numbers" do
113
+ @countries.formatted('352222809', :format => :international).should == '+352 22 28 09'
114
+ end
115
+ it "should format luxembourgian 4-digit ndc numbers" do
116
+ @countries.formatted('35226222809', :format => :international).should == '+352 26 22 28 09'
117
+ end
118
+ it "should format luxembourgian mobile numbers" do
119
+ @countries.formatted('352621123456', :format => :international).should == '+352 621 123 456'
120
+ end
121
+ it "should format luxembourgian city numbers" do
122
+ @countries.formatted('3524123456', :format => :international).should == '+352 4 12 34 56'
123
+ end
124
+ it "should format luxembourgian machine to machine numbers" do
125
+ @countries.formatted('352602112345678', :format => :international).should == '+352 6021 12 34 56 78'
126
+ end
127
+ it "should format luxembourgian numbers" do
128
+ @countries.formatted('352370431', :format => :international).should == '+352 37 04 31'
129
+ end
130
+ it "should format luxembourgian numbers" do
131
+ @countries.formatted('35227855', :format => :international).should == '+352 27 85 5'
132
+ end
133
+ it "should format nigerian numbers" do
134
+ @countries.formatted('23414480000', :format => :international).should == '+234 1 448 0000'
135
+ end
136
+ it "should format nigerian mobile numbers" do
137
+ @countries.formatted('2347061234567', :format => :international).should == '+234 706 123 4567'
138
+ end
112
139
  context 'with no spaces' do
113
140
  it "should format north american numbers" do
114
141
  Phony.formatted('18091231234', :format => :international, :spaces => '').should == '+18091231234'
@@ -151,6 +178,7 @@ describe Phony::CountryCodes do
151
178
  it 'should format liechtensteiner numbers' do
152
179
  Phony.formatted('4233841148', :format => :international_relative, :spaces => :-).should == '00423-384-11-48'
153
180
  end
181
+
154
182
  end
155
183
  end
156
184
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.11
4
+ version: 1.7.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-24 00:00:00.000000000 Z
12
+ date: 2012-08-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'Fast international phone number (E164 standard) normalizing, splitting
15
15
  and formatting. Lots of formatting options: International (+.., 00..), national