united_states 1.1.1 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7531af5d720089625de67dd1edf5b7021311b226
4
- data.tar.gz: b7dc7fb19fa7609d05e8e5381d6ba005170862fe
3
+ metadata.gz: 7a3034a514f527ccbdfb782831ecdb9533d6fe0b
4
+ data.tar.gz: 5b7138644b59f2744b132d0f4d1cfc9b0b2869b5
5
5
  SHA512:
6
- metadata.gz: 6ff7b6b550c343b2096f949d51fcba2c7bb5033bc2b66920d0fb043eb88d7406af0f73da6b402da2d14fcd972966d97b223d95a4a8339d7df521305f89725aa7
7
- data.tar.gz: fd2f499ed1c80aeb244e1f242decc77386760b6a93ae0baa0989a2cafe5e600de4be28335052c085ec1af033f18f0db6fdb44226328d9c2c4c6059a4e4c7308c
6
+ metadata.gz: d55886c4f01615d253c2bea4376d7b6193aaa5f9a73d7fd7d885e707b7b684d6a8747705c515c34ad7f1ce2dc34464508aab75f5cf76e2c8aeda676a5cd3c367
7
+ data.tar.gz: 49982128640592902bcaad9ec2cf9901af92da149010d0c9330b90982841d65614a0ae85ba2a7b331e9cc7209a28d78e51b6c7d0f202b3c92614acb5daa5cb77
data/.rubocop.yml CHANGED
@@ -6,6 +6,7 @@ require: rubocop-rspec
6
6
  AllCops:
7
7
  Exclude:
8
8
  - rubygems*/
9
+ - united_states.gemspec
9
10
  TargetRubyVersion: 2.1
10
11
 
11
12
  Documentation:
data/CHANGELOG.md CHANGED
@@ -10,6 +10,22 @@ __Change Groups__:
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [1.2.0] - 2017-02-26
14
+ ### Added
15
+ - `UnitedStates.config_path`
16
+ - `UnitedStates.array_from_yaml_file(path:)`
17
+ - `UnitedStates.array_from_yaml(yaml)`
18
+ - `UnitedStates.array_from_hashes(*hashes)`
19
+ - `UnitedStates::State::Designation.from_hash(**hash)`
20
+ - Example of `UnitedStates::State::Designation#initialize(...)`
21
+
22
+ ### Changed
23
+ - `UnitedStates.all` to use `UnitedStates.array_from_yaml_file(path:)`
24
+
25
+ ### Fixed
26
+ - `Designation`, `Name`, and `PostalCode` yard documentation typos.
27
+ - `"Abbrevation"` typos, now `"PostalCode"`.
28
+
13
29
  ## [1.1.1] - 2017-02-18
14
30
  ### Added
15
31
  - `CircleCI` now tests against `Ruby` versions `2.1.10`, `2.2.6`, `2.3.3`, `2.4.0`.
@@ -0,0 +1,101 @@
1
+ ---
2
+ Alabama:
3
+ postal_code: AL
4
+ Alaska:
5
+ postal_code: AK
6
+ Arizona:
7
+ postal_code: AZ
8
+ Arkansas:
9
+ postal_code: AR
10
+ California:
11
+ postal_code: CA
12
+ Colorado:
13
+ postal_code: CO
14
+ Connecticut:
15
+ postal_code: CT
16
+ Delaware:
17
+ postal_code: DE
18
+ Florida:
19
+ postal_code: FL
20
+ Georgia:
21
+ postal_code: GA
22
+ Hawaii:
23
+ postal_code: HI
24
+ Idaho:
25
+ postal_code: ID
26
+ Illinois:
27
+ postal_code: IL
28
+ Indiana:
29
+ postal_code: IN
30
+ Iowa:
31
+ postal_code: IA
32
+ Kansas:
33
+ postal_code: KS
34
+ Kentucky:
35
+ postal_code: KY
36
+ Louisiana:
37
+ postal_code: LA
38
+ Maine:
39
+ postal_code: ME
40
+ Maryland:
41
+ postal_code: MD
42
+ Massachusetts:
43
+ postal_code: MA
44
+ Michigan:
45
+ postal_code: MI
46
+ Minnesota:
47
+ postal_code: MN
48
+ Mississippi:
49
+ postal_code: MS
50
+ Missouri:
51
+ postal_code: MO
52
+ Montana:
53
+ postal_code: MT
54
+ Nebraska:
55
+ postal_code: NE
56
+ Nevada:
57
+ postal_code: NV
58
+ New Hampshire:
59
+ postal_code: NH
60
+ New Jersey:
61
+ postal_code: NJ
62
+ New Mexico:
63
+ postal_code: NM
64
+ New York:
65
+ postal_code: NY
66
+ North Carolina:
67
+ postal_code: NC
68
+ North Dakota:
69
+ postal_code: ND
70
+ Ohio:
71
+ postal_code: OH
72
+ Oklahoma:
73
+ postal_code: OK
74
+ Oregon:
75
+ postal_code: OR
76
+ Pennsylvania:
77
+ postal_code: PA
78
+ Rhode Island:
79
+ postal_code: RI
80
+ South Carolina:
81
+ postal_code: SC
82
+ South Dakota:
83
+ postal_code: SD
84
+ Tennessee:
85
+ postal_code: TN
86
+ Texas:
87
+ postal_code: TX
88
+ Utah:
89
+ postal_code: UT
90
+ Vermont:
91
+ postal_code: VT
92
+ Virginia:
93
+ postal_code: VA
94
+ Washington:
95
+ postal_code: WA
96
+ West Virginia:
97
+ postal_code: WV
98
+ Wisconsin:
99
+ postal_code: WI
100
+ Wyoming:
101
+ postal_code: WY
@@ -6,16 +6,34 @@ module UnitedStates
6
6
  module State
