pinpoint 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/pinpoint.rb CHANGED
@@ -1,5 +1,48 @@
1
1
  require 'pinpoint/version'
2
- require 'pinpoint/addressable'
2
+ require 'pinpoint/validations'
3
+ require 'pinpoint/address'
3
4
 
4
5
  module Pinpoint
6
+ module ClassMethods
7
+ include Validations
8
+
9
+ def pinpoint(name, options = {})
10
+ if options[:validate]
11
+ install_validations(name)
12
+ end
13
+
14
+ define_method name do
15
+ # TODO: Memoize
16
+
17
+ Pinpoint::Address.new(
18
+ :name => respond_to?(:"#{name}_name") ? send(:"#{name}_name") : '',
19
+ :street => respond_to?(:"#{name}_street_and_premises") ? send(:"#{name}_street_and_premises") : '',
20
+ :city => respond_to?(:"#{name}_city") ? send(:"#{name}_city") : '',
21
+ :state => respond_to?(:"#{name}_state_or_province") ? send(:"#{name}_state_or_province") : '',
22
+ :county => respond_to?(:"#{name}_district_or_county") ? send(:"#{name}_district_or_county") : '',
23
+ :postal_code => respond_to?(:"#{name}_postal_code") ? send(:"#{name}_postal_code") : '',
24
+ :country => respond_to?(:"#{name}_country") ? send(:"#{name}_country") : '',
25
+ :latitude => respond_to?(:"#{name}_latitude") ? send(:"#{name}_latitude") : '',
26
+ :longitude => respond_to?(:"#{name}_longitude") ? send(:"#{name}_longitude") : ''
27
+ )
28
+ end
29
+
30
+ define_method "#{name}=" do |address|
31
+ send(:"#{name}_name=", address.name)
32
+ send(:"#{name}_street_and_premises=", address.street)
33
+ send(:"#{name}_city=", address.city)
34
+ send(:"#{name}_state_or_province=", address.state)
35
+ send(:"#{name}_postal_code=", address.zip_code)
36
+ send(:"#{name}_country=", address.country)
37
+ end
38
+
39
+ define_method "#{name}_incomplete?" do
40
+ send(:"#{name}").incomplete?
41
+ end
42
+ end
43
+ end
44
+
45
+ def self.included(base)
46
+ base.extend ClassMethods
47
+ end
5
48
  end
@@ -0,0 +1,70 @@
1
+ module Pinpoint
2
+ class Address
3
+ attr_accessor :name,
4
+ :street,
5
+ :city,
6
+ :state,
7
+ :county,
8
+ :zip_code,
9
+ :country,
10
+ :latitude,
11
+ :longitude
12
+
13
+ # State Aliases
14
+ alias :region :state
15
+ alias :region= :state=
16
+ alias :province :state
17
+ alias :province= :state=
18
+
19
+ # Zip Code Aliases
20
+ alias :postal_code :zip_code
21
+ alias :postal_code= :zip_code=
22
+ alias :postalcode :zip_code
23
+ alias :postalcode= :zip_code=
24
+ alias :zip :zip_code
25
+ alias :zip= :zip_code=
26
+
27
+ # County Aliases
28
+ alias :district :county
29
+ alias :district= :county=
30
+
31
+ def initialize(options = {})
32
+ options.each do |key, value|
33
+ send("#{key}=", value)
34
+ end
35
+ end
36
+
37
+ def complete?
38
+ present?(street) &&
39
+ present?(city) &&
40
+ present?(state) &&
41
+ present?(zip_code)
42
+ end
43
+
44
+ def incomplete?
45
+ !complete? && !empty?
46
+ end
47
+
48
+ def empty?
49
+ blank?(street) &&
50
+ blank?(city) &&
51
+ blank?(state) &&
52
+ blank?(zip_code)
53
+ end
54
+
55
+ private
56
+ def present?(value)
57
+ !blank?(value)
58
+ end
59
+
60
+ def blank?(value)
61
+ return true if value.nil?
62
+
63
+ if value.respond_to?(:match)
64
+ value.match(/\A\s*\z/)
65
+ else
66
+ false
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,10 +1,14 @@
1
1
  require 'pinpoint/us_states'
2
2
  require 'pinpoint/formats'
3
3
 
