area_code_validator 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3451881fd13882c503bb07c7b00396d76ccb2e01
4
+ data.tar.gz: 9af20f49875b7e040dffc8d5c58694246aa73fd6
5
+ SHA512:
6
+ metadata.gz: 990c1e377757babb08366dd14c7ff1bce26900456cd7aff2915871a2541e8ebdd0966f741cf35be4ac08c82b12c5070a1db11f71195a2ffc0a24be9e6d8e6dcb
7
+ data.tar.gz: f0f36fc8147beac1be835bfc5c361f44cea36cf65f174ac0b04229451492372270d31768e36a928f4c16bbd03166aedd2d6a38ef396d9afaf6f5999f4d72ef55
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in area_code_validator.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Andrew Medeiros
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Area Code Validator
2
+
3
+ Area Code Validator is a small gem that validates a phone numbers area code to a state.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'area_code_validator'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install area_code_validator
18
+
19
+ ## Usage
20
+
21
+ State can be either abbreviation or full state name
22
+
23
+ ```ruby
24
+ AreaCodeValidator.invalid?('123', 'FL') => true
25
+ AreaCodeValidator.invalid?('813', 'FL') => false
26
+ ```
27
+
28
+ ## Contributing
29
+
30
+ 1. Fork it
31
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
32
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
33
+ 4. Push to the branch (`git push origin my-new-feature`)
34
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |task|
5
+ task.libs << 'test'
6
+ end
7
+
8
+ task :default => [:test]
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'area_code_validator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'area_code_validator'
8
+ spec.version = AreaCodeValidator::VERSION
9
+ spec.authors = ['Andrew Medeiros']
10
+ spec.email = ['amedeiros0920@gmail.com']
11
+ spec.description = %q{AreaCodeValidator is a small gem that validates a phone numbers area code to a state.}
12
+ spec.summary = %q{AreaCodeValidator is a small gem that validates a phone numbers area code to a state.}
13
+ spec.homepage = ''
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'shoulda'
24
+ end
@@ -0,0 +1,3 @@
1
+ module AreaCodeValidator
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,41 @@
1
+ require 'area_code_validator/version'
2
+ require 'config/config'
3
+ # TODO: create validator
4
+ # require 'extensions/area_code_invalid_validator' if defined?(Rails)
5
+
6
+ module AreaCodeValidator
7
+
8
+ def self.invalid?(area_code, area_code_state)
9
+ # Stop here and return true if either area_code or area_code_state are nil
10
+ return true if area_code.nil? or area_code_state.nil?
11
+
12
+ # Upcase and scrub the area_code and area_code_state
13
+ area_code = area_code.to_s.upcase.gsub(/(\W|[A-Z]|_)*/, '')
14
+ area_code_state = area_code_state.to_s.upcase.gsub(/(\W|\d|_)*/, '')
15
+
16
+ # Stop here and return true if the state does not exist
17
+ return true if !Config::STATES.include?(area_code_state) and !Config::STATES.values.include?(area_code_state)
18
+
19
+ # Find the state abbreviation key we need to access our hash of arrays of area codes.
20
+ key = get_abbreviation_key(area_code_state)
21
+
22
+ # If the area code is in our list return false else return true
23
+ return false if Config::AREA_CODES[key].include?(area_code)
24
+ true
25
+ end
26
+
27
+
28
+ # This is moved out into a method to make unit testing easier.
29
+ def self.get_abbreviation_key(area_code_state)
30
+ # If the area_code_state is greater than 2 then it is a full state name and we need to find the corresponding abbreviation for that state.
31
+ key = ''
32
+ if area_code_state.length > 2
33
+ Config::STATES.each do |k, v|
34
+ key = k if v == area_code_state
35
+ end
36
+ else
37
+ key = area_code_state # The area_code_state is already an abbreviated state
38
+ end
39
+ key
40
+ end
41
+ end
@@ -0,0 +1,115 @@
1
+ module AreaCodeValidator
2
+ class Config
3
+ # Constant frozen hash of states and abbreviations
4
+ STATES = {
5
+ 'AL' => 'ALABAMA',
6
+ 'AK' => 'ALASKA',
7
+ 'AZ' => 'ARIZONA',
8
+ 'AR' => 'ARKANSAS',
9
+ 'CA' => 'CALIFORNIA',
10
+ 'CO' => 'COLORADO',
11
+ 'CT' => 'CONNECTICUT',
12
+ 'DE' => 'DELAWARE',
13
+ 'DC' => 'DISTRICT OF COLUMBIA',
14
+ 'FL' => 'FLORIDA',
15
+ 'GA' => 'GEORGIA',
16
+ 'HI' => 'HAWAII',
17
+ 'ID' => 'IDAHO',
18
+ 'IL' => 'ILLINOIS',
19
+ 'IN' => 'INDIANA',
20
+ 'IA' => 'IOWA',
21
+ 'KS' => 'KANSAS',
22
+ 'KY' => 'KENTUCKY',
23
+ 'LA' => 'LOUISIANA',
24
+ 'ME' => 'MAINE',
25
+ 'MD' => 'MARYLAND',
26
+ 'MA' => 'MASSACHUSETTS',
27
+ 'MI' => 'MICHIGAN',
28
+ 'MN' => 'MINNESOTA',
29
+ 'MS' => 'MISSISSIPPI',
30
+ 'MO' => 'MISSOURI',
31
+ 'MT' => 'MONTANA',
32
+ 'NE' => 'NEBRASKA',
33
+ 'NV' => 'NEVADA',
34
+ 'NH' => 'NEW HAMPSHIRE',
35
+ 'NJ' => 'NEW JERSEY',
36
+ 'NY' => 'NEW YORK',
37
+ 'NM' => 'NEW MEXICO',
38
+ 'NC' => 'NORTH CAROLINA',
39
+ 'ND' => 'NORTH DAKOTA',
40
+ 'OH' => 'OHIO',
41
+ 'OK' => 'OKLAHOMA',
42
+ 'OR' => 'OREGON',
43
+ 'PA' => 'PENNSYLVANIA',
44
+ 'PR' => 'PUERTO RICO',
45
+ 'RI' => 'RHODE ISLAND',
46
+ 'SC' => 'SOUTH CAROLINA',
47
+ 'SD' => 'SOUTH DAKOTA',
48
+ 'TN' => 'TENNESSEE',
49
+ 'TX' => 'TEXAS',
50
+ 'UT' => 'UTAH',
51
+ 'VT' => 'VERMONT',
52
+ 'VI' => 'VIRGIN ISLANDS',
53
+ 'VA' => 'VIRGINIA',
54
+ 'WA' => 'WASHINGTON',
55
+ 'WV' => 'WEST VIRGINIA',
56
+ 'WI' => 'WISCONSIN',
57
+ 'WY' => 'WYOMING' }.freeze
58
+
59
+ # Hash of arrays of area codes. Say that ten times fast.
60
+ AREA_CODES = {
61
+ 'AL' => ['205', '251', '256', '334', '938'],
62
+ 'AK' => ['907'],
63
+ 'AZ' => ['480', '520', '602', '623', '928'],
64
+ 'AR' => ['479', '501', '870'],
65
+ 'CA' => ['209', '213', '310', '323', '408', '415', '424', '442', '510', '530', '559', '562', '619', '626', '650', '657', '661', '707', '714', '747', '760', '805', '818', '831', '858', '909', '916', '925', '949', '951'],
66
+ 'CO' => ['303', '719', '720', '970'],
67
+ 'CT' => ['203', '475', '860'],
68
+ 'DE' => ['302'],
69
+ 'DC' => ['202'],
70
+ 'FL' => ['239', '305', '321', '352', '386', '407', '561', '727', '754', '772', '786', '813', '850', '863', '904', '941', '954'],
71
+ 'GA' => ['229', '404', '470', '478', '678', '706', '762', '770', '912'],
72
+ 'HI' => ['808'],
73
+ 'ID' => ['208'],
74
+ 'IL' => ['217', '224', '309', '312', '331', '618', '630', '708', '773', '779', '815', '847', '872'],
75
+ 'IN' => ['219', '260', '317', '574', '765', '812'],
76
+ 'IA' => ['319', '515', '563', '641', '712'],
77
+ 'KS' => ['316', '620', '785', '913'],
78
+ 'KY' => ['270', '502', '606', '859'],
79
+ 'LA' => ['225', '318', '337', '504', '985'],
80
+ 'ME' => ['207'],
81
+ 'MD' => ['240', '301', '410', '443'],
82
+ 'MA' => ['339', '351', '413', '508', '617', '774', '781', '857', '978'],
83
+ 'MI' => ['231', '248', '269', '313', '517', '586', '616', '734', '810', '906', '947', '989'],
84
+ 'MN' => ['218', '320', '507', '612', '651', '763', '952'],
85
+ 'MS' => ['228', '601', '662', '769'],
86
+ 'MO' => ['314', '417', '573', '636', '660', '816'],
87
+ 'MT' => ['406'],
88
+ 'NE' => ['308', '402'],
89
+ 'NV' => ['702', '775'],
90
+ 'NH' => ['603'],
91
+ 'NJ' => ['201', '551', '609', '732', '848', '856', '862', '908', '973'],
92
+ 'NY' => ['212', '315', '347', '516', '518', '585', '607', '631', '646', '716', '718', '845', '914', '917', '929'],
93
+ 'NM' => ['505', '575'],
94
+ 'NC' => ['252', '336', '704', '828', '910', '919', '980'],
95
+ 'ND' => ['701'],
96
+ 'OH' => ['216', '234', '330', '419', '440', '513', '567', '614', '740', '937'],
97
+ 'OK' => ['405', '539', '580', '918'],
98
+ 'OR' => ['458', '503', '541', '971'],
99
+ 'PA' => ['215', '267', '412', '484', '570', '610', '717', '724', '814', '878'],
100
+ 'PR' => ['787', '939'],
101
+ 'RI' => ['401'],
102
+ 'SC' => ['803', '843', '864'],
103
+ 'SD' => ['605'],
104
+ 'TN' => ['423', '615', '731', '865', '901', '931'],
105
+ 'TX' => ['210', '214', '254', '281', '325', '361', '409', '430', '432', '469', '512', '682', '713', '806', '817', '830', '832', '903', '915', '936', '940', '956', '972', '979'],
106
+ 'UT' => ['385', '435', '801'],
107
+ 'VT' => ['802'],
108
+ 'VI' => ['340'],
109
+ 'VA' => ['276', '434', '540', '571', '703', '757', '804'],
110
+ 'WA' => ['206', '253', '360', '425', '509'],
111
+ 'WV' => ['304', '681'],
112
+ 'WI' => ['262', '414', '608', '715', '920'],
113
+ 'WY' => ['307'] }.freeze
114
+ end
115
+ end
@@ -0,0 +1,6 @@
1
+ class AreaCodeInvalidValidator < ActiveModel::Validator
2
+ def validate(record)
3
+ # TODO: Create validator
4
+ # stub for a active model validator
5
+ end
6
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ class AreaCodeValidatorTest < Test::Unit::TestCase
4
+ context AreaCodeValidator do
5
+ context '#invalid?' do
6
+
7
+ Helper::VALID_AREA_CODES.each do |state, area_codes_array|
8
+ area_codes_array.each_with_index do |area_code, index|
9
+ should "be a valid area code #{area_code} - #{state} index: #{index}" do
10
+ assert !AreaCodeValidator.invalid?(area_code, state), state.inspect + ' ' + area_code.inspect
11
+ end
12
+ end
13
+ end
14
+
15
+ Helper::VALID_AREA_CODES.each do |state, area_codes_array|
16
+ area_codes_array.each_with_index do |area_code, index|
17
+ should "not be a valid area_code #{area_code} - #{state} index: #{index}" do
18
+ assert AreaCodeValidator.invalid?(area_code + '123', state), state.inspect + ' ' + area_code + '123'
19
+ end
20
+ end
21
+ end
22
+
23
+ should 'return true for an undefined state abbreviation' do
24
+ invalid = AreaCodeValidator.invalid?('123', 'QQ')
25
+ assert invalid
26
+ end
27
+
28
+ should 'return true for an undefined full state name' do
29
+ invalid = AreaCodeValidator.invalid?('123', 'BadState')
30
+ assert invalid
31
+ end
32
+
33
+ should 'handle a state abbreviation with non-word characters' do
34
+ state = '12}3 F (** __)L @ 5674``' # FL
35
+ assert !AreaCodeValidator.invalid?(Helper::VALID_AREA_CODES['FL'].first, state)
36
+ end
37
+
38
+ should 'handle a full state name with non-word characters' do
39
+ state = '12_3 F (** )L o # R ^ I !!!! DA @ 907' # FLORIDA
40
+ assert !AreaCodeValidator.invalid?(Helper::VALID_AREA_CODES['FL'].first, state)
41
+ end
42
+
43
+ should 'handle a state area_code with non-word characters and word characters' do
44
+ area_code = 'F / @!!()_hd -=8 %$#1 ?.,;3' # 813
45
+ assert !AreaCodeValidator.invalid?(area_code, 'FL')
46
+ end
47
+
48
+ should 'return true for a nil area code' do
49
+ assert AreaCodeValidator.invalid?(area_code=nil, area_code_state='FL')
50
+ end
51
+
52
+ should 'return true for a nil area code state' do
53
+ assert AreaCodeValidator.invalid?(area_code='813', area_code_state=nil)
54
+ end
55
+ end
56
+
57
+ context '#get_abbreviation_key' do
58
+ AreaCodeValidator::Config::STATES.each do |state_abbreviation, state_name|
59
+ should "return the correct state abbreviation #{state_abbreviation}" do
60
+ assert_equal state_abbreviation, AreaCodeValidator.get_abbreviation_key(state_name)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,60 @@
1
+ require 'test/unit'
2
+ require 'area_code_validator'
3
+ require 'shoulda'
4
+
5
+ class Helper
6
+ VALID_AREA_CODES = {
7
+ 'AL' => ['205', '251', '256', '334', '938'],
8
+ 'AK' => ['907'],
9
+ 'AZ' => ['480', '520', '602', '623', '928'],
10
+ 'AR' => ['479', '501', '870'],
11
+ 'CA' => ['209', '213', '310', '323', '408', '415', '424', '442', '510', '530', '559', '562', '619', '626', '650', '657', '661', '707', '714', '747', '760', '805', '818', '831', '858', '909', '916', '925', '949', '951'],
12
+ 'CO' => ['303', '719', '720', '970'],
13
+ 'CT' => ['203', '475', '860'],
14
+ 'DE' => ['302'],
15
+ 'DC' => ['202'],
16
+ 'FL' => ['239', '305', '321', '352', '386', '407', '561', '727', '754', '772', '786', '813', '850', '863', '904', '941', '954'],
17
+ 'GA' => ['229', '404', '470', '478', '678', '706', '762', '770', '912'],
18
+ 'HI' => ['808'],
19
+ 'ID' => ['208'],
20
+ 'IL' => ['217', '224', '309', '312', '331', '618', '630', '708', '773', '779', '815', '847', '872'],
21
+ 'IN' => ['219', '260', '317', '574', '765', '812'],
22
+ 'IA' => ['319', '515', '563', '641', '712'],
23
+ 'KS' => ['316', '620', '785', '913'],
24
+ 'KY' => ['270', '502', '606', '859'],
25
+ 'LA' => ['225', '318', '337', '504', '985'],
26
+ 'ME' => ['207'],
27
+ 'MD' => ['240', '301', '410', '443'],
28
+ 'MA' => ['339', '351', '413', '508', '617', '774', '781', '857', '978'],
29
+ 'MI' => ['231', '248', '269', '313', '517', '586', '616', '734', '810', '906', '947', '989'],
30
+ 'MN' => ['218', '320', '507', '612', '651', '763', '952'],
31
+ 'MS' => ['228', '601', '662', '769'],
32
+ 'MO' => ['314', '417', '573', '636', '660', '816'],
33
+ 'MT' => ['406'],
34
+ 'NE' => ['308', '402'],
35
+ 'NV' => ['702', '775'],
36
+ 'NH' => ['603'],
37
+ 'NJ' => ['201', '551', '609', '732', '848', '856', '862', '908', '973'],
38
+ 'NY' => ['212', '315', '347', '516', '518', '585', '607', '631', '646', '716', '718', '845', '914', '917', '929'],
39
+ 'NM' => ['505', '575'],
40
+ 'NC' => ['252', '336', '704', '828', '910', '919', '980'],
41
+ 'ND' => ['701'],
42
+ 'OH' => ['216', '234', '330', '419', '440', '513', '567', '614', '740', '937'],
43
+ 'OK' => ['405', '539', '580', '918'],
44
+ 'OR' => ['458', '503', '541', '971'],
45
+ 'PA' => ['215', '267', '412', '484', '570', '610', '717', '724', '814', '878'],
46
+ 'PR' => ['787', '939'],
47
+ 'RI' => ['401'],
48
+ 'SC' => ['803', '843', '864'],
49
+ 'SD' => ['605'],
50
+ 'TN' => ['423', '615', '731', '865', '901', '931'],
51
+ 'TX' => ['210', '214', '254', '281', '325', '361', '409', '430', '432', '469', '512', '682', '713', '806', '817', '830', '832', '903', '915', '936', '940', '956', '972', '979'],
52
+ 'UT' => ['385', '435', '801'],
53
+ 'VT' => ['802'],
54
+ 'VI' => ['340'],
55
+ 'VA' => ['276', '434', '540', '571', '703', '757', '804'],
56
+ 'WA' => ['206', '253', '360', '425', '509'],
57
+ 'WV' => ['304', '681'],
58
+ 'WI' => ['262', '414', '608', '715', '920'],
59
+ 'WY' => ['307'] }
60
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: area_code_validator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Medeiros
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: shoulda
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: AreaCodeValidator is a small gem that validates a phone numbers area
56
+ code to a state.
57
+ email:
58
+ - amedeiros0920@gmail.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - area_code_validator.gemspec
69
+ - lib/area_code_validator.rb
70
+ - lib/area_code_validator/version.rb
71
+ - lib/config/config.rb
72
+ - lib/extensions/area_code_invalid_validator.rb
73
+ - test/test_area_code_validator.rb
74
+ - test/test_helper.rb
75
+ homepage: ''
76
+ licenses:
77
+ - MIT
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 2.0.3
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: AreaCodeValidator is a small gem that validates a phone numbers area code
99
+ to a state.
100
+ test_files:
101
+ - test/test_area_code_validator.rb
102
+ - test/test_helper.rb