7
7
  # Represents the various way to designate a state (e.g. name, postal code).
8
8
  class Designation
9
- # @!attribute [r] postal_code
10
- # @return [UnitedStates::State::PostalCode]
11
- # the state's postal code
9
+ # @return [UnitedStates::State::PostalCode]
10
+ # the state's postal code
12
11
  attr_reader :postal_code
13
12
 
14
- # @!attribute [r] name
15
- # @return [UnitedStates::State::Name]
16
- # the state's name
13
+ # @return [UnitedStates::State::Name]
14
+ # the state's name
17
15
  attr_reader :name
18
16
 
17
+ # @example From Named Parameters
18
+ # UnitedStates::State::Designation.from_hash(
19
+ # name: 'Hawaii', postal_code: 'HI')
20
+ # # => #<UnitedStates::State::Designation:0x...@string="HI">>
21
+ # @example From Variable
22
+ # hawaii_hash = { name: 'Hawaii', postal_code: 'HI' }
23
+ # UnitedStates::State::Designation.from_hash(hawaii_hash)
24
+ # # => #<UnitedStates::State::Designation:0x...@string="HI">>
25
+ # @param hash [Hash]
26
+ # a hash of Designation attributes, see {#initialize} for parameters
27
+ # @return [UnitedStates::State::Designation]
28
+ # a Designation with attributes provided via hash
29
+ def self.from_hash(**hash)
30
+ new(name: hash[:name], postal_code: hash[:postal_code])
31
+ end
32
+
33
+ # @example
34
+ # UnitedStates::State::Designation.new(
35
+ # name: 'wyoming', postal_code: 'wy')
36
+ # # => #<UnitedStates::State::Designation:0x007...@string="wy">>
19
37
  # @param name [String]
20
38
  # @param postal_code [String]
21
39
  # @raise [UnitedStates::State::PostalCode::StringTooLongError]
@@ -11,7 +11,7 @@ module UnitedStates
11
11
  @string = string.to_s
12
12
  end
13
13
 
14
- # @param [UnitedStates::State::Name]
14
+ # @param other [UnitedStates::State::Name]
15
15
  # @return [Boolean]
16
16
  # whether or not other.to_s matches self.to_s
17
17
  def ==(other)
@@ -40,7 +40,7 @@ module UnitedStates
40
40
  @string = string
41
41
  end
42
42
 
43
- # @param [UnitedStates::State::PostalCode]
43
+ # @param other [UnitedStates::State::PostalCode]
44
44
  # @return [Boolean]
45
45
  # whether or not other.to_s matches self.to_s
46
46
  def ==(other)
@@ -48,13 +48,13 @@ module UnitedStates
48
48
  end
49
49
 
50
50
  # @return [String]
51
- # an all lowercase version of this Abbrevation
51
+ # an all lowercase version of this PostalCode
52
52
  def lowercase
53
53
  @string.downcase
54
54
  end
55
55
 
56
56
  # @return [String]
57
- # an all uppercase version of this Abbrevation
57
+ # an all uppercase version of this PostalCode
58
58
  def uppercase
59
59
  @string.upcase
60
60
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module UnitedStates
3
- VERSION = '1.1.1'.freeze
3
+ VERSION = '1.2.0'.freeze
4
4
  end
data/lib/united_states.rb CHANGED
@@ -2,8 +2,6 @@
2
2
  require 'united_states/version'
3
3
  require 'united_states/state/designation'
4
4
 
5
- # rubocop: disable Metrics/ModuleLength
6
- #
7
5
  # Top-level namespace for this gem.
8
6
  module UnitedStates
9
7
  # Thrown when someone attempts to search for a state with
@@ -32,116 +30,73 @@ module UnitedStates
32
30
  find_by_postal_code(name_or_postal_code)
33
31
  end
34
32
 