4
- module Addressable
5
- module ClassMethods
6
- def address(name)
4
+ module Pinpoint
5
+ module Validations
6
+ def install_validations(name)
7
7
  instance_eval <<-VALIDATIONIZATION
8
+ validates :#{name}_name,
9
+ :length => {
10
+ :maximum => 140 }
11
+
8
12
  validates :#{name}_street_and_premises,
9
13
  :presence => {
10
14
  :if => :#{name}_incomplete? },
@@ -31,24 +35,6 @@ module Addressable
31
35
  :with => Pinpoint::FORMATS[:zip_code],
32
36
  :allow_blank => true }
33
37
  VALIDATIONIZATION
34
-
35
- define_method :"#{name}_address?" do
36
- send(:"#{name}_street_and_premises?") &&
37
- send(:"#{name}_city?") &&
38
- send(:"#{name}_state_or_province?") &&
39
- send(:"#{name}_postal_code?")
40
- end
41
-
42
- define_method :"#{name}_incomplete?" do
43
- send(:"#{name}_street_and_premises?") ||
44
- send(:"#{name}_city?") ||
45
- send(:"#{name}_state_or_province?") ||
46
- send(:"#{name}_postal_code?")
47
- end
48
38
  end
49
39
  end
50
-
51
- def self.included(base)
52
- base.extend ClassMethods
53
- end
54
40
  end
