area_code_validator 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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