35
- # rubocop: disable Metrics/AbcSize
36
- # rubocop: disable Metrics/MethodLength
37
33
  # @return [Array<UnitedStates::State::Designation>]
38
34
  # a collection of all U.S. State Designations.
39
35
  def self.all
40
- [
41
- UnitedStates::State::Designation.new(
42
- name: 'Alabama', postal_code: 'AL'),
43
- UnitedStates::State::Designation.new(
44
- name: 'Alaska', postal_code: 'AK'),
45
- UnitedStates::State::Designation.new(
46
- name: 'Arizona', postal_code: 'AZ'),
47
- UnitedStates::State::Designation.new(
48
- name: 'Arkansas', postal_code: 'AR'),
49
- UnitedStates::State::Designation.new(
50
- name: 'California', postal_code: 'CA'),
51
- UnitedStates::State::Designation.new(
52
- name: 'Colorado', postal_code: 'CO'),
53
- UnitedStates::State::Designation.new(
54
- name: 'Connecticut', postal_code: 'CT'),
55
- UnitedStates::State::Designation.new(
56
- name: 'Delaware', postal_code: 'DE'),
57
- UnitedStates::State::Designation.new(
58
- name: 'Florida', postal_code: 'FL'),
59
- UnitedStates::State::Designation.new(
60
- name: 'Georgia', postal_code: 'GA'),
61
- UnitedStates::State::Designation.new(
62
- name: 'Hawaii', postal_code: 'HI'),
63
- UnitedStates::State::Designation.new(
64
- name: 'Idaho', postal_code: 'ID'),
65
- UnitedStates::State::Designation.new(
66
- name: 'Illinois', postal_code: 'IL'),
67
- UnitedStates::State::Designation.new(
68
- name: 'Indiana', postal_code: 'IN'),
69
- UnitedStates::State::Designation.new(
70
- name: 'Iowa', postal_code: 'IA'),
71
- UnitedStates::State::Designation.new(
72
- name: 'Kansas', postal_code: 'KS'),
73
- UnitedStates::State::Designation.new(
74
- name: 'Kentucky', postal_code: 'KY'),
75
- UnitedStates::State::Designation.new(
76
- name: 'Louisiana', postal_code: 'LA'),
77
- UnitedStates::State::Designation.new(
78
- name: 'Maine', postal_code: 'ME'),
79
- UnitedStates::State::Designation.new(
80
- name: 'Maryland', postal_code: 'MD'),
81
- UnitedStates::State::Designation.new(
82
- name: 'Massachusetts', postal_code: 'MA'),
83
- UnitedStates::State::Designation.new(
84
- name: 'Michigan', postal_code: 'MI'),
85
- UnitedStates::State::Designation.new(
86
- name: 'Minnesota', postal_code: 'MN'),
87
- UnitedStates::State::Designation.new(
88
- name: 'Mississippi', postal_code: 'MS'),
89
- UnitedStates::State::Designation.new(
90
- name: 'Missouri', postal_code: 'MO'),
91
- UnitedStates::State::Designation.new(
92
- name: 'Montana', postal_code: 'MT'),
93
- UnitedStates::State::Designation.new(
94
- name: 'Nebraska', postal_code: 'NE'),
95
- UnitedStates::State::Designation.new(
96
- name: 'Nevada', postal_code: 'NV'),
97
- UnitedStates::State::Designation.new(
98
- name: 'New Hampshire', postal_code: 'NH'),
99
- UnitedStates::State::Designation.new(
100
- name: 'New Jersey', postal_code: 'NJ'),
101
- UnitedStates::State::Designation.new(
102
- name: 'New Mexico', postal_code: 'NM'),
103
- UnitedStates::State::Designation.new(
104
- name: 'New York', postal_code: 'NY'),
105
- UnitedStates::State::Designation.new(
106
- name: 'North Carolina', postal_code: 'NC'),
107
- UnitedStates::State::Designation.new(
108
- name: 'North Dakota', postal_code: 'ND'),
109
- UnitedStates::State::Designation.new(
110
- name: 'Ohio', postal_code: 'OH'),
111
- UnitedStates::State::Designation.new(
112
- name: 'Oklahoma', postal_code: 'OK'),
113
- UnitedStates::State::Designation.new(
114
- name: 'Oregon', postal_code: 'OR'),
115
- UnitedStates::State::Designation.new(
116
- name: 'Pennsylvania', postal_code: 'PA'),
117
- UnitedStates::State::Designation.new(
118
- name: 'Rhode Island', postal_code: 'RI'),
119
- UnitedStates::State::Designation.new(
120
- name: 'South Carolina', postal_code: 'SC'),
121
- UnitedStates::State::Designation.new(
122
- name: 'South Dakota', postal_code: 'SD'),
123
- UnitedStates::State::Designation.new(
124
- name: 'Tennessee', postal_code: 'TN'),
125
- UnitedStates::State::Designation.new(
126
- name: 'Texas', postal_code: 'TX'),
127
- UnitedStates::State::Designation.new(
128
- name: 'Utah', postal_code: 'UT'),
129
- UnitedStates::State::Designation.new(
130
- name: 'Vermont', postal_code: 'VT'),
131
- UnitedStates::State::Designation.new(
132
- name: 'Virginia', postal_code: 'VA'),
133
- UnitedStates::State::Designation.new(
134
- name: 'Washington', postal_code: 'WA'),
135
- UnitedStates::State::Designation.new(
136
- name: 'West Virginia', postal_code: 'WV'),
137
- UnitedStates::State::Designation.new(
138
- name: 'Wisconsin', postal_code: 'WI'),
139
- UnitedStates::State::Designation.new(
140
- name: 'Wyoming', postal_code: 'WY')
141
- ]
36
+ array_from_yaml_file(path: config_path)
37
+ end
38
+
39
+ # @example
40
+ # UnitedStates.array_from_hashes(
41
+ # { name: 'Florida', postal_code: 'FL' },
42
+ # { name: 'Iowa', postal_code: 'IA'})
43
+ # @param hashes [Array<Hash>]
44
+ # a collection of attributes as hashes
45
+ # @return [Array<UnitedStates::State::Designation>]
46
+ # a collection of state designations made from the given hash attributes
47
+ def self.array_from_hashes(*hashes)
48
+ hashes.map do |hash|
49
+ UnitedStates::State::Designation.from_hash(hash)
50
+ end
51
+ end
52
+
53
+ # @example
54
+ # require 'united_states'
55
+ #
56
+ # UnitedStates.array_from_yaml(
57
+ # { Washington: { postal_code: 'WA' } }.to_yaml)
58
+ # # => [<UnitedStates::State::Designation...>]
59
+ # @param yaml [String]
60
+ # a String representation of YAML.
61
+ # @return [Array<UnitedStates::State::Designation>]
62
+ # a collection of state designations made from the given hash attributes
63
+ # @raise UnitedStates::State::PostalCode::StringTooLongError
64
+ # if a designation has a postal code that too long
65
+ # @raise UnitedStates::State::PostalCode::StringTooShortError
66
+ # if a designation has no postal code defined or is too short
67
+ def self.array_from_yaml(yaml)
68
+ return [] unless YAML.safe_load(yaml)
69
+ YAML.safe_load(yaml).map do |key, value|
70
+ UnitedStates::State::Designation.new(
71
+ name: key, postal_code: value && value.fetch('postal_code', ''))
72
+ end
73
+ end
74
+
75
+ # @example
76
+ # require 'united_states'
77
+ #
78
+ # UnitedStates.array_from_yaml_file(path: './states.yml')
79
+ # # => [<UnitedStates::State::Designation...>]
80
+ # @param path [String]
81
+ # the path to the YAML file
82
+ # @return [Array<UnitedStates::State::Designation>]
83
+ # a collection of state designations made from the YAML file
84
+ # @raise UnitedStates::State::PostalCode::StringTooLongError
85
+ # if a designation has a postal code that too long
86
+ # @raise UnitedStates::State::PostalCode::StringTooShortError
87
+ # if a designation has no postal code defined or is too short
88
+ def self.array_from_yaml_file(path:)
89
+ pathname = Pathname.new(path)
90
+ return array_from_yaml(pathname.read) if pathname.exist?
91
+ raise "\"#{path}\" does not exist.\n"\
92
+ 'Please supply a path to a YAML file.'
93
+ end
94
+
95
+ # @return [String]
96
+ # the path to the Designations yaml file
97
+ def self.config_path
98
+ './lib/united_states/designations.yml'
142
99
  end
143
- # rubocop: enable Metrics/AbcSize
144
- # rubocop: enable Metrics/MethodLength
145
100
 
146
101
  # @example
147
102
  # UnitedStates.find_by_name('louisiana') # => UnitedSt...Designation
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'bundler', '~> 1.13'
27
27
  spec.add_development_dependency 'faker'
28
28
  spec.add_development_dependency 'pry'
29
+ spec.add_development_dependency 'pry-byebug'
29
30
  spec.add_development_dependency 'pry-coolline'
30
31
  spec.add_development_dependency 'rake', '~> 10.0'
31
32
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: united_states
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Whittington
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-19 00:00:00.000000000 Z
11
+ date: 2017-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: pry-coolline
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +188,7 @@ files:
174
188
  - bin/test
175
189
  - circle.yml
176
190
  - lib/united_states.rb
191
+ - lib/united_states/designations.yml
177
192
  - lib/united_states/state/designation.rb
178
193
  - lib/united_states/state/name.rb
179
194
  - lib/united_states/state/postal_code.rb