@@ -1,3 +1,3 @@
1
1
  module Pinpoint
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -0,0 +1,234 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Pinpoint::Address' do
4
+ let(:address) { Pinpoint::Address.new }
5
+
6
+ it { address.respond_to?(:region).should be_true }
7
+ it { address.respond_to?(:region=).should be_true }
8
+ it { address.respond_to?(:province).should be_true }
9
+ it { address.respond_to?(:province=).should be_true }
10
+ it { address.respond_to?(:postal_code).should be_true }
11
+ it { address.respond_to?(:postal_code=).should be_true }
12
+ it { address.respond_to?(:postalcode).should be_true }
13
+ it { address.respond_to?(:postalcode=).should be_true }
14
+ it { address.respond_to?(:zip).should be_true }
15
+ it { address.respond_to?(:zip=).should be_true }
16
+ it { address.respond_to?(:district).should be_true }
17
+ it { address.respond_to?(:district=).should be_true }
18
+
19
+ describe '#new' do
20
+ context 'when it is passed a set of initial values as a Hash' do
21
+ let(:address) do
22
+ Pinpoint::Address.new(
23
+ name: 'The Frist Center for the Visual Arts',
24
+ street: '919 Broadway',
25
+ city: 'Nashville',
26
+ state: 'Tennessee',
27
+ county: 'Davidson',
28
+ zip_code: '37203',
29
+ country: 'United States',
30
+ latitude: '36.15885623029150',
31
+ longitude: '-86.78226636970851'
32
+ )
33
+ end
34
+
35
+ it 'sets its values properly' do
36
+ address.name.should eql 'The Frist Center for the Visual Arts'
37
+ address.street.should eql '919 Broadway'
38
+ address.city.should eql 'Nashville'
39
+ address.state.should eql 'Tennessee'
40
+ address.county.should eql 'Davidson'
41
+ address.zip_code.should eql '37203'
42
+ address.country.should eql 'United States'
43
+ address.latitude.should eql '36.15885623029150'
44
+ address.longitude.should eql '-86.78226636970851'
45
+ end
46
+ end
47
+ end
48
+
49
+ describe '#complete?' do
50
+ context 'when any of the main parts of the address are blank' do
51
+ let(:address) do
52
+ Pinpoint::Address.new(
53
+ street: '',
54
+ city: 'Nashville',
55
+ state: 'Tennessee',
56
+ zip_code: '37203'
57
+ )
58
+ end
59
+
60
+ it 'is false' do
61
+ address.should_not be_complete
62
+ end
63
+ end
64
+
65
+ context 'when any of the main parts of the address are missing' do
66
+ let(:address) do
67
+ Pinpoint::Address.new(
68
+ street: nil,
69
+ city: 'Nashville',
70
+ state: 'Tennessee',
71
+ zip_code: '37203'
72
+ )
73
+ end
74
+
75
+ it 'is false' do
76
+ address.should_not be_complete
77
+ end
78
+ end
79
+
80
+ context 'when all of the main parts of the address are present' do
81
+ let(:address) do
82
+ Pinpoint::Address.new(
83
+ street: '919 Broadway',
84
+ city: 'Nashville',
85
+ state: 'Tennessee',
86
+ zip_code: '37203'
87
+ )
88
+ end
89
+
90
+ it 'is true' do
91
+ address.should be_complete
92
+ end
93
+ end
94
+
95
+ context 'when all of the main parts of the address are missing' do
96
+ let(:address) do
97
+ Pinpoint::Address.new(
98
+ street: nil,
99
+ city: nil,
100
+ state: nil,
101
+ zip_code: nil
102
+ )
103
+ end
104
+
105
+ it 'is false' do
106
+ address.should_not be_complete
107
+ end
108
+ end
109
+ end
110
+
111
+ describe '#incomplete?' do
112
+ context 'when any of the main parts of the address are blank' do
113
+ let(:address) do
114
+ Pinpoint::Address.new(
115
+ street: '',
116
+ city: 'Nashville',
117
+ state: 'Tennessee',
118
+ zip_code: '37203'
119
+ )
120
+ end
121
+
122
+ it 'is true' do
123
+ address.should be_incomplete
124
+ end
125
+ end
126
+
127
+ context 'when any of the main parts of the address are missing' do
128
+ let(:address) do
129
+ Pinpoint::Address.new(
130
+ street: nil,
131
+ city: 'Nashville',
132
+ state: 'Tennessee',
133
+ zip_code: '37203'
134
+ )
135
+ end
136
+
137
+ it 'is true' do
138
+ address.should be_incomplete
139
+ end
140
+ end
141
+
142
+ context 'when all of the main parts of the address are present' do
143
+ let(:address) do
144
+ Pinpoint::Address.new(
145
+ street: '919 Broadway',
146
+ city: 'Nashville',
147
+ state: 'Tennessee',
148
+ zip_code: '37203'
149
+ )
150
+ end
151
+
152
+ it 'is false' do
153
+ address.should_not be_incomplete
154
+ end
155
+ end
156
+
157
+ context 'when all of the main parts of the address are missing' do
158
+ let(:address) do
159
+ Pinpoint::Address.new(
160
+ street: nil,
161
+ city: nil,
162
+ state: nil,
163
+ zip_code: nil
164
+ )
165
+ end
166
+
167
+ it 'is false' do
168
+ address.should_not be_incomplete
169
+ end
170
+ end
171
+ end
172
+
173
+ describe '#empty?' do
174
+ context 'when any of the main parts of the address are blank' do
175
+ let(:address) do
176
+ Pinpoint::Address.new(
177
+ street: '',
178
+ city: 'Nashville',
179
+ state: 'Tennessee',
180
+ zip_code: '37203'
181
+ )
182
+ end
183
+
184
+ it 'is false' do
185
+ address.should_not be_empty
186
+ end
187
+ end
188
+
189
+ context 'when any of the main parts of the address are missing' do
190
+ let(:address) do
191
+ Pinpoint::Address.new(
192
+ street: nil,
193
+ city: 'Nashville',
194
+ state: 'Tennessee',
195
+ zip_code: '37203'
196
+ )
197
+ end
198
+
199
+ it 'is false' do
200
+ address.should_not be_empty
201
+ end
202
+ end
203
+
204
+ context 'when all of the main parts of the address are present' do
205
+ let(:address) do
206
+ Pinpoint::Address.new(
207
+ street: '919 Broadway',
208
+ city: 'Nashville',
209
+ state: 'Tennessee',
210
+ zip_code: '37203'
211
+ )
212
+ end
213
+
214
+ it 'is false' do
215
+ address.should_not be_empty
216
+ end
217
+ end
218
+
219
+ context 'when all of the main parts of the address are missing' do
220
+ let(:address) do
221
+ Pinpoint::Address.new(
222
+ street: nil,
223
+ city: nil,
224
+ state: nil,
225
+ zip_code: nil
226
+ )
227
+ end
228
+
229
+ it 'is true' do
230
+ address.should be_empty
231
+ end
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ class Pinpointable
4
+ include Pinpoint
5
+
6
+ attr_accessor :address_name,
7
+ :address_street_and_premises,
8
+ :address_city,
9
+ :address_state_or_province,
10
+ :address_postal_code,
11
+ :address_country
12
+
13
+ pinpoint :address
14
+ end
15
+
16
+ describe 'Pinpoint' do
17
+ let(:pinpointable) { Pinpointable.new }
18
+
19
+ describe '.pinpoint' do
20
+ it 'creates a method to access the address' do
21
+ pinpointable.respond_to?(:address).should be_true
22
+ end
23
+
24
+ it 'creates a method to set the address' do
25
+ pinpointable.respond_to?(:address=).should be_true
26
+ end
27
+ end
28
+
29
+ describe '#address' do
30
+ it 'is a Pinpoint::Address' do
31
+ pinpointable.address.should be_a Pinpoint::Address
32
+ end
33
+
34
+ context 'when the object has address information set' do
35
+ before do
36
+ pinpointable.address_name = 'The TARDIS'
37
+ pinpointable.address_street_and_premises = '413 Citadel Drive'
38
+ pinpointable.address_city = 'Panopticon'
39
+ pinpointable.address_state_or_province = 'Eye of Harmony'
40
+ pinpointable.address_postal_code = '12345'
41
+ end
42
+
43
+ it 'has the correct address components' do
44
+ pinpointable.address.name.should eql 'The TARDIS'
45
+ pinpointable.address.street.should eql '413 Citadel Drive'
46
+ pinpointable.address.city.should eql 'Panopticon'
47
+ pinpointable.address.state.should eql 'Eye of Harmony'
48
+ pinpointable.address.county.should eql ''
49
+ pinpointable.address.zip_code.should eql '12345'
50
+ pinpointable.address.latitude.should eql ''
51
+ pinpointable.address.longitude.should eql ''
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '#address=' do
57
+ context 'when the object has address information set' do
58
+ before do
59
+ pinpointable.address_name = 'The TARDIS'
60
+ pinpointable.address_street_and_premises = '413 Citadel Drive'
61
+ pinpointable.address_city = 'Panopticon'
62
+ pinpointable.address_state_or_province = 'Eye of Harmony'
63
+ pinpointable.address_postal_code = '12345'
64
+ end
65
+
66
+ it 'overrides the current address information with that stored in the Pinpoint::Address' do
67
+ pinpointable.address = Pinpoint::Address.new(
68
+ name: 'Buckingham Palace',
69
+ street: '',
70
+ city: 'City of Westminster',
71
+ state: 'London',
72
+ zip_code: 'SW1A',
73
+ country: 'United Kingdom'
74
+ )
75
+
76
+ pinpointable.address_name.should eql 'Buckingham Palace'
77
+ pinpointable.address_street_and_premises.should eql ''
78
+ pinpointable.address_city.should eql 'City of Westminster'
79
+ pinpointable.address_state_or_province.should eql 'London'
80
+ pinpointable.address_postal_code.should eql 'SW1A'
81
+ pinpointable.address_country.should eql 'United Kingdom'
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,3 @@
1
+ require 'valid_attribute'
2
+ require 'active_model'
3
+ require 'pinpoint'
@@ -0,0 +1,7 @@
1
+ RSpec.configure do |config|
2
+ # Configure RSpec to run focused specs, and also respect the alias 'fit' for focused specs
3
+ config.treat_symbols_as_metadata_keys_with_true_values = true
4
+ config.filter_run :focused => true
5
+ config.alias_example_to :fit, :focused => true
6
+ config.run_all_when_everything_filtered = true
7
+ end
@@ -0,0 +1,4 @@
1
+ RSpec.configure do |config|
2
+ # Configure RSpec to respect the alias 'pit' for pending specs
3
+ config.alias_example_to :pit, :pending => true
4
+ end
@@ -0,0 +1,148 @@
1
+ require 'spec_helper'
2
+
3
+ class ValidatablePinpointable
4
+ include ActiveModel::Validations
5
+ include Pinpoint
6
+
7
+ attr_accessor :address_name,
8
+ :address_street_and_premises,
9
+ :address_city,
10
+ :address_state_or_province,
11
+ :address_postal_code,
12
+ :address_country
13
+
14
+ pinpoint :address, :validate => true
15
+ end
16
+
17
+ class UnvalidatablePinpointable
18
+ include ActiveModel::Validations
19
+ include Pinpoint
20
+
21
+ attr_accessor :address_name,
22
+ :address_street_and_premises,
23
+ :address_city,
24
+ :address_state_or_province,
25
+ :address_postal_code,
26
+ :address_country
27
+
28
+ pinpoint :address
29
+ end
30
+
31
+ describe 'Pinpoint::Validations' do
32
+ context 'when the pinpoint object has validations enabled' do
33
+ subject { ValidatablePinpointable.new }
34
+
35
+ describe '#address_name' do
36
+ it { should have_valid(:address_name).when nil, ('*' * 140) }
37
+ it { should_not have_valid(:address_name).when ('*' * 141) }
38
+ end
39
+
40
+ describe '#address_state_or_province' do
41
+ it { should have_valid(:address_street_and_premises).when nil, ('*' * 255) }
42
+ it { should_not have_valid(:address_street_and_premises).when ('*' * 256) }
43
+ end
44
+
45
+ describe '#address_city' do
46
+ it { should have_valid(:address_city).when nil, ('*' * 60) }
47
+ it { should_not have_valid(:address_city).when ('*' * 61) }
48
+ end
49
+
50
+ describe '#address_street_and_premises' do
51
+ it { should have_valid(:address_state_or_province).when nil, '', 'NY', 'MO' }
52
+ it { should_not have_valid(:address_state_or_province).when 'WP', 'NI', 'PO' }
53
+ end
54
+
55
+ describe '#address_postal_code' do
56
+ it { should have_valid(:address_postal_code).when nil, '', 12345, 12345-1234 }
57
+ it { should_not have_valid(:address_postal_code).when 'asdf', '123456' }
58
+ end
59
+
60
+ context "when the street address is set" do
61
+ before { subject.address_street_and_premises = "foo" }
62
+
63
+ it('the city should not be valid when blank') { should_not have_valid(:address_city).when nil, '' }
64
+ it('the state should not be valid when blank') { should_not have_valid(:address_state_or_province).when nil, '' }
65
+ it('the zip code should not be valid when blank') { should_not have_valid(:address_postal_code).when nil, '' }
66
+ end
67
+
68
+ context "when the city is set" do
69
+ before { subject.address_city = "foo" }
70
+
71
+ it('the street should not be valid when blank') { should_not have_valid(:address_street_and_premises).when nil, '' }
72
+ it('the state should not be valid when blank') { should_not have_valid(:address_state_or_province).when nil, '' }
73
+ it('the zip code should not be valid when blank') { should_not have_valid(:address_postal_code).when nil, '' }
74
+ end
75
+
76
+ context "when the state is set" do
77
+ before { subject.address_state_or_province= "FO" }
78
+
79
+ it('the street should not be valid when blank') { should_not have_valid(:address_street_and_premises).when nil, '' }
80
+ it('the city should not be valid when blank') { should_not have_valid(:address_city).when nil, '' }
81
+ it('the zip code should not be valid when blank') { should_not have_valid(:address_postal_code).when nil, '' }
82
+ end
83
+
84
+ context "when the zip is set" do
85
+ before { subject.address_postal_code = "12345" }
86
+
87
+ it('the street should not be valid when blank') { should_not have_valid(:address_street_and_premises).when nil, '' }
88
+ it('the city should not be valid when blank') { should_not have_valid(:address_city).when nil, '' }
89
+ it('the state should not be valid when blank') { should_not have_valid(:address_state_or_province).when nil, '' }
90
+ end
91
+ end
92
+
93
+ context 'when the pinpoint object has validations enabled' do
94
+ subject { UnvalidatablePinpointable.new }
95
+
96
+ describe '#address_name' do
97
+ it { should have_valid(:address_name).when ('*' * 141) }
98
+ end
99
+
100
+ describe '#address_state_or_province' do
101
+ it { should have_valid(:address_street_and_premises).when ('*' * 256) }
102
+ end
103
+
104
+ describe '#address_city' do
105
+ it { should have_valid(:address_city).when ('*' * 61) }
106
+ end
107
+
108
+ describe '#address_street_and_premises' do
109
+ it { should have_valid(:address_state_or_province).when 'WP', 'NI', 'PO' }
110
+ end
111
+
112
+ describe '#address_postal_code' do
113
+ it { should have_valid(:address_postal_code).when 'asdf', '123456' }
114
+ end
115
+
116
+ context "when the street address is set" do
117
+ before { subject.address_street_and_premises = "foo" }
118
+
119
+ it('the city should not be valid when blank') { should have_valid(:address_city).when nil, '' }
120
+ it('the state should not be valid when blank') { should have_valid(:address_state_or_province).when nil, '' }
121
+ it('the zip code should not be valid when blank') { should have_valid(:address_postal_code).when nil, '' }
122
+ end
123
+
124
+ context "when the city is set" do
125
+ before { subject.address_city = "foo" }
126
+
127
+ it('the street should not be valid when blank') { should have_valid(:address_street_and_premises).when nil, '' }
128
+ it('the state should not be valid when blank') { should have_valid(:address_state_or_province).when nil, '' }
129
+ it('the zip code should not be valid when blank') { should have_valid(:address_postal_code).when nil, '' }
130
+ end
131
+
132
+ context "when the state is set" do
133
+ before { subject.address_state_or_province= "FO" }
134
+
135
+ it('the street should not be valid when blank') { should have_valid(:address_street_and_premises).when nil, '' }
136
+ it('the city should not be valid when blank') { should have_valid(:address_city).when nil, '' }
137
+ it('the zip code should not be valid when blank') { should have_valid(:address_postal_code).when nil, '' }
138
+ end
139
+
140
+ context "when the zip is set" do
141
+ before { subject.address_postal_code = "12345" }
142
+
143
+ it('the street should not be valid when blank') { should have_valid(:address_street_and_premises).when nil, '' }
144
+ it('the city should not be valid when blank') { should have_valid(:address_city).when nil, '' }
145
+ it('the state should not be valid when blank') { should have_valid(:address_state_or_province).when nil, '' }
146
+ end
147
+ end
148
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pinpoint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,10 +10,138 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-10-02 00:00:00.000000000 Z
14
- dependencies: []
15
- description: Handling common address logic (currently only for US addresses but international
16
- is planned.
13
+ date: 2012-10-05 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '2.11'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '2.11'
31
+ - !ruby/object:Gem::Dependency
32
+ name: fuubar
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: '1.0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.4.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 1.4.0
63
+ - !ruby/object:Gem::Dependency
64
+ name: guard-rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: 2.0.0
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 2.0.0
79
+ - !ruby/object:Gem::Dependency
80
+ name: rb-fsevent
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: 0.9.1
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: 0.9.1
95
+ - !ruby/object:Gem::Dependency
96
+ name: awesome_print
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ~>
101
+ - !ruby/object:Gem::Version
102
+ version: 1.1.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.1.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: valid_attribute
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: 1.3.1
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 1.3.1
127
+ - !ruby/object:Gem::Dependency
128
+ name: activemodel
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: 3.1.8
135
+ type: :development
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 3.1.8
143
+ description: Handling common address logic. (currently only for US addresses but international
144
+ is planned.)
17
145
  email: support@chirrpy.com
18
146
  executables: []
19
147
  extensions: []
@@ -21,14 +149,21 @@ extra_rdoc_files:
21
149
  - README.md
22
150
  - LICENSE
23
151
  files:
24
- - lib/pinpoint/addressable.rb
152
+ - lib/pinpoint/address.rb
25
153
  - lib/pinpoint/formats.rb
26
154
  - lib/pinpoint/us_states.rb
155
+ - lib/pinpoint/validations.rb
27
156
  - lib/pinpoint/version.rb
28
157
  - lib/pinpoint.rb
29
158
  - Rakefile
30
159
  - README.md
31
160
  - LICENSE
161
+ - spec/address_spec.rb
162
+ - spec/pinpoint_spec.rb
163
+ - spec/spec_helper.rb
164
+ - spec/support/focused.rb
165
+ - spec/support/pending.rb
166
+ - spec/validations_spec.rb
32
167
  homepage: https://github.com/chirrpy/pinpoint
33
168
  licenses: []
34
169
  post_install_message:
@@ -54,4 +189,10 @@ rubygems_version: 1.8.24
54
189
  signing_key:
55
190
  specification_version: 3
56
191
  summary: (Un)conventional Address Composition for Ruby (and Rails)
57
- test_files: []
192
+ test_files:
193
+ - spec/address_spec.rb
194
+ - spec/pinpoint_spec.rb
195
+ - spec/spec_helper.rb
196
+ - spec/support/focused.rb
197
+ - spec/support/pending.rb
198
+ - spec/validations_spec.rb