dialable 0.6.3 → 1.0.0
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gitignore +2 -0
- data/.travis.yml +8 -13
- data/Gemfile +0 -2
- data/Gemfile.lock +77 -18
- data/Guardfile +57 -0
- data/README.md +55 -0
- data/Rakefile +13 -1
- data/certs/chorn.pem +55 -0
- data/data/dialable/nanpa.yaml +919 -398
- data/dialable.gemspec +29 -18
- data/lib/dialable.rb +52 -123
- data/lib/dialable/area_codes.rb +13 -0
- data/lib/dialable/parsers.rb +19 -0
- data/lib/dialable/patterns.rb +15 -0
- data/lib/dialable/service_codes.rb +17 -0
- data/lib/dialable/version.rb +1 -1
- data/spec/dialable_spec.rb +74 -35
- data/spec/spec_helper.rb +2 -4
- data/support/make_yaml_nanpa.rb +123 -23
- metadata +147 -31
- metadata.gz.sig +0 -0
- data/README.rdoc +0 -45
- data/TODO +0 -2
- data/data/nanpa.yaml +0 -1404
data/spec/spec_helper.rb
CHANGED
data/support/make_yaml_nanpa.rb
CHANGED
@@ -1,34 +1,134 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require "yaml"
|
3
|
+
require 'csv'
|
4
|
+
require 'yaml'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
system('mdb-export AllNPAs.mdb "`mdb-tables -1 AllNPAs.mdb`" > AllNPAs.csv')
|
6
|
+
# Headers from http://nanpa.com/area_codes/AreaCodeDatabaseDefinitions.xls
|
7
|
+
headers = [:npa, :type_of_code, :assignable, :explanation, :reserved, :assigned, :asgt_date, :use, :location, :country, :in_service, :in_svc_date, :status, :pl, :blank, :overlay, :overlay_complex, :parent, :service, :time_zone, :blank, :map, :is_npa_in_jeopardy, :is_relief_planning_in_progress, :home_npa_local_calls, :home_npa_toll_calls, :foreign_npa_local_calls, :foreign_npa_toll_calls, :perm_hnpa_local, :perm_hnpa_toll, :perm_fnpa_local, :dp_notes]
|
10
8
|
|
11
|
-
|
12
|
-
h = all[0]
|
9
|
+
nanpa = { :created => Time.now }
|
13
10
|
|
14
|
-
|
15
|
-
location = h.index("Location")
|
16
|
-
country = h.index("Country")
|
17
|
-
tz = h.index("Time Zone")
|
18
|
-
npa = h.index("NPA")
|
11
|
+
curl = `curl -sL http://nanpa.com/nanp1/npa_report.csv`
|
19
12
|
|
20
|
-
|
13
|
+
CSV.parse(curl, :headers => headers) do |row|
|
14
|
+
next unless row.fetch(:npa) =~ /\A\d+\Z/ && row.fetch(:in_service).to_s =~ /y/i
|
15
|
+
npa = row[:npa].to_i
|
16
|
+
country = row.fetch(:country)
|
17
|
+
location = row.fetch(:location) { 'US' }
|
18
|
+
location = 'US' if location =~ /NANP Area/i || location =~ /\A#{country}\Z/i
|
21
19
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
raw_timezones = row.fetch(:time_zone) { '' }.to_s.gsub(/[\(\)]/, '')
|
21
|
+
timezones = []
|
22
|
+
if raw_timezones =~ /UTC([\+\-]\d+)/
|
23
|
+
timezones << case Regexp.last_match(1).to_i
|
24
|
+
when 10
|
25
|
+
'Pacific/Guam'
|
26
|
+
when -10
|
27
|
+
'US/Hawaii'
|
28
|
+
when -9
|
29
|
+
'US/Alaska'
|
30
|
+
end
|
31
|
+
elsif country && country.upcase == "CANADA"
|
32
|
+
if raw_timezones.split(//).any?
|
33
|
+
timezones << raw_timezones.split(//).collect do |timezone|
|
34
|
+
case timezone
|
35
|
+
when 'E'
|
36
|
+
"Canada/Eastern"
|
37
|
+
when 'C'
|
38
|
+
"Canada/Central"
|
39
|
+
when 'M'
|
40
|
+
"Canada/Mountain"
|
41
|
+
when 'P'
|
42
|
+
"Canada/Pacific"
|
43
|
+
when 'N'
|
44
|
+
"Canada/Newfoundland"
|
45
|
+
when 'A'
|
46
|
+
"Canada/Atlantic"
|
47
|
+
else
|
48
|
+
'America/None'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
else
|
52
|
+
timezones << case location
|
53
|
+
when 'ONTARIO'
|
54
|
+
"Canada/Eastern"
|
55
|
+
when 'MANITOBA'
|
56
|
+
"Canada/Central"
|
57
|
+
when 'QUEBEC'
|
58
|
+
"Canada/Eastern"
|
59
|
+
else
|
60
|
+
'America/None'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
elsif country && country.upcase == "US"
|
64
|
+
timezones << raw_timezones.split(//).collect do |timezone|
|
65
|
+
case timezone
|
66
|
+
when 'E'
|
67
|
+
"US/Eastern"
|
68
|
+
when 'C'
|
69
|
+
"US/Central"
|
70
|
+
when 'M'
|
71
|
+
"US/Mountain"
|
72
|
+
when 'P'
|
73
|
+
"US/Pacific"
|
74
|
+
else
|
75
|
+
case location
|
76
|
+
when 'USVI'
|
77
|
+
"America/Virgin"
|
78
|
+
when 'PUERTO RICO'
|
79
|
+
"America/Puerto_Rico"
|
80
|
+
when 'AS'
|
81
|
+
nil
|
82
|
+
else
|
83
|
+
'America/None'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
elsif country
|
88
|
+
timezones << case country.upcase
|
89
|
+
when "BAHAMAS"
|
90
|
+
"America/Virgin"
|
91
|
+
when "BARBADOS"
|
92
|
+
"America/Barbados"
|
93
|
+
when "ANGUILLA"
|
94
|
+
"America/Anguilla"
|
95
|
+
when "ANTIGUA/BARBUDA"
|
96
|
+
"America/Antigua"
|
97
|
+
when "BERMUDA"
|
98
|
+
"Atlantic/Bermuda"
|
99
|
+
when "BRITISH VIRGIN ISLANDS"
|
100
|
+
"America/Virgin"
|
101
|
+
when "CAYMAN ISLANDS"
|
102
|
+
"America/Cayman"
|
103
|
+
when "GRENADA"
|
104
|
+
"America/Grenada"
|
105
|
+
when "TURKS & CAICOS ISLANDS"
|
106
|
+
"America/Virgin"
|
107
|
+
when "MONTSERRAT"
|
108
|
+
"America/Montserrat"
|
109
|
+
when "SINT MAARTEN"
|
110
|
+
"America/Virgin"
|
111
|
+
when "ST. LUCIA"
|
112
|
+
"America/St_Lucia"
|
113
|
+
when "DOMINICA"
|
114
|
+
"America/Dominica"
|
115
|
+
when "ST. VINCENT & GRENADINES"
|
116
|
+
"America/Virgin"
|
117
|
+
when "DOMINICAN REPUBLIC"
|
118
|
+
"America/Virgin"
|
119
|
+
when "TRINIDAD AND TOBAGO"
|
120
|
+
"America/Virgin"
|
121
|
+
when "ST. KITTS AND NEVIS"
|
122
|
+
"America/Virgin"
|
123
|
+
when "JAMAICA"
|
124
|
+
"America/Jamaica"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
nanpa[npa] = { :country => country }
|
129
|
+
nanpa[npa][:timezones] = timezones.flatten.compact if timezones && timezones.flatten.compact.size > 0
|
130
|
+
nanpa[npa][:location] = location if location
|
29
131
|
end
|
30
132
|
|
31
133
|
puts nanpa.to_yaml
|
32
134
|
|
33
|
-
FileUtils.rm ["AllNPAs.zip", "AllNPAs.mdb", "AllNPAs.csv"]
|
34
|
-
|
metadata
CHANGED
@@ -1,71 +1,183 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dialable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Chris Horn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
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
|
65
|
+
bHE=
|
66
|
+
-----END CERTIFICATE-----
|
67
|
+
date: 2015-12-08 00:00:00.000000000 Z
|
12
68
|
dependencies:
|
13
69
|
- !ruby/object:Gem::Dependency
|
14
70
|
name: tzinfo
|
15
71
|
requirement: !ruby/object:Gem::Requirement
|
16
72
|
requirements:
|
17
|
-
- -
|
73
|
+
- - "~>"
|
18
74
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
75
|
+
version: '1.0'
|
20
76
|
type: :runtime
|
21
77
|
prerelease: false
|
22
78
|
version_requirements: !ruby/object:Gem::Requirement
|
23
79
|
requirements:
|
24
|
-
- -
|
80
|
+
- - "~>"
|
25
81
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
82
|
+
version: '1.0'
|
27
83
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
84
|
+
name: bundler
|
29
85
|
requirement: !ruby/object:Gem::Requirement
|
30
86
|
requirements:
|
31
|
-
- -
|
87
|
+
- - "~>"
|
32
88
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
89
|
+
version: '1.6'
|
34
90
|
type: :development
|
35
91
|
prerelease: false
|
36
92
|
version_requirements: !ruby/object:Gem::Requirement
|
37
93
|
requirements:
|
38
|
-
- -
|
94
|
+
- - "~>"
|
39
95
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
96
|
+
version: '1.6'
|
41
97
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
98
|
+
name: codeclimate-test-reporter
|
43
99
|
requirement: !ruby/object:Gem::Requirement
|
44
100
|
requirements:
|
45
|
-
- -
|
101
|
+
- - "~>"
|
46
102
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
103
|
+
version: '0.4'
|
48
104
|
type: :development
|
49
105
|
prerelease: false
|
50
106
|
version_requirements: !ruby/object:Gem::Requirement
|
51
107
|
requirements:
|
52
|
-
- -
|
108
|
+
- - "~>"
|
53
109
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
110
|
+
version: '0.4'
|
55
111
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
112
|
+
name: guard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.12'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.12'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: guard-bundler
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.1'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.1'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.5'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.5'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '10.4'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '10.4'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec
|
57
169
|
requirement: !ruby/object:Gem::Requirement
|
58
170
|
requirements:
|
59
|
-
- -
|
171
|
+
- - "~>"
|
60
172
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
173
|
+
version: '3.3'
|
62
174
|
type: :development
|
63
175
|
prerelease: false
|
64
176
|
version_requirements: !ruby/object:Gem::Requirement
|
65
177
|
requirements:
|
66
|
-
- -
|
178
|
+
- - "~>"
|
67
179
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
180
|
+
version: '3.3'
|
69
181
|
description: A gem that provides parsing and output of phone numbers according to
|
70
182
|
NANPA (North American Numbering Plan Administration) standards. If possible, time
|
71
183
|
zones are populated by abbreviation as well as offset relative to the local timezone.
|
@@ -75,18 +187,22 @@ executables: []
|
|
75
187
|
extensions: []
|
76
188
|
extra_rdoc_files: []
|
77
189
|
files:
|
78
|
-
- .gitignore
|
79
|
-
- .travis.yml
|
190
|
+
- ".gitignore"
|
191
|
+
- ".travis.yml"
|
80
192
|
- Gemfile
|
81
193
|
- Gemfile.lock
|
194
|
+
- Guardfile
|
82
195
|
- LICENSE
|
83
|
-
- README.
|
196
|
+
- README.md
|
84
197
|
- Rakefile
|
85
|
-
-
|
198
|
+
- certs/chorn.pem
|
86
199
|
- data/dialable/nanpa.yaml
|
87
|
-
- data/nanpa.yaml
|
88
200
|
- dialable.gemspec
|
89
201
|
- lib/dialable.rb
|
202
|
+
- lib/dialable/area_codes.rb
|
203
|
+
- lib/dialable/parsers.rb
|
204
|
+
- lib/dialable/patterns.rb
|
205
|
+
- lib/dialable/service_codes.rb
|
90
206
|
- lib/dialable/version.rb
|
91
207
|
- spec/dialable_spec.rb
|
92
208
|
- spec/spec.opts
|
@@ -103,17 +219,17 @@ require_paths:
|
|
103
219
|
- lib
|
104
220
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
221
|
requirements:
|
106
|
-
- -
|
222
|
+
- - ">="
|
107
223
|
- !ruby/object:Gem::Version
|
108
224
|
version: 1.9.0
|
109
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
226
|
requirements:
|
111
|
-
- -
|
227
|
+
- - ">="
|
112
228
|
- !ruby/object:Gem::Version
|
113
229
|
version: '0'
|
114
230
|
requirements: []
|
115
231
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.1
|
232
|
+
rubygems_version: 2.4.5.1
|
117
233
|
signing_key:
|
118
234
|
specification_version: 4
|
119
235
|
summary: Provides parsing and output of phone numbers according to NANPA standards.
|
metadata.gz.sig
ADDED
Binary file
|
data/README.rdoc
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
== dialable
|
2
|
-
{<img src="https://badge.fury.io/rb/dialable.png" alt="Gem Version" />}[http://badge.fury.io/rb/dialable]
|
3
|
-
{<img src="https://travis-ci.org/chorn/dialable.png" />}[https://travis-ci.org/chorn/dialable]
|
4
|
-
|
5
|
-
A gem that provides parsing and output of phone numbers according to NANPA standards.
|
6
|
-
|
7
|
-
|
8
|
-
Phone numbers are not a big deal if you can validate the input at the
|
9
|
-
time you've got a human right there. My enterprise tends not to have
|
10
|
-
that ability, as we receive large files from clients with little or no
|
11
|
-
validation done. Rather than abandon #s which don't validate, I wrote
|
12
|
-
this to parse and normalize a string into a standard NANP phone
|
13
|
-
number, possibly including an extension.
|
14
|
-
|
15
|
-
References: NANPA: North American Numbering Plan Administration http://nanpa.com/
|
16
|
-
|
17
|
-
The YAML file with the valid area codes and easily recognizable codes
|
18
|
-
(like 911) can get out of date. To update your own copy, run:
|
19
|
-
|
20
|
-
support/make_yaml_nanpa.rb > data/nanpa.yaml
|
21
|
-
|
22
|
-
|
23
|
-
require "dialable"
|
24
|
-
|
25
|
-
pn = Dialable::NANP.parse("+1(800)555-1212 ext 1234")
|
26
|
-
|
27
|
-
>> puts pn.to_s // Pretty output
|
28
|
-
|
29
|
-
800-555-1212 x1234
|
30
|
-
|
31
|
-
>> puts pn.to_digits // Address book friendly
|
32
|
-
|
33
|
-
8005551212 x1234
|
34
|
-
|
35
|
-
>> puts pn.to_dialable // PBX friendly
|
36
|
-
|
37
|
-
8005551212
|
38
|
-
|
39
|
-
>> puts pn.extension
|
40
|
-
|
41
|
-
1234
|
42
|
-
|
43
|
-
Also, pn.timezones and pn.relative_timezones should do the right thing.
|
44
|
-
|
45
|
-
-chorn
|