as_dialed_from 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/.rvmrc +1 -1
- data/Gemfile +2 -11
- data/Rakefile +13 -34
- data/as_dialed_from.gemspec +24 -311
- data/lib/as_dialed_from/metadata.rb +25 -25
- data/lib/as_dialed_from/number.rb +24 -22
- data/lib/as_dialed_from/version.rb +5 -0
- data/tasks/as_dialed_from.rake +1 -1
- data/test/as_dialed_from/metadata_test.rb +8 -8
- data/test/as_dialed_from/number_test.rb +34 -26
- data/test/as_dialed_from_test.rb +4 -4
- data/test/test_helper.rb +4 -1
- metadata +96 -145
data/.gitignore
ADDED
data/.rvmrc
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
rvm 1.
|
1
|
+
rvm 1.9.3@as_dialed_from --install --create
|
2
2
|
rvm_project_rvmrc_default=1
|
data/Gemfile
CHANGED
@@ -1,19 +1,10 @@
|
|
1
1
|
source :rubygems
|
2
2
|
|
3
|
+
gemspec
|
4
|
+
|
3
5
|
group :development, :test do
|
4
|
-
gem 'xml-simple'
|
5
|
-
|
6
|
-
gem 'test-unit'
|
7
|
-
gem 'guard-test'
|
8
|
-
|
9
6
|
group :darwin do
|
10
7
|
gem 'rb-fsevent'
|
11
8
|
gem 'growl'
|
12
9
|
end
|
13
|
-
|
14
|
-
gem 'rcov', :platforms => :mri
|
15
|
-
|
16
|
-
gem 'bundler'
|
17
|
-
gem 'jeweler'
|
18
10
|
end
|
19
|
-
|
data/Rakefile
CHANGED
@@ -1,47 +1,26 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
3
|
+
require 'bundler/gem_tasks'
|
13
4
|
|
14
|
-
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "as_dialed_from"
|
18
|
-
gem.homepage = "http://github.com/Movitas/as_dialed_from"
|
19
|
-
gem.license = "Apache"
|
20
|
-
gem.summary = "Figure out how a number should be dialed from another country"
|
21
|
-
gem.description = "Figure out how a number should be dialed from another country. A fork of a port of Google's libphonenumber."
|
22
|
-
gem.email = "jcampbell@movitas.com"
|
23
|
-
gem.authors = ["Justin Campbell"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
5
|
+
Dir.glob('tasks/*.rake').each { |r| import r }
|
27
6
|
|
28
7
|
require 'rake/testtask'
|
29
8
|
Rake::TestTask.new(:test) do |test|
|
30
9
|
test.libs << 'lib' << 'test'
|
31
|
-
test.pattern = 'test
|
32
|
-
test.verbose = true
|
10
|
+
test.pattern = 'test/**/*_test.rb'
|
33
11
|
end
|
34
12
|
|
35
|
-
if
|
36
|
-
require '
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
13
|
+
if RUBY_VERSION =~ /1.9/
|
14
|
+
require 'simplecov'
|
15
|
+
desc "Simplecov"
|
16
|
+
Rake::TestTask.new do |t|
|
17
|
+
t.name = 'simplecov'
|
18
|
+
t.loader = :direct
|
19
|
+
t.libs.push 'test', 'spec', Dir.pwd
|
20
|
+
t.test_files = FileList['test/**/*_test.rb']
|
21
|
+
|
22
|
+
t.ruby_opts.push '-r', 'simplecov', '-e', 'SimpleCov.start()'.inspect
|
42
23
|
end
|
43
24
|
end
|
44
25
|
|
45
26
|
task :default => :test
|
46
|
-
|
47
|
-
Dir.glob('tasks/*.rake').each { |r| import r }
|
data/as_dialed_from.gemspec
CHANGED
@@ -1,320 +1,33 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "as_dialed_from/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
6
|
+
s.name = "as_dialed_from"
|
7
|
+
s.version = AsDialedFrom::VERSION
|
8
|
+
s.authors = ["Justin Campbell"]
|
9
|
+
s.email = ["jcampbell@justincampbell.me"]
|
10
|
+
s.homepage = "http://github.com/Movitas/as_dialed_from"
|
11
|
+
s.summary = %q{Figure out how a number should be dialed from another country}
|
13
12
|
s.description = %q{Figure out how a number should be dialed from another country. A fork of a port of Google's libphonenumber.}
|
14
|
-
|
15
|
-
s.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
s.files = [
|
20
|
-
".rvmrc",
|
21
|
-
".travis.yml",
|
22
|
-
"Gemfile",
|
23
|
-
"Guardfile",
|
24
|
-
"LICENSE",
|
25
|
-
"README.md",
|
26
|
-
"Rakefile",
|
27
|
-
"VERSION",
|
28
|
-
"as_dialed_from.gemspec",
|
29
|
-
"lib/as_dialed_from.rb",
|
30
|
-
"lib/as_dialed_from/metadata.rb",
|
31
|
-
"lib/as_dialed_from/number.rb",
|
32
|
-
"resources/PhoneNumberMetaData.xml",
|
33
|
-
"resources/country_codes.yml",
|
34
|
-
"resources/territories/.gitkeep",
|
35
|
-
"resources/territories/AC.yml",
|
36
|
-
"resources/territories/AD.yml",
|
37
|
-
"resources/territories/AE.yml",
|
38
|
-
"resources/territories/AF.yml",
|
39
|
-
"resources/territories/AG.yml",
|
40
|
-
"resources/territories/AI.yml",
|
41
|
-
"resources/territories/AL.yml",
|
42
|
-
"resources/territories/AM.yml",
|
43
|
-
"resources/territories/AN.yml",
|
44
|
-
"resources/territories/AO.yml",
|
45
|
-
"resources/territories/AR.yml",
|
46
|
-
"resources/territories/AS.yml",
|
47
|
-
"resources/territories/AT.yml",
|
48
|
-
"resources/territories/AU.yml",
|
49
|
-
"resources/territories/AW.yml",
|
50
|
-
"resources/territories/AX.yml",
|
51
|
-
"resources/territories/AZ.yml",
|
52
|
-
"resources/territories/BA.yml",
|
53
|
-
"resources/territories/BB.yml",
|
54
|
-
"resources/territories/BD.yml",
|
55
|
-
"resources/territories/BE.yml",
|
56
|
-
"resources/territories/BF.yml",
|
57
|
-
"resources/territories/BG.yml",
|
58
|
-
"resources/territories/BH.yml",
|
59
|
-
"resources/territories/BI.yml",
|
60
|
-
"resources/territories/BJ.yml",
|
61
|
-
"resources/territories/BL.yml",
|
62
|
-
"resources/territories/BM.yml",
|
63
|
-
"resources/territories/BN.yml",
|
64
|
-
"resources/territories/BO.yml",
|
65
|
-
"resources/territories/BR.yml",
|
66
|
-
"resources/territories/BS.yml",
|
67
|
-
"resources/territories/BT.yml",
|
68
|
-
"resources/territories/BW.yml",
|
69
|
-
"resources/territories/BY.yml",
|
70
|
-
"resources/territories/BZ.yml",
|
71
|
-
"resources/territories/CA.yml",
|
72
|
-
"resources/territories/CC.yml",
|
73
|
-
"resources/territories/CD.yml",
|
74
|
-
"resources/territories/CF.yml",
|
75
|
-
"resources/territories/CG.yml",
|
76
|
-
"resources/territories/CH.yml",
|
77
|
-
"resources/territories/CI.yml",
|
78
|
-
"resources/territories/CK.yml",
|
79
|
-
"resources/territories/CL.yml",
|
80
|
-
"resources/territories/CM.yml",
|
81
|
-
"resources/territories/CN.yml",
|
82
|
-
"resources/territories/CO.yml",
|
83
|
-
"resources/territories/CR.yml",
|
84
|
-
"resources/territories/CU.yml",
|
85
|
-
"resources/territories/CV.yml",
|
86
|
-
"resources/territories/CX.yml",
|
87
|
-
"resources/territories/CY.yml",
|
88
|
-
"resources/territories/CZ.yml",
|
89
|
-
"resources/territories/DE.yml",
|
90
|
-
"resources/territories/DJ.yml",
|
91
|
-
"resources/territories/DK.yml",
|
92
|
-
"resources/territories/DM.yml",
|
93
|
-
"resources/territories/DO.yml",
|
94
|
-
"resources/territories/DZ.yml",
|
95
|
-
"resources/territories/EC.yml",
|
96
|
-
"resources/territories/EE.yml",
|
97
|
-
"resources/territories/EG.yml",
|
98
|
-
"resources/territories/ER.yml",
|
99
|
-
"resources/territories/ES.yml",
|
100
|
-
"resources/territories/ET.yml",
|
101
|
-
"resources/territories/FI.yml",
|
102
|
-
"resources/territories/FJ.yml",
|
103
|
-
"resources/territories/FK.yml",
|
104
|
-
"resources/territories/FM.yml",
|
105
|
-
"resources/territories/FO.yml",
|
106
|
-
"resources/territories/FR.yml",
|
107
|
-
"resources/territories/GA.yml",
|
108
|
-
"resources/territories/GB.yml",
|
109
|
-
"resources/territories/GD.yml",
|
110
|
-
"resources/territories/GE.yml",
|
111
|
-
"resources/territories/GF.yml",
|
112
|
-
"resources/territories/GG.yml",
|
113
|
-
"resources/territories/GH.yml",
|
114
|
-
"resources/territories/GI.yml",
|
115
|
-
"resources/territories/GL.yml",
|
116
|
-
"resources/territories/GM.yml",
|
117
|
-
"resources/territories/GN.yml",
|
118
|
-
"resources/territories/GP.yml",
|
119
|
-
"resources/territories/GQ.yml",
|
120
|
-
"resources/territories/GR.yml",
|
121
|
-
"resources/territories/GT.yml",
|
122
|
-
"resources/territories/GU.yml",
|
123
|
-
"resources/territories/GW.yml",
|
124
|
-
"resources/territories/GY.yml",
|
125
|
-
"resources/territories/HK.yml",
|
126
|
-
"resources/territories/HN.yml",
|
127
|
-
"resources/territories/HR.yml",
|
128
|
-
"resources/territories/HT.yml",
|
129
|
-
"resources/territories/HU.yml",
|
130
|
-
"resources/territories/ID.yml",
|
131
|
-
"resources/territories/IE.yml",
|
132
|
-
"resources/territories/IL.yml",
|
133
|
-
"resources/territories/IM.yml",
|
134
|
-
"resources/territories/IN.yml",
|
135
|
-
"resources/territories/IO.yml",
|
136
|
-
"resources/territories/IQ.yml",
|
137
|
-
"resources/territories/IR.yml",
|
138
|
-
"resources/territories/IS.yml",
|
139
|
-
"resources/territories/IT.yml",
|
140
|
-
"resources/territories/JE.yml",
|
141
|
-
"resources/territories/JM.yml",
|
142
|
-
"resources/territories/JO.yml",
|
143
|
-
"resources/territories/JP.yml",
|
144
|
-
"resources/territories/KE.yml",
|
145
|
-
"resources/territories/KG.yml",
|
146
|
-
"resources/territories/KH.yml",
|
147
|
-
"resources/territories/KI.yml",
|
148
|
-
"resources/territories/KM.yml",
|
149
|
-
"resources/territories/KN.yml",
|
150
|
-
"resources/territories/KP.yml",
|
151
|
-
"resources/territories/KR.yml",
|
152
|
-
"resources/territories/KW.yml",
|
153
|
-
"resources/territories/KY.yml",
|
154
|
-
"resources/territories/KZ.yml",
|
155
|
-
"resources/territories/LA.yml",
|
156
|
-
"resources/territories/LB.yml",
|
157
|
-
"resources/territories/LC.yml",
|
158
|
-
"resources/territories/LI.yml",
|
159
|
-
"resources/territories/LK.yml",
|
160
|
-
"resources/territories/LR.yml",
|
161
|
-
"resources/territories/LS.yml",
|
162
|
-
"resources/territories/LT.yml",
|
163
|
-
"resources/territories/LU.yml",
|
164
|
-
"resources/territories/LV.yml",
|
165
|
-
"resources/territories/LY.yml",
|
166
|
-
"resources/territories/MA.yml",
|
167
|
-
"resources/territories/MC.yml",
|
168
|
-
"resources/territories/MD.yml",
|
169
|
-
"resources/territories/ME.yml",
|
170
|
-
"resources/territories/MF.yml",
|
171
|
-
"resources/territories/MG.yml",
|
172
|
-
"resources/territories/MH.yml",
|
173
|
-
"resources/territories/MK.yml",
|
174
|
-
"resources/territories/ML.yml",
|
175
|
-
"resources/territories/MM.yml",
|
176
|
-
"resources/territories/MN.yml",
|
177
|
-
"resources/territories/MO.yml",
|
178
|
-
"resources/territories/MP.yml",
|
179
|
-
"resources/territories/MQ.yml",
|
180
|
-
"resources/territories/MR.yml",
|
181
|
-
"resources/territories/MS.yml",
|
182
|
-
"resources/territories/MT.yml",
|
183
|
-
"resources/territories/MU.yml",
|
184
|
-
"resources/territories/MV.yml",
|
185
|
-
"resources/territories/MW.yml",
|
186
|
-
"resources/territories/MX.yml",
|
187
|
-
"resources/territories/MY.yml",
|
188
|
-
"resources/territories/MZ.yml",
|
189
|
-
"resources/territories/NA.yml",
|
190
|
-
"resources/territories/NC.yml",
|
191
|
-
"resources/territories/NE.yml",
|
192
|
-
"resources/territories/NF.yml",
|
193
|
-
"resources/territories/NG.yml",
|
194
|
-
"resources/territories/NI.yml",
|
195
|
-
"resources/territories/NL.yml",
|
196
|
-
"resources/territories/NO.yml",
|
197
|
-
"resources/territories/NP.yml",
|
198
|
-
"resources/territories/NR.yml",
|
199
|
-
"resources/territories/NU.yml",
|
200
|
-
"resources/territories/NZ.yml",
|
201
|
-
"resources/territories/OM.yml",
|
202
|
-
"resources/territories/PA.yml",
|
203
|
-
"resources/territories/PE.yml",
|
204
|
-
"resources/territories/PF.yml",
|
205
|
-
"resources/territories/PG.yml",
|
206
|
-
"resources/territories/PH.yml",
|
207
|
-
"resources/territories/PK.yml",
|
208
|
-
"resources/territories/PL.yml",
|
209
|
-
"resources/territories/PM.yml",
|
210
|
-
"resources/territories/PR.yml",
|
211
|
-
"resources/territories/PS.yml",
|
212
|
-
"resources/territories/PT.yml",
|
213
|
-
"resources/territories/PW.yml",
|
214
|
-
"resources/territories/PY.yml",
|
215
|
-
"resources/territories/QA.yml",
|
216
|
-
"resources/territories/RE.yml",
|
217
|
-
"resources/territories/RO.yml",
|
218
|
-
"resources/territories/RS.yml",
|
219
|
-
"resources/territories/RU.yml",
|
220
|
-
"resources/territories/RW.yml",
|
221
|
-
"resources/territories/SA.yml",
|
222
|
-
"resources/territories/SB.yml",
|
223
|
-
"resources/territories/SC.yml",
|
224
|
-
"resources/territories/SD.yml",
|
225
|
-
"resources/territories/SE.yml",
|
226
|
-
"resources/territories/SG.yml",
|
227
|
-
"resources/territories/SH.yml",
|
228
|
-
"resources/territories/SI.yml",
|
229
|
-
"resources/territories/SJ.yml",
|
230
|
-
"resources/territories/SK.yml",
|
231
|
-
"resources/territories/SL.yml",
|
232
|
-
"resources/territories/SM.yml",
|
233
|
-
"resources/territories/SN.yml",
|
234
|
-
"resources/territories/SO.yml",
|
235
|
-
"resources/territories/SR.yml",
|
236
|
-
"resources/territories/ST.yml",
|
237
|
-
"resources/territories/SV.yml",
|
238
|
-
"resources/territories/SY.yml",
|
239
|
-
"resources/territories/SZ.yml",
|
240
|
-
"resources/territories/TC.yml",
|
241
|
-
"resources/territories/TD.yml",
|
242
|
-
"resources/territories/TF.yml",
|
243
|
-
"resources/territories/TG.yml",
|
244
|
-
"resources/territories/TH.yml",
|
245
|
-
"resources/territories/TJ.yml",
|
246
|
-
"resources/territories/TK.yml",
|
247
|
-
"resources/territories/TL.yml",
|
248
|
-
"resources/territories/TM.yml",
|
249
|
-
"resources/territories/TN.yml",
|
250
|
-
"resources/territories/TO.yml",
|
251
|
-
"resources/territories/TR.yml",
|
252
|
-
"resources/territories/TT.yml",
|
253
|
-
"resources/territories/TV.yml",
|
254
|
-
"resources/territories/TW.yml",
|
255
|
-
"resources/territories/TZ.yml",
|
256
|
-
"resources/territories/UA.yml",
|
257
|
-
"resources/territories/UG.yml",
|
258
|
-
"resources/territories/US.yml",
|
259
|
-
"resources/territories/UY.yml",
|
260
|
-
"resources/territories/UZ.yml",
|
261
|
-
"resources/territories/VA.yml",
|
262
|
-
"resources/territories/VC.yml",
|
263
|
-
"resources/territories/VE.yml",
|
264
|
-
"resources/territories/VG.yml",
|
265
|
-
"resources/territories/VI.yml",
|
266
|
-
"resources/territories/VN.yml",
|
267
|
-
"resources/territories/VU.yml",
|
268
|
-
"resources/territories/WF.yml",
|
269
|
-
"resources/territories/WS.yml",
|
270
|
-
"resources/territories/YE.yml",
|
271
|
-
"resources/territories/YT.yml",
|
272
|
-
"resources/territories/ZA.yml",
|
273
|
-
"resources/territories/ZM.yml",
|
274
|
-
"resources/territories/ZW.yml",
|
275
|
-
"tasks/as_dialed_from.rake",
|
276
|
-
"test/as_dialed_from/metadata_test.rb",
|
277
|
-
"test/as_dialed_from/number_test.rb",
|
278
|
-
"test/as_dialed_from_test.rb",
|
279
|
-
"test/test_helper.rb"
|
280
|
-
]
|
281
|
-
s.homepage = %q{http://github.com/Movitas/as_dialed_from}
|
282
|
-
s.licenses = ["Apache"]
|
13
|
+
|
14
|
+
s.rubyforge_project = "as_dialed_from"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- test/*`.split("\n")
|
283
18
|
s.require_paths = ["lib"]
|
284
|
-
s.rubygems_version = %q{1.6.2}
|
285
|
-
s.summary = %q{Figure out how a number should be dialed from another country}
|
286
19
|
|
287
|
-
|
288
|
-
|
20
|
+
s.add_development_dependency 'guard-test'
|
21
|
+
s.add_development_dependency 'shoulda'
|
22
|
+
s.add_development_dependency 'test-unit'
|
23
|
+
s.add_development_dependency 'xml-simple'
|
289
24
|
|
290
|
-
|
291
|
-
|
292
|
-
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
293
|
-
s.add_development_dependency(%q<guard-test>, [">= 0"])
|
294
|
-
s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
|
295
|
-
s.add_development_dependency(%q<growl>, [">= 0"])
|
296
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
297
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
298
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
299
|
-
else
|
300
|
-
s.add_dependency(%q<xml-simple>, [">= 0"])
|
301
|
-
s.add_dependency(%q<test-unit>, [">= 0"])
|
302
|
-
s.add_dependency(%q<guard-test>, [">= 0"])
|
303
|
-
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
304
|
-
s.add_dependency(%q<growl>, [">= 0"])
|
305
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
306
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
307
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
308
|
-
end
|
309
|
-
else
|
310
|
-
s.add_dependency(%q<xml-simple>, [">= 0"])
|
311
|
-
s.add_dependency(%q<test-unit>, [">= 0"])
|
312
|
-
s.add_dependency(%q<guard-test>, [">= 0"])
|
313
|
-
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
314
|
-
s.add_dependency(%q<growl>, [">= 0"])
|
315
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
316
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
317
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
25
|
+
if RUBY_VERSION =~ /1.9/
|
26
|
+
s.add_development_dependency 'simplecov'
|
318
27
|
end
|
319
|
-
end
|
320
28
|
|
29
|
+
if RUBY_PLATFORM =~ /darwin/
|
30
|
+
s.add_development_dependency 'growl'
|
31
|
+
s.add_development_dependency 'rb-fsevent'
|
32
|
+
end
|
33
|
+
end
|
@@ -2,51 +2,51 @@ require 'net/http'
|
|
2
2
|
require 'yaml'
|
3
3
|
|
4
4
|
module AsDialedFrom
|
5
|
-
|
5
|
+
|
6
6
|
class Metadata
|
7
7
|
RESOURCES_DIRECTORY = File.dirname(__FILE__) + "/../../resources/"
|
8
8
|
TERRITORIES_DIRECTORY = RESOURCES_DIRECTORY + "/territories"
|
9
9
|
LOCAL_XML_FILE = RESOURCES_DIRECTORY + "/PhoneNumberMetaData.xml"
|
10
10
|
COUNTRY_CODES_FILE = "#{RESOURCES_DIRECTORY}/country_codes.yml"
|
11
|
-
|
11
|
+
|
12
12
|
UPSTREAM_URL = "http://libphonenumber.googlecode.com/svn/trunk/resources/PhoneNumberMetaData.xml"
|
13
|
-
|
13
|
+
|
14
14
|
attr_accessor :data
|
15
|
-
|
15
|
+
|
16
16
|
def initialize; end
|
17
|
-
|
17
|
+
|
18
18
|
def self.for_region(region_code)
|
19
19
|
YAML::load_file "#{TERRITORIES_DIRECTORY}/#{region_code}.yml"
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def self.country_code_to_region
|
23
23
|
YAML::load_file COUNTRY_CODES_FILE
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def self.download
|
27
27
|
file = File.new LOCAL_XML_FILE, "w"
|
28
28
|
file.write Net::HTTP.get(URI.parse(UPSTREAM_URL))
|
29
29
|
file.close
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def self.parse
|
33
33
|
require 'xmlsimple'
|
34
|
-
|
34
|
+
|
35
35
|
puts "Parsing XML file"
|
36
|
-
|
36
|
+
|
37
37
|
xml = File.read LOCAL_XML_FILE
|
38
38
|
phone_number_meta_data = XmlSimple.xml_in xml, { 'KeyAttr' => 'id', 'ForceArray' => false }
|
39
39
|
territories = phone_number_meta_data['territories']['territory']
|
40
|
-
|
40
|
+
|
41
41
|
country_code_to_region_code_map = {}
|
42
|
-
|
42
|
+
|
43
43
|
print "Writing territories "
|
44
|
-
|
44
|
+
|
45
45
|
territories.each do |territory, data|
|
46
46
|
print "#{territory} "
|
47
|
-
|
47
|
+
|
48
48
|
hash ||= {}
|
49
|
-
|
49
|
+
|
50
50
|
%w[
|
51
51
|
countryCode
|
52
52
|
internationalPrefix
|
@@ -55,31 +55,31 @@ module AsDialedFrom
|
|
55
55
|
].each do |xml_attribute|
|
56
56
|
hash[underscore(xml_attribute).to_sym] = data[xml_attribute] if data[xml_attribute]
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
hash[:national_number_pattern] = data['generalDesc']['nationalNumberPattern'] if data['generalDesc'] and data['generalDesc']['nationalNumberPattern']
|
60
|
-
|
60
|
+
|
61
61
|
file = File.new "#{TERRITORIES_DIRECTORY}/#{territory}.yml", "w"
|
62
62
|
file.write hash.to_yaml
|
63
63
|
file.close
|
64
|
-
|
64
|
+
|
65
65
|
country_code_to_region_code_map[data['countryCode']] ||= []
|
66
|
-
|
66
|
+
|
67
67
|
if data['mainCountryForCode']
|
68
68
|
country_code_to_region_code_map[data['countryCode']].insert 0, territory
|
69
69
|
else
|
70
70
|
country_code_to_region_code_map[data['countryCode']].push territory
|
71
71
|
end
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
puts "\nWriting country code map"
|
75
|
-
|
75
|
+
|
76
76
|
file = File.new COUNTRY_CODES_FILE, "w"
|
77
77
|
file.write country_code_to_region_code_map.to_yaml
|
78
78
|
file.close
|
79
|
-
|
79
|
+
|
80
80
|
puts "Done!"
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
def self.underscore(camel_cased_word)
|
84
84
|
word = camel_cased_word.to_s.dup
|
85
85
|
word.gsub!(/::/, '/')
|
@@ -89,7 +89,7 @@ module AsDialedFrom
|
|
89
89
|
word.downcase!
|
90
90
|
word
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
end
|
@@ -1,30 +1,32 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
module AsDialedFrom
|
4
|
-
|
4
|
+
|
5
5
|
class Number
|
6
|
-
|
6
|
+
|
7
7
|
attr_reader :number
|
8
|
-
|
8
|
+
|
9
9
|
def initialize(number)
|
10
10
|
@number = number
|
11
|
-
|
11
|
+
|
12
12
|
# Pre-compute stuff
|
13
13
|
country_code
|
14
14
|
metadata
|
15
|
-
|
15
|
+
|
16
16
|
@number
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def as_dialed_from(from_country)
|
20
|
+
from_country = 1 if from_country.nil? or (from_country.is_a? String and from_country.empty?)
|
21
|
+
|
20
22
|
from_country = self.class.determine_country_code(from_country) if from_country.size > 3
|
21
|
-
|
23
|
+
|
22
24
|
# Convert numeric country code to region id
|
23
25
|
from_country = Metadata.country_code_to_region[from_country.to_s][0] if from_country.is_a? Integer or from_country.to_i.nonzero?
|
24
|
-
|
26
|
+
|
25
27
|
from_metadata = Metadata.for_region(from_country)
|
26
28
|
raise "Could not find valid metadata for from_country" unless from_metadata
|
27
|
-
|
29
|
+
|
28
30
|
if from_country == Metadata.country_code_to_region[country_code][0]
|
29
31
|
# If we're calling within the same country, just prepend the national number with the national prefix
|
30
32
|
"#{leading_zero}#{metadata[:national_prefix]}#{national_number}"
|
@@ -33,47 +35,47 @@ module AsDialedFrom
|
|
33
35
|
"#{self.class.exit_code(from_metadata[:international_prefix])}#{country_code}#{leading_zero}#{national_number}"
|
34
36
|
end
|
35
37
|
end
|
36
|
-
|
38
|
+
|
37
39
|
def country_code
|
38
40
|
@country_code ||= self.class.determine_country_code(@number)
|
39
41
|
end
|
40
|
-
|
42
|
+
|
41
43
|
def national_number
|
42
44
|
@number.gsub /^(\+)?(#{country_code})/, ""
|
43
45
|
end
|
44
|
-
|
46
|
+
|
45
47
|
def leading_zero
|
46
48
|
"0" if metadata[:leading_zero_possible]
|
47
49
|
end
|
48
|
-
|
50
|
+
|
49
51
|
private
|
50
|
-
|
52
|
+
|
51
53
|
def self.determine_country_code(number)
|
52
54
|
number = number.to_s
|
53
|
-
|
55
|
+
|
54
56
|
number.delete! "+"
|
55
|
-
|
57
|
+
|
56
58
|
# Test the leading digits to find a valid country_code
|
57
59
|
# Country codes are not ambiguous (ex. 1 is valid, and there is no 1X or 1XX)
|
58
60
|
(1..3).each do |length|
|
59
61
|
possible_country_code = number[0,length]
|
60
|
-
|
62
|
+
|
61
63
|
return possible_country_code if Metadata.country_code_to_region[possible_country_code]
|
62
64
|
end
|
63
|
-
|
65
|
+
|
64
66
|
raise "No valid country code was present"
|
65
67
|
end
|
66
|
-
|
68
|
+
|
67
69
|
def self.exit_code(international_prefix)
|
68
70
|
international_prefix.delete("[]").match international_prefix
|
69
71
|
end
|
70
|
-
|
72
|
+
|
71
73
|
def metadata
|
72
74
|
@metadata ||= Metadata.for_region(Metadata.country_code_to_region[country_code][0])
|
73
75
|
raise "Could not find valid metadata for number" unless @metadata
|
74
76
|
@metadata
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
end
|
78
|
-
|
80
|
+
|
79
81
|
end
|
data/tasks/as_dialed_from.rake
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'test_helper'
|
4
4
|
|
5
5
|
class MetadataTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
should "load US metadata" do
|
8
8
|
metadata = AsDialedFrom::Metadata.for_region "US"
|
9
9
|
assert_equal "1", metadata[:country_code]
|
10
10
|
assert_equal "011", metadata[:international_prefix]
|
11
11
|
assert_equal "1", metadata[:national_prefix]
|
12
12
|
end
|
13
|
-
|
14
|
-
|
13
|
+
|
14
|
+
should "load MX metadata" do
|
15
15
|
metadata = AsDialedFrom::Metadata.for_region "MX"
|
16
16
|
assert_equal "52", metadata[:country_code]
|
17
17
|
assert_equal "0[09]", metadata[:international_prefix]
|
18
18
|
assert_equal "01", metadata[:national_prefix]
|
19
19
|
end
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
should "under_score camelCased words" do
|
22
22
|
assert_equal "one_two_three", AsDialedFrom::Metadata.underscore("oneTwoThree")
|
23
23
|
assert_equal "one_two_three", AsDialedFrom::Metadata.underscore("OneTwoThree")
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class NumberTest < Test::Unit::TestCase
|
4
6
|
|
5
|
-
class Number < Test::Unit::TestCase
|
6
|
-
|
7
7
|
ALPHA_NUMERIC_NUMBER = "+180074935247"
|
8
8
|
AR_MOBILE = "+5491187654321"
|
9
9
|
AR_NUMBER = "+541187654321"
|
@@ -28,49 +28,49 @@ class Number < Test::Unit::TestCase
|
|
28
28
|
US_LOCAL_NUMBER = "+12530000"
|
29
29
|
US_SHORT_BY_ONE_NUMBER = "+1650253000"
|
30
30
|
US_TOLLFREE = "+18002530000"
|
31
|
-
|
32
|
-
|
31
|
+
|
32
|
+
should "should require an argument" do
|
33
33
|
assert_raise(ArgumentError) { AsDialedFrom::Number.new }
|
34
34
|
end
|
35
|
-
|
36
|
-
|
35
|
+
|
36
|
+
should "should instantiate with a valid phone number" do
|
37
37
|
assert AsDialedFrom::Number.new US_NUMBER
|
38
38
|
end
|
39
|
-
|
40
|
-
|
39
|
+
|
40
|
+
should "should determine country code from string" do
|
41
41
|
assert_equal "1", AsDialedFrom::Number.new(US_NUMBER ).country_code
|
42
42
|
assert_equal "52", AsDialedFrom::Number.new(MX_NUMBER1).country_code
|
43
43
|
assert_equal "39", AsDialedFrom::Number.new(IT_NUMBER ).country_code
|
44
44
|
end
|
45
|
-
|
46
|
-
|
47
|
-
assert_raise(RuntimeError) { AsDialedFrom::Number.new "+9991234567890" }
|
45
|
+
|
46
|
+
should "should raise an error if no valid country code was found" do
|
47
|
+
assert_raise(RuntimeError) { AsDialedFrom::Number.new "+9991234567890" }
|
48
48
|
end
|
49
|
-
|
50
|
-
|
49
|
+
|
50
|
+
should "should return national number" do
|
51
51
|
assert_equal "6502530000", AsDialedFrom::Number.new(US_NUMBER).send(:national_number)
|
52
52
|
end
|
53
|
-
|
54
|
-
|
53
|
+
|
54
|
+
should "should return a number to dial using as_dialed_from" do
|
55
55
|
# Intra-country calls
|
56
56
|
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("US")
|
57
57
|
assert_equal "013312345678", AsDialedFrom::Number.new(MX_NUMBER1).as_dialed_from("MX")
|
58
|
-
|
58
|
+
|
59
59
|
# MX cell numbers
|
60
60
|
assert_equal "0112345678900", AsDialedFrom::Number.new(MX_MOBILE1).as_dialed_from("MX")
|
61
61
|
assert_equal "0115212345678900", AsDialedFrom::Number.new(MX_MOBILE1).as_dialed_from("US")
|
62
|
-
|
62
|
+
|
63
63
|
# US <-> MX
|
64
64
|
assert_equal "0016502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("MX")
|
65
65
|
assert_equal "011523312345678", AsDialedFrom::Number.new(MX_NUMBER1).as_dialed_from("US")
|
66
|
-
|
66
|
+
|
67
67
|
assert_equal "0019002530000", AsDialedFrom::Number.new(US_PREMIUM).as_dialed_from("DE")
|
68
68
|
# assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("BS")
|
69
69
|
assert_equal "0016502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("PL")
|
70
70
|
assert_equal "8~1016502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("RU")
|
71
71
|
assert_equal "011447912345678", AsDialedFrom::Number.new(GB_MOBILE).as_dialed_from("US")
|
72
72
|
assert_equal "00491234", AsDialedFrom::Number.new(DE_SHORT_NUMBER).as_dialed_from("GB")
|
73
|
-
|
73
|
+
|
74
74
|
# assert_equal "1234", AsDialedFrom::Number.new(DE_SHORT_NUMBER).as_dialed_from("DE")
|
75
75
|
assert_equal "011390236618300", AsDialedFrom::Number.new(IT_NUMBER).as_dialed_from("US")
|
76
76
|
assert_equal "0236618300", AsDialedFrom::Number.new(IT_NUMBER).as_dialed_from("IT")
|
@@ -78,18 +78,26 @@ class Number < Test::Unit::TestCase
|
|
78
78
|
assert_equal "65218000", AsDialedFrom::Number.new(SG_NUMBER).as_dialed_from("SG")
|
79
79
|
assert_equal "0115491187654321", AsDialedFrom::Number.new(AR_MOBILE).as_dialed_from("US")
|
80
80
|
end
|
81
|
-
|
82
|
-
|
81
|
+
|
82
|
+
should "as_dialed_from should accept a country code string as input" do
|
83
83
|
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("1")
|
84
84
|
end
|
85
|
-
|
86
|
-
|
85
|
+
|
86
|
+
should "as_dialed_from should accept a country code integer as input" do
|
87
87
|
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from(1)
|
88
88
|
end
|
89
|
-
|
90
|
-
|
89
|
+
|
90
|
+
should "as_dialed_from should accept a caller id number as input" do
|
91
91
|
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from(US_NUMBER)
|
92
92
|
assert_equal "0016502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from(MX_NUMBER1)
|
93
93
|
end
|
94
94
|
|
95
|
+
should "as_dialed_from should accept nil as input" do
|
96
|
+
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from(nil)
|
97
|
+
end
|
98
|
+
|
99
|
+
should "as_dialed_from should accept an empty string as input" do
|
100
|
+
assert_equal "16502530000", AsDialedFrom::Number.new(US_NUMBER).as_dialed_from("")
|
101
|
+
end
|
102
|
+
|
95
103
|
end
|
data/test/as_dialed_from_test.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'test_helper'
|
4
4
|
|
5
5
|
class AsDialedFromTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
should "prototype string with as_dialed_from method" do
|
8
8
|
assert_equal "12155551212", "+12155551212".as_dialed_from("US")
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,145 +1,102 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: as_dialed_from
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 2
|
10
|
-
version: 0.2.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Justin Campbell
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
type: :development
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2012-01-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: guard-test
|
16
|
+
requirement: &70120542680220 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
name: xml-simple
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
prerelease: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
37
22
|
type: :development
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
name: test-unit
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
23
|
prerelease: false
|
51
|
-
|
52
|
-
|
24
|
+
version_requirements: *70120542680220
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: shoulda
|
27
|
+
requirement: &70120542679720 !ruby/object:Gem::Requirement
|
53
28
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
61
|
-
name: guard-test
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
prerelease: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
65
33
|
type: :development
|
66
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
75
|
-
name: rb-fsevent
|
76
|
-
version_requirements: *id004
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
34
|
prerelease: false
|
79
|
-
|
80
|
-
|
35
|
+
version_requirements: *70120542679720
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: test-unit
|
38
|
+
requirement: &70120542679180 !ruby/object:Gem::Requirement
|
81
39
|
none: false
|
82
|
-
requirements:
|
83
|
-
- -
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
|
86
|
-
segments:
|
87
|
-
- 0
|
88
|
-
version: "0"
|
89
|
-
name: growl
|
90
|
-
version_requirements: *id005
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
prerelease: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
93
44
|
type: :development
|
94
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
hash: 3
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
version: "0"
|
103
|
-
name: rcov
|
104
|
-
version_requirements: *id006
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
45
|
prerelease: false
|
46
|
+
version_requirements: *70120542679180
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: xml-simple
|
49
|
+
requirement: &70120542678740 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
107
55
|
type: :development
|
108
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70120542678740
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: simplecov
|
60
|
+
requirement: &70120542678260 !ruby/object:Gem::Requirement
|
109
61
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
|
115
|
-
- 0
|
116
|
-
version: "0"
|
117
|
-
name: bundler
|
118
|
-
version_requirements: *id007
|
119
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
120
67
|
prerelease: false
|
68
|
+
version_requirements: *70120542678260
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: growl
|
71
|
+
requirement: &70120542677660 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
121
77
|
type: :development
|
122
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70120542677660
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rb-fsevent
|
82
|
+
requirement: &70120542677020 !ruby/object:Gem::Requirement
|
123
83
|
none: false
|
124
|
-
requirements:
|
125
|
-
- -
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70120542677020
|
91
|
+
description: Figure out how a number should be dialed from another country. A fork
|
92
|
+
of a port of Google's libphonenumber.
|
93
|
+
email:
|
94
|
+
- jcampbell@justincampbell.me
|
135
95
|
executables: []
|
136
|
-
|
137
96
|
extensions: []
|
138
|
-
|
139
|
-
|
140
|
-
-
|
141
|
-
- README.md
|
142
|
-
files:
|
97
|
+
extra_rdoc_files: []
|
98
|
+
files:
|
99
|
+
- .gitignore
|
143
100
|
- .rvmrc
|
144
101
|
- .travis.yml
|
145
102
|
- Gemfile
|
@@ -152,6 +109,7 @@ files:
|
|
152
109
|
- lib/as_dialed_from.rb
|
153
110
|
- lib/as_dialed_from/metadata.rb
|
154
111
|
- lib/as_dialed_from/number.rb
|
112
|
+
- lib/as_dialed_from/version.rb
|
155
113
|
- resources/PhoneNumberMetaData.xml
|
156
114
|
- resources/country_codes.yml
|
157
115
|
- resources/territories/.gitkeep
|
@@ -400,39 +358,32 @@ files:
|
|
400
358
|
- test/as_dialed_from/number_test.rb
|
401
359
|
- test/as_dialed_from_test.rb
|
402
360
|
- test/test_helper.rb
|
403
|
-
has_rdoc: true
|
404
361
|
homepage: http://github.com/Movitas/as_dialed_from
|
405
|
-
licenses:
|
406
|
-
- Apache
|
362
|
+
licenses: []
|
407
363
|
post_install_message:
|
408
364
|
rdoc_options: []
|
409
|
-
|
410
|
-
require_paths:
|
365
|
+
require_paths:
|
411
366
|
- lib
|
412
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
367
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
413
368
|
none: false
|
414
|
-
requirements:
|
415
|
-
- -
|
416
|
-
- !ruby/object:Gem::Version
|
417
|
-
|
418
|
-
|
419
|
-
- 0
|
420
|
-
version: "0"
|
421
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
369
|
+
requirements:
|
370
|
+
- - ! '>='
|
371
|
+
- !ruby/object:Gem::Version
|
372
|
+
version: '0'
|
373
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
422
374
|
none: false
|
423
|
-
requirements:
|
424
|
-
- -
|
425
|
-
- !ruby/object:Gem::Version
|
426
|
-
|
427
|
-
segments:
|
428
|
-
- 0
|
429
|
-
version: "0"
|
375
|
+
requirements:
|
376
|
+
- - ! '>='
|
377
|
+
- !ruby/object:Gem::Version
|
378
|
+
version: '0'
|
430
379
|
requirements: []
|
431
|
-
|
432
|
-
|
433
|
-
rubygems_version: 1.6.2
|
380
|
+
rubyforge_project: as_dialed_from
|
381
|
+
rubygems_version: 1.8.10
|
434
382
|
signing_key:
|
435
383
|
specification_version: 3
|
436
384
|
summary: Figure out how a number should be dialed from another country
|
437
|
-
test_files:
|
438
|
-
|
385
|
+
test_files:
|
386
|
+
- test/as_dialed_from/metadata_test.rb
|
387
|
+
- test/as_dialed_from/number_test.rb
|
388
|
+
- test/as_dialed_from_test.rb
|
389
|
+
- test/test_helper.rb
|