phony 1.6.5 → 1.6.6
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.
- data/lib/phony.rb +14 -1
- data/lib/phony/countries.rb +101 -64
- data/lib/phony/country_codes.rb +11 -8
- data/lib/phony/dsl.rb +8 -1
- data/lib/phony/validator.rb +26 -0
- data/lib/phony/validators.rb +77 -0
- data/spec/lib/phony/validations_spec.rb +43 -0
- metadata +6 -2
data/lib/phony.rb
CHANGED
@@ -12,6 +12,8 @@ require File.expand_path '../phony/national_splitters/default', __FILE__
|
|
12
12
|
require File.expand_path '../phony/national_code', __FILE__
|
13
13
|
require File.expand_path '../phony/country', __FILE__
|
14
14
|
require File.expand_path '../phony/country_codes', __FILE__
|
15
|
+
require File.expand_path '../phony/validator', __FILE__
|
16
|
+
require File.expand_path '../phony/validators', __FILE__
|
15
17
|
require File.expand_path '../phony/dsl', __FILE__
|
16
18
|
|
17
19
|
# Countries.
|
@@ -37,7 +39,8 @@ module Phony
|
|
37
39
|
|
38
40
|
# Phony uses a single country codes instance.
|
39
41
|
#
|
40
|
-
@codes
|
42
|
+
@codes = CountryCodes.instance
|
43
|
+
@validator = Validators.instance
|
41
44
|
|
42
45
|
class << self
|
43
46
|
|
@@ -74,6 +77,16 @@ module Phony
|
|
74
77
|
end
|
75
78
|
alias formatted format
|
76
79
|
alias formatted! format!
|
80
|
+
|
81
|
+
# Makes a plausibility check.
|
82
|
+
#
|
83
|
+
# If it returns false, it is not plausible.
|
84
|
+
# If it returns true, it is unclear whether it is plausible,
|
85
|
+
# leaning towards being plausible.
|
86
|
+
#
|
87
|
+
def plausible? number, hints = {}
|
88
|
+
@validator.plausible? number, hints
|
89
|
+
end
|
77
90
|
|
78
91
|
# def service? number
|
79
92
|
# @codes.service? number.dup
|
data/lib/phony/countries.rb
CHANGED
@@ -27,7 +27,9 @@ Phony.define do
|
|
27
27
|
|
28
28
|
# USA, Canada, etc.
|
29
29
|
#
|
30
|
-
country '1',
|
30
|
+
country '1',
|
31
|
+
fixed(3) >> split(3,4),
|
32
|
+
invalid_ndcs(/911/)
|
31
33
|
|
32
34
|
# Kazakhstan (Republic of) & Russian Federation.
|
33
35
|
#
|
@@ -64,31 +66,33 @@ Phony.define do
|
|
64
66
|
|
65
67
|
# Spain.
|
66
68
|
#
|
67
|
-
country '34',
|
69
|
+
country '34',
|
70
|
+
fixed(2) >> split(3,4)
|
68
71
|
|
69
72
|
# Hungary.
|
70
73
|
#
|
71
74
|
# TODO Mobile.
|
72
75
|
#
|
73
|
-
country '36',
|
74
|
-
|
75
|
-
|
76
|
+
country '36',
|
77
|
+
one_of('104','105','107','112') >> split(3,3) | # Service
|
78
|
+
one_of('1') >> split(3,4) | # Budapest
|
79
|
+
fixed(2) >> split(3,4) # 2-digit NDCs
|
76
80
|
|
77
81
|
# country '39' # Italy, see special file.
|
78
82
|
|
79
83
|
# Romania.
|
80
84
|
#
|
81
|
-
country '40',
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
+
country '40',
|
86
|
+
match(/^(112|800|90[036])\d+$/) >> split(3,3) | # Service
|
87
|
+
match(/^(7[1-8])\d+$/) >> split(3,4) | # Mobile
|
88
|
+
one_of('21', '31') >> split(3,4) | # Bucureşti
|
89
|
+
fixed(3) >> split(3,4) # 3-digit NDCs
|
85
90
|
|
86
91
|
# Switzerland.
|
87
92
|
#
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
fixed(2) >> split(3,2,2)
|
93
|
+
country '41',
|
94
|
+
match(/^(8(00|40|42|44|48))\d+$/) >> split(3,3) |
|
95
|
+
fixed(2) >> split(3,2,2)
|
92
96
|
|
93
97
|
|
94
98
|
# country '43' # Austria, see special file.
|
@@ -96,61 +100,71 @@ Phony.define do
|
|
96
100
|
|
97
101
|
# Denmark.
|
98
102
|
#
|
99
|
-
country '45',
|
103
|
+
country '45',
|
104
|
+
none >> split(2,2,2,2)
|
100
105
|
|
101
106
|
# country '46' # Sweden, see special file.
|
102
107
|
|
103
108
|
# Norway.
|
104
109
|
#
|
105
|
-
country '47',
|
110
|
+
country '47',
|
111
|
+
none >> matched_split(/^[1].*$/ => [3],
|
112
|
+
/^[489].*$/ => [3,2,3],
|
113
|
+
:fallback => [2,2,2,2])
|
106
114
|
|
107
115
|
# Poland (Republic of)
|
108
116
|
# Although the NDCs are 2 digits, the representation is 3 digits.
|
109
117
|
# Note: http://wapedia.mobi/en/Telephone_numbers_in_Poland, mobile not yet correct
|
110
118
|
#
|
111
|
-
country '48',
|
119
|
+
country '48',
|
120
|
+
fixed(3) >> split(3,3) # Poland
|
112
121
|
|
113
122
|
# country '49' # Germany, see special file.
|
114
123
|
|
115
124
|
# Peru.
|
116
125
|
#
|
117
|
-
country '51',
|
118
|
-
|
119
|
-
|
126
|
+
country '51',
|
127
|
+
one_of('103', '105') >> split(3,3) | # Service.
|
128
|
+
one_of('1', '9') >> split(4,4) | # Lima and mobile.
|
129
|
+
fixed(2) >> split(4,4) # 2-digit NDCs.
|
120
130
|
|
121
131
|
# Mexico.
|
122
132
|
#
|
123
|
-
country '52',
|
124
|
-
|
125
|
-
|
133
|
+
country '52',
|
134
|
+
match(/^(0\d{2})\d+$/) >> split(2,2,2,2) |
|
135
|
+
match(/^(33|55|81)\d+$/) >> split(2,2,2,2) |
|
136
|
+
match(/^(\d{3})\d+$/) >> split(3,2,2)
|
126
137
|
|
127
138
|
# Cuba.
|
128
139
|
#
|
129
|
-
country '53',
|
130
|
-
|
131
|
-
|
140
|
+
country '53',
|
141
|
+
match(/^(5\d{3})\d+$/) >> split(4) | # Mobile
|
142
|
+
match(/^(7|21|22|23|4[1-8]|3[1-3])/) >> split(7) | # Short NDCs
|
143
|
+
fixed(3) >> split(7) # 3-digit NDCs
|
132
144
|
|
133
145
|
# Argentine Republic.
|
134
146
|
#
|
135
|
-
country '54',
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
147
|
+
country '54',
|
148
|
+
one_of('11', '911') >> split(4,4) | # Fixed & Mobile
|
149
|
+
match(/^(22[0137]|237|26[14]|29[179]|34[1235]|35[138]|38[1578])/) >> split(3,4) | # Fixed
|
150
|
+
match(/^(922[0137]|9237|926[14]|929[179]|934[1235]|935[138]|938[1578])/) >> split(3,4) | # Mobile
|
151
|
+
match(/^(9\d{4})/) >> split(2,4) | # Mobile
|
152
|
+
fixed(4) >> split(2,4) # Fixed
|
140
153
|
|
141
154
|
# Brazil (Federative Republic of).
|
155
|
+
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Brazil
|
142
156
|
#
|
143
157
|
brazilian_service = /^(100|128|190|191|192|193|194|197|198|199)\d+$/
|
144
|
-
country '55',
|
145
|
-
|
146
|
-
|
147
|
-
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Brazil
|
158
|
+
country '55',
|
159
|
+
match(brazilian_service) >> split(3,3) | # Service.
|
160
|
+
fixed(2) >> split(4,4) # NDCs
|
148
161
|
|
149
162
|
# Chile.
|
150
163
|
#
|
151
|
-
country '56',
|
152
|
-
|
153
|
-
|
164
|
+
country '56',
|
165
|
+
match(/^(13[0-79]|14[79])\d+$/) >> split(3,3) | # Service
|
166
|
+
one_of('2', '9') >> split(8) | # Santiago, Mobile
|
167
|
+
fixed(2) >> split(8) # 2-digit NDCs
|
154
168
|
|
155
169
|
# TODO Colombia.
|
156
170
|
#
|
@@ -158,14 +172,17 @@ Phony.define do
|
|
158
172
|
|
159
173
|
# Venezuela (Bolivarian Republic of)
|
160
174
|
#
|
161
|
-
country '58',
|
175
|
+
country '58',
|
176
|
+
fixed(3) >> split(7)
|
162
177
|
|
163
178
|
# country '60' # Malaysia, see special file.
|
164
179
|
|
165
180
|
# Australia.
|
166
181
|
#
|
167
|
-
country '61',
|
168
|
-
|
182
|
+
country '61',
|
183
|
+
match(/^(4\d\d)\d+$/) >> split(3,3) | # Mobile
|
184
|
+
fixed(1) >> split(4,4) # Rest
|
185
|
+
|
169
186
|
country '62', todo # TODO Indonesia (Republic of)
|
170
187
|
country '63', todo # TODO Philippines (Republic of the)
|
171
188
|
|
@@ -173,16 +190,19 @@ Phony.define do
|
|
173
190
|
#
|
174
191
|
# TODO Mobile?
|
175
192
|
#
|
176
|
-
country '64',
|
193
|
+
country '64',
|
194
|
+
fixed(1) >> split(3,4)
|
177
195
|
|
178
196
|
# Singapore (Republic of).
|
179
197
|
#
|
180
|
-
country '65',
|
198
|
+
country '65',
|
199
|
+
none >> split(4,4) # TODO Short Codes.
|
181
200
|
|
182
201
|
# Thailand.
|
183
202
|
#
|
184
|
-
country '66',
|
185
|
-
|
203
|
+
country '66',
|
204
|
+
one_of('2') >> split(3,4) | # Bangkok
|
205
|
+
fixed(2) >> split(3,3) # Rest
|
186
206
|
|
187
207
|
country '81', todo # TODO Japan
|
188
208
|
|
@@ -194,7 +214,8 @@ Phony.define do
|
|
194
214
|
|
195
215
|
# Turkey.
|
196
216
|
#
|
197
|
-
country '90',
|
217
|
+
country '90',
|
218
|
+
fixed(3) >> split(3,4) # Wiki says 7, but the examples say 3, 4.
|
198
219
|
|
199
220
|
country '91', todo # TODO India (Republic of)
|
200
221
|
country '92', todo # TODO Pakistan (Islamic Republic of), http://en.wikipedia.org/wiki/Telephone_numbers_in_Pakistan, NDC 2-5
|
@@ -264,11 +285,20 @@ Phony.define do
|
|
264
285
|
country '252', todo # Somali Democratic Republic
|
265
286
|
country '253', todo # Djibouti
|
266
287
|
country '254', fixed(2) >> split(7) # Kenya
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
country '
|
271
|
-
|
288
|
+
|
289
|
+
# Tanzania.
|
290
|
+
#
|
291
|
+
country '255',
|
292
|
+
match(/^([89]\d\d)/) >> split(3,3) | # Special/Premium.
|
293
|
+
one_of('112', '118') >> split(3,3) | # Short Codes.
|
294
|
+
fixed(2) >> split(3,4) # Geographic.
|
295
|
+
|
296
|
+
# Uganda.
|
297
|
+
#
|
298
|
+
country '256',
|
299
|
+
match(/^(46[45]|4[78]\d)/) >> split(6) | # Geo 1.
|
300
|
+
fixed(2) >> split(7) # Geo 2.
|
301
|
+
|
272
302
|
country '257', todo # Burundi
|
273
303
|
country '258', todo # Mozambique
|
274
304
|
country '259', todo # -
|
@@ -310,10 +340,11 @@ Phony.define do
|
|
310
340
|
|
311
341
|
# Portugal.
|
312
342
|
#
|
313
|
-
country '351',
|
314
|
-
|
315
|
-
|
316
|
-
|
343
|
+
country '351',
|
344
|
+
one_of('700', '800') >> split(3,3) | # Service.
|
345
|
+
match(/^(9\d)\d+$/) >> split(3,4) | # Mobile.
|
346
|
+
one_of('21', '22') >> split(3,4) | # Lisboa & Porto
|
347
|
+
fixed(3) >> split(3,4) # 3-digit NDCs
|
317
348
|
|
318
349
|
country '352', todo # Luxembourg
|
319
350
|
|
@@ -326,19 +357,25 @@ Phony.define do
|
|
326
357
|
|
327
358
|
# Finland.
|
328
359
|
#
|
329
|
-
country '358',
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
360
|
+
country '358',
|
361
|
+
match(/^([6-8]00)\d+$/) >> split(3,3) | # Service
|
362
|
+
match(/^(4\d|50)\d+$/) >> split(3,2,2) | # Mobile
|
363
|
+
one_of('2','3','5','6','8','9') >> split(3,3) | # Short NDCs
|
364
|
+
fixed(2) >> split(3,3) # 2-digit NDCs
|
365
|
+
|
366
|
+
# Bulgaria.
|
367
|
+
#
|
368
|
+
country '359',
|
369
|
+
fixed(2) >> split(3,2,2) # Bulgaria
|
334
370
|
|
335
371
|
# Lithuania.
|
336
372
|
#
|
337
|
-
country '370',
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
373
|
+
country '370',
|
374
|
+
one_of('700', '800') >> split(2,3) | # Service
|
375
|
+
match(/^(6\d\d)\d+$/) >> split(2,3) | # Mobile
|
376
|
+
one_of('5') >> split(3,2,2) | # Vilnius
|
377
|
+
one_of('37','41') >> split(2,2,2) | # Kaunas, Šiauliai
|
378
|
+
fixed(3) >> split(1,2,2) # 3-digit NDCs.
|
342
379
|
|
343
380
|
country '371', todo # Latvia
|
344
381
|
country '372', todo # Estonia
|
data/lib/phony/country_codes.rb
CHANGED
@@ -6,7 +6,7 @@ module Phony
|
|
6
6
|
#
|
7
7
|
class CountryCodes
|
8
8
|
|
9
|
-
attr_reader :
|
9
|
+
attr_reader :splitter_mapping
|
10
10
|
attr_accessor :international_absolute_format, :international_relative_format, :national_format
|
11
11
|
|
12
12
|
def initialize
|
@@ -22,11 +22,14 @@ module Phony
|
|
22
22
|
@instance ||= new
|
23
23
|
end
|
24
24
|
|
25
|
-
@@
|
26
|
-
def
|
25
|
+
@@basic_normalizing_pattern = /^0+|\D/
|
26
|
+
def clean number
|
27
27
|
# Remove non-digit chars.
|
28
28
|
#
|
29
|
-
number.gsub! @@
|
29
|
+
number.gsub! @@basic_normalizing_pattern, EMPTY_STRING
|
30
|
+
end
|
31
|
+
def normalize number
|
32
|
+
clean number
|
30
33
|
national_handler, cc, rest = split_cc number
|
31
34
|
@normalize_format % [cc, national_handler.normalize(rest)]
|
32
35
|
end
|
@@ -102,7 +105,7 @@ module Phony
|
|
102
105
|
presumed_cc = ''
|
103
106
|
1.upto(3) do |i|
|
104
107
|
presumed_cc << rest.slice!(0..0)
|
105
|
-
national_code_handler =
|
108
|
+
national_code_handler = splitter_mapping[i][presumed_cc]
|
106
109
|
return [national_code_handler, presumed_cc, rest] if national_code_handler
|
107
110
|
end
|
108
111
|
# This line is never reached as CCs are in prefix code.
|
@@ -121,9 +124,9 @@ module Phony
|
|
121
124
|
country_code = country_code.to_s
|
122
125
|
optimized_country_code_access = country_code.size
|
123
126
|
|
124
|
-
@
|
125
|
-
@
|
126
|
-
@
|
127
|
+
@splitter_mapping ||= {}
|
128
|
+
@splitter_mapping[optimized_country_code_access] ||= {}
|
129
|
+
@splitter_mapping[optimized_country_code_access][country_code] = country
|
127
130
|
end
|
128
131
|
|
129
132
|
end
|
data/lib/phony/dsl.rb
CHANGED
@@ -46,8 +46,9 @@ module Phony
|
|
46
46
|
|
47
47
|
#
|
48
48
|
#
|
49
|
-
def country country_code, country
|
49
|
+
def country country_code, country, validator = nil
|
50
50
|
Phony::CountryCodes.instance.add country_code, country
|
51
|
+
Phony::Validators.instance.add country_code, validator if validator
|
51
52
|
end
|
52
53
|
|
53
54
|
# National matcher & splitters.
|
@@ -89,6 +90,12 @@ module Phony
|
|
89
90
|
def matched_split options = {}
|
90
91
|
Phony::LocalSplitters::Regex.instance_for options
|
91
92
|
end
|
93
|
+
|
94
|
+
# Validators
|
95
|
+
#
|
96
|
+
def invalid_ndcs ndc
|
97
|
+
Validator.new.ndc_check ndc
|
98
|
+
end
|
92
99
|
|
93
100
|
end
|
94
101
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Phony
|
2
|
+
|
3
|
+
class Validator
|
4
|
+
|
5
|
+
attr_reader :ndc_checks
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@ndc_checks = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def plausible? ndc, rest
|
12
|
+
ndc_checks && ndc_checks.each do |ndc_check|
|
13
|
+
return false if ndc_check === ndc
|
14
|
+
end
|
15
|
+
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
def ndc_check ndc
|
20
|
+
@ndc_checks << ndc
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# # Number: A possible phone number, E164 or not.
|
2
|
+
# # Hints: Information that helps or constricts the plausibility check.
|
3
|
+
# #
|
4
|
+
# plausible? number, hints = {}
|
5
|
+
#
|
6
|
+
|
7
|
+
# plausible? number # Uses the definitions from the country definition to plausibility check.
|
8
|
+
# plausible? number, cc: 1 # => Checks cc.
|
9
|
+
# plausible? number, pattern: /[^5]/ # Uses def, checks against split.
|
10
|
+
# plausible? number, country: 1, pattern: [3, 4, 3] # Uses given country – adds cc.
|
11
|
+
#
|
12
|
+
|
13
|
+
# Basic plausibility is:
|
14
|
+
# * Max digits are 15.
|
15
|
+
# * Min digits are 2 (?)
|
16
|
+
#
|
17
|
+
|
18
|
+
module Phony
|
19
|
+
|
20
|
+
class Validators
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
@validators = {}
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.instance
|
27
|
+
@instance ||= new
|
28
|
+
end
|
29
|
+
|
30
|
+
# Add a specific country validator.
|
31
|
+
#
|
32
|
+
def add cc, validator
|
33
|
+
@validators[cc] = validator
|
34
|
+
end
|
35
|
+
|
36
|
+
# Is the given number plausible?
|
37
|
+
#
|
38
|
+
def plausible? number, hints = {}
|
39
|
+
normalized = CountryCodes.instance.clean number
|
40
|
+
|
41
|
+
# False if it fails the basic check.
|
42
|
+
#
|
43
|
+
return false unless (2..15) === normalized.size
|
44
|
+
|
45
|
+
# Hint based checking.
|
46
|
+
#
|
47
|
+
cc, ndc, *rest = Phony.split normalized
|
48
|
+
|
49
|
+
# CC.
|
50
|
+
#
|
51
|
+
cc_needed = hints[:cc]
|
52
|
+
return false if cc_needed && cc_needed != cc
|
53
|
+
|
54
|
+
# NDC.
|
55
|
+
#
|
56
|
+
ndc_needed = hints[:ndc]
|
57
|
+
return false if ndc_needed && ndc_needed != ndc
|
58
|
+
|
59
|
+
# Country specific checks.
|
60
|
+
#
|
61
|
+
validator = validator_for cc
|
62
|
+
validator.plausible? ndc, rest
|
63
|
+
rescue StandardError
|
64
|
+
return false
|
65
|
+
end
|
66
|
+
|
67
|
+
def validator_for cc
|
68
|
+
@validators[cc] || default_validator
|
69
|
+
end
|
70
|
+
|
71
|
+
def default_validator
|
72
|
+
@default_validator ||= Validator.new
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'validations' do
|
6
|
+
|
7
|
+
describe 'plausible?' do
|
8
|
+
|
9
|
+
it "is correct" do
|
10
|
+
Phony.plausible?('0000000').should be_false
|
11
|
+
end
|
12
|
+
it "is correct" do
|
13
|
+
Phony.plausible?('hello').should be_false
|
14
|
+
end
|
15
|
+
|
16
|
+
it "is correct" do
|
17
|
+
Phony.plausible?('+41 44 111 22 33').should be_true
|
18
|
+
end
|
19
|
+
it "is correct for explicit checks" do
|
20
|
+
Phony.plausible?('+41 44 111 22 33', cc: '41').should be_true
|
21
|
+
end
|
22
|
+
it "is correct for explicit checks" do
|
23
|
+
Phony.plausible?('+41 44 111 22 33', ndc: '44').should be_true
|
24
|
+
end
|
25
|
+
it "is correct for explicit checks" do
|
26
|
+
Phony.plausible?('+41 44 111 22 33', cc: '1').should be_false
|
27
|
+
end
|
28
|
+
it "is correct for explicit checks" do
|
29
|
+
Phony.plausible?('+41 44 111 22 33', ndc: '43').should be_false
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'countries' do
|
33
|
+
|
34
|
+
it "is correct for US numbers" do
|
35
|
+
Phony.plausible?('1-800-692-7753').should be_true
|
36
|
+
Phony.plausible?('1-911').should be_false
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
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.6.
|
4
|
+
version: 1.6.6
|
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-03-
|
12
|
+
date: 2012-03-18 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
|
@@ -43,6 +43,8 @@ files:
|
|
43
43
|
- lib/phony/national_splitters/none.rb
|
44
44
|
- lib/phony/national_splitters/regex.rb
|
45
45
|
- lib/phony/national_splitters/variable.rb
|
46
|
+
- lib/phony/validator.rb
|
47
|
+
- lib/phony/validators.rb
|
46
48
|
- lib/phony/vanity.rb
|
47
49
|
- lib/phony.rb
|
48
50
|
- README.textile
|
@@ -57,6 +59,7 @@ files:
|
|
57
59
|
- spec/lib/phony/national_splitters/none_spec.rb
|
58
60
|
- spec/lib/phony/national_splitters/regex_spec.rb
|
59
61
|
- spec/lib/phony/national_splitters/variable_spec.rb
|
62
|
+
- spec/lib/phony/validations_spec.rb
|
60
63
|
- spec/lib/phony/vanity_spec.rb
|
61
64
|
- spec/lib/phony_spec.rb
|
62
65
|
homepage: http://github.com/floere/phony
|
@@ -96,5 +99,6 @@ test_files:
|
|
96
99
|
- spec/lib/phony/national_splitters/none_spec.rb
|
97
100
|
- spec/lib/phony/national_splitters/regex_spec.rb
|
98
101
|
- spec/lib/phony/national_splitters/variable_spec.rb
|
102
|
+
- spec/lib/phony/validations_spec.rb
|
99
103
|
- spec/lib/phony/vanity_spec.rb
|
100
104
|
- spec/lib/phony_spec.rb
|