Indirizzo 0.1.0 → 0.1.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.
data/Gemfile CHANGED
@@ -1,3 +1,12 @@
1
1
  source :rubygems
2
2
 
3
- gemspec
3
+ gem 'rake'
4
+
5
+ group :test, :development do
6
+ gem 'cover_me'
7
+ gem 'awesome_print'
8
+ end
9
+
10
+ group :test do
11
+ gem 'test-unit'
12
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{Indirizzo}
3
- s.version = "0.1.0"
3
+ s.version = "0.1.1"
4
4
 
5
5
  s.authors = [%q{Dave Worth}]
6
6
  s.date = %q{2011-12-14}
data/Rakefile CHANGED
@@ -26,6 +26,6 @@ namespace :cover_me do
26
26
  end
27
27
  end
28
28
 
29
- task :test do
30
- Rake::Task['cover_me:report'].invoke
31
- end
29
+ #task :test do
30
+ #Rake::Task['cover_me:report'].invoke
31
+ #end
@@ -1 +1 @@
1
- require 'Indirizzo/Address'
1
+ require 'indirizzo/address'
@@ -1,4 +1,5 @@
1
1
  require 'indirizzo/constants'
2
+ require 'awesome_print'
2
3
 
3
4
  module Indirizzo
4
5
  # Defines the matching of parsed address tokens.
@@ -6,9 +7,9 @@ module Indirizzo
6
7
  # FIXME: shouldn't have to anchor :number and :zip at start/end
7
8
  :number => /^(\d+\W|[a-z]+)?(\d+)([a-z]?)\b/io,
8
9
  :street => /(?:\b(?:\d+\w*|[a-z'-]+)\s*)+/io,
9
- :city => /(?:\b[a-z'-]+\s*)+/io,
10
- :state => Regexp.new(State.regexp.source + "\s*$", Regexp::IGNORECASE),
11
- :zip => /(\d{5})(?:-\d{4})?\s*$/o,
10
+ :city => /(?:\b[a-z][a-z'-]+\s*)+/io,
11
+ :state => State.regexp,
12
+ :zip => /\b(\d{5})(?:-(\d{4}))?\b/o,
12
13
  :at => /\s(at|@|and|&)\s/io,
13
14
  :po_box => /\b[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\b/
14
15
  }
@@ -23,6 +24,7 @@ module Indirizzo
23
24
  attr_accessor :city
24
25
  attr_accessor :state
25
26
  attr_accessor :zip, :plus4
27
+ attr_accessor :country
26
28
 
27
29
  # Takes an address or place name string as its sole argument.
28
30
  def initialize (text)
@@ -122,55 +124,51 @@ module Indirizzo
122
124
  strings
123
125
  end
124
126
 
125
- def parse_zip(regex_match, text)
126
- idx = text.rindex(regex_match)
127
- text[idx...idx+regex_match.length] = ""
128
- text.sub! /\s*,?\s*$/o, ""
129
- @zip, @plus4 = @zip.map {|s|s.strip}
130
- text
131
- end
132
-
133
127
  def parse_state(regex_match, text)
134
128
  idx = text.rindex(regex_match)
135
- text[idx...idx+regex_match.length] = ""
136
- text.sub! /\s*,?\s*$/o, ""
137
129
  @full_state = @state[0].strip # special case: New York
138
130
  @state = State[@full_state]
139
- text
140
- end
141
-
142
- def parse_number(regex_match, text)
143
- # FIXME: What if this string appears twice?
144
- idx = text.index(regex_match)
145
- text[idx...idx+regex_match.length] = ""
146
- text.sub! /^\s*,?\s*/o, ""
147
- @prenum, @number, @sufnum = @number.map {|s| s and s.strip}
131
+ @city = "Washington" if @state == "DC" && text[idx...idx+regex_match.length] =~ /washington\s+d\.?c\.?/i
148
132
  text
149
133
  end
150
134
 
151
135
  def parse
152
136
  text = @text.clone.downcase
153
137
 
154
- @zip = text.scan(Match[:zip])[-1]
138
+ @zip = text.scan(Match[:zip]).last
155
139
  if @zip
156
- text = parse_zip($&, text)
140
+ last_match = $&
141
+ zip_index = text.rindex(last_match)
142
+ zip_end_index = zip_index + last_match.length - 1
143
+ @zip, @plus4 = @zip.map {|s| s and s.strip }
157
144
  else
158
145
  @zip = @plus4 = ""
146
+ zip_index = text.length
147
+ zip_end_index = -1
159
148
  end
160
149
 
161
- @state = text.scan(Match[:state])[-1]
150
+ @country = @text[zip_end_index+1..-1].sub(/^\s*,\s*/, '').strip
151
+ @country = nil if @country == text
152
+
153
+ @state = text.scan(Match[:state]).last
162
154
  if @state
163
- text = parse_state($&, text)
155
+ last_match = $&
156
+ state_index = text.rindex(last_match)
157
+ text = parse_state(last_match, text)
164
158
  else
165
159
  @full_state = ""
166
160
  @state = ""
167
161
  end
168
162
 
169
- @number = text.scan(Match[:number])[0]
163
+ @number = text.scan(Match[:number]).first
170
164
  # FIXME: 230 Fish And Game Rd, Hudson NY 12534
171
165
  if @number # and not intersection?
172
- text = parse_number($&, text)
166
+ last_match = $&
167
+ number_index = text.index(last_match)
168
+ number_end_index = number_index + last_match.length - 1
169
+ @prenum, @number, @sufnum = @number.map {|s| s and s.strip}
173
170
  else
171
+ number_end_index = -1
174
172
  @prenum = @number = @sufnum = ""
175
173
  end
176
174
 
@@ -179,24 +177,32 @@ module Indirizzo
179
177
  # Sault Ste. Marie
180
178
 
181
179
  # FIXME: PO Box should geocode to ZIP
182
- @street = text.scan(Match[:street])
180
+ street_search_end_index = [state_index,zip_index,text.length].reject(&:nil?).min-1
181
+ @street = text[number_end_index+1..street_search_end_index].scan(Match[:street]).map { |s| s and s.strip }
182
+
183
183
  @street = expand_streets(@street)
184
184
  # SPECIAL CASE: 1600 Pennsylvania 20050
185
185
  @street << @full_state if @street.empty? and @state.downcase != @full_state.downcase
186
186
 
187
- @city = text.scan(Match[:city])
188
- if !@city.empty?
189
- @city = [@city[-1].strip]
190
- add = @city.map {|item| item.gsub(Name_Abbr.regexp) {|m| Name_Abbr[m]}}
191
- @city |= add
192
- @city.map! {|s| s.downcase}
193
- @city.uniq!
194
- else
195
- @city = []
187
+ street_end_index = @street.map { |s| text.rindex(s) }.reject(&:nil?).min||0
188
+
189
+ if @city.nil? || @city.empty?
190
+ @city = text[street_end_index..street_search_end_index+1].scan(Match[:city])
191
+ if !@city.empty?
192
+ #@city = [@city[-1].strip]
193
+ @city = [@city.last.strip]
194
+ add = @city.map {|item| item.gsub(Name_Abbr.regexp) {|m| Name_Abbr[m]}}
195
+ @city |= add
196
+ @city.map! {|s| s.downcase}
197
+ @city.uniq!
198
+ else
199
+ @city = []
200
+ end
201
+
202
+ # SPECIAL CASE: no city, but a state with the same name. e.g. "New York"
203
+ @city << @full_state if @state.downcase != @full_state.downcase
196
204
  end
197
205
 
198
- # SPECIAL CASE: no city, but a state with the same name. e.g. "New York"
199
- @city << @full_state if @state.downcase != @full_state.downcase
200
206
  end
201
207
 
202
208
  def expand_streets(street)
@@ -20,10 +20,10 @@ module Indirizzo
20
20
  # whitespace-delimited prefixes to keys and values in the two-way Map.
21
21
  def build_partial
22
22
  @partial = Set.new()
23
- [keys, values].flatten.each {|item|
23
+ [keys, values].flatten.each do |item|
24
24
  @partial << item.downcase
25
25
  item.downcase.split.each {|token| @partial << token}
26
- }
26
+ end
27
27
  end
28
28
  def build_match
29
29
  @regexp = Regexp.new(
@@ -612,6 +612,8 @@ module Indirizzo
612
612
  "Connecticut" => "CT",
613
613
  "Delaware" => "DE",
614
614
  "District of Columbia" => "DC",
615
+ "Washington DC" => "DC",
616
+ "Washington D.C." => "DC",
615
617
  "Federated States of Micronesia" => "FM",
616
618
  "Florida" => "FL",
617
619
  "Georgia" => "GA",
@@ -9,18 +9,6 @@ class TestAddress < Test::Unit::TestCase
9
9
  addr = Address.new("1600 Pennsylvania Av., Washington DC")
10
10
  assert_equal "1600 Pennsylvania Av, Washington DC", addr.text
11
11
  end
12
- def test_clean
13
- fixtures = [
14
- [ "cleaned text", "cleaned: text!" ],
15
- [ "cleaned-text 2", "cleaned-text: #2?" ],
16
- [ "it's working 1/2", "~it's working 1/2~" ],
17
- [ "it's working, yes", "it's working, yes...?" ],
18
- [ "it's working & well", "it's working & well?" ]
19
- ]
20
- fixtures.each {|output, given|
21
- assert_equal output, Address.new(given).text
22
- }
23
- end
24
12
  def test_expand_numbers
25
13
  num_list = ["5", "fifth", "five"]
26
14
  num_list.each {|n|
@@ -28,146 +16,12 @@ class TestAddress < Test::Unit::TestCase
28
16
  assert_equal num_list, addr.expand_numbers(n).to_a.sort
29
17
  }
30
18
  end
31
- def test_city_parse
32
- places = [
33
- [ "New York, NY", "New York", "NY", "" ],
34
- [ "NY", "", "NY", "" ],
35
- [ "New York", "New York", "NY", "" ],
36
- [ "Philadelphia", "Philadelphia", "", "" ],
37
- [ "Philadelphia PA", "Philadelphia", "PA", "" ],
38
- [ "Philadelphia, PA", "Philadelphia", "PA", "" ],
39
- [ "Philadelphia, Pennsylvania", "Philadelphia", "PA", "" ],
40
- [ "Philadelphia, Pennsylvania 19131", "Philadelphia", "PA", "19131" ],
41
- [ "Philadelphia 19131", "Philadelphia", "", "19131" ],
42
- [ "Pennsylvania 19131", "Pennsylvania", "PA", "19131" ], # kind of a misfeature
43
- [ "19131", "", "", "19131" ],
44
- [ "19131-9999", "", "", "19131" ],
45
- ]
46
- for fixture in places
47
- addr = Address.new fixture[0]
48
- [:city, :state, :zip].zip(fixture[1..3]).each {|key,val|
49
- result = addr.send key
50
- result = [result.downcase] unless result.kind_of? Array
51
- if result.empty?
52
- assert_equal val, "", key.to_s + " test no result " + fixture.join("/")
53
- else
54
- assert result.member?(val.downcase), key.to_s + " test " + result.inspect + fixture.join("/")
55
- end
56
- }
57
- end
58
- end
59
19
 
60
20
  def test_po_box
61
21
  addr_po = Address.new "PO Box 1111 Herndon VA 20171"
62
22
  assert addr_po.po_box?
63
23
  end
64
24
 
65
- def test_parse
66
- addrs = [
67
- {:text => "1600 Pennsylvania Av., Washington DC 20050",
68
- :number => "1600",
69
- :street => "Pennsylvania Ave",
70
- :city => "Washington",
71
- :state => "DC",
72
- :zip => "20050"},
73
-
74
- {:text => "1600 Pennsylvania, Washington DC",
75
- :number => "1600",
76
- :street => "Pennsylvania",
77
- :city => "Washington",
78
- :state => "DC"},
79
-
80
- {:text => "1600 Pennsylvania Washington DC",
81
- :number => "1600",
82
- :street => "Pennsylvania Washington",
83
- :city => "Pennsylvania Washington", # FIXME
84
- :state => "DC"},
85
-
86
- {:text => "1600 Pennsylvania Washington",
87
- :number => "1600",
88
- :street => "Pennsylvania",
89
- :city => "Washington",
90
- :state => "WA"}, # FIXME
91
-
92
- {:text => "1600 Pennsylvania 20050",
93
- :number => "1600",
94
- :street => "Pennsylvania", # FIXME
95
- :zip => "20050"},
96
-
97
- {:text => "1600 Pennsylvania Av, 20050-9999",
98
- :number => "1600",
99
- :street => "Pennsylvania Ave",
100
- :zip => "20050"},
101
-
102
- {:text => "1005 Gravenstein Highway North, Sebastopol CA",
103
- :number => "1005",
104
- :street => "Gravenstein Hwy N",
105
- :city => "Sebastopol",
106
- :state => "CA"},
107
-
108
- {:text => "100 N 7th St, Brooklyn",
109
- :number => "100",
110
- :street => "N 7 St",
111
- :city => "Brooklyn"},
112
-
113
- {:text => "100 N Seventh St, Brooklyn",
114
- :number => "100",
115
- :street => "N 7 St",
116
- :city => "Brooklyn"},
117
-
118
- {:text => "100 Central Park West, New York, NY",
119
- :number => "100",
120
- :street => "Central Park W",
121
- :city => "New York",
122
- :state => "NY"},
123
-
124
- {:text => "100 Central Park West, 10010",
125
- :number => "100",
126
- :street => "Central Park W",
127
- :zip => "10010"},
128
-
129
- {:text => "1400 Avenue of the Americas, New York, NY 10019",
130
- :number => "1400",
131
- :street => "Ave of the Americas",
132
- :city => "New York",
133
- :state => "NY"},
134
-
135
- {:text => "1400 Avenue of the Americas, New York",
136
- :number => "1400",
137
- :street => "Ave of the Americas",
138
- :city => "New York"},
139
-
140
- {:text => "1400 Ave of the Americas, New York",
141
- :number => "1400",
142
- :street => "Ave of the Americas",
143
- :city => "New York"},
144
-
145
- {:text => "1400 Av of the Americas, New York",
146
- :number => "1400",
147
- :street => "Ave of the Americas",
148
- :city => "New York"},
149
-
150
- {:text => "1400 Av of the Americas New York",
151
- :number => "1400",
152
- :street => "Ave of the Americas",
153
- :city => "New York"},
154
-
155
- ]
156
- for fixture in addrs
157
- text = fixture.delete(:text)
158
- addr = Address.new(text)
159
- for key, val in fixture
160
- result = addr.send key
161
- if result.kind_of? Array
162
- result.map! {|str| str.downcase}
163
- assert result.member?(val.downcase), "#{text} (#{key}) = #{result.inspect}"
164
- else
165
- assert_equal val, result, "#{text} (#{key}) = #{result.inspect}"
166
- end
167
- end
168
- end
169
- end
170
-
171
25
  def test_skip_parse
172
26
  addresses = [
173
27
  {:street => "1233 Main St", :city => "Springfield", :region => "VA", :postal_code => "12345", :final_number => "1233", :parsed_street => "main st"},
@@ -225,4 +79,201 @@ class TestAddress < Test::Unit::TestCase
225
79
  assert_equal preparsed_address[:country],address_for_geocode.state
226
80
  end
227
81
  end
82
+
83
+ # test cleaning code
84
+ [
85
+ [ "cleaned text", "cleaned: text!" ],
86
+ [ "cleaned-text 2", "cleaned-text: #2?" ],
87
+ [ "it's working 1/2", "~it's working 1/2~" ],
88
+ [ "it's working, yes", "it's working, yes...?" ],
89
+ [ "it's working & well", "it's working & well?" ]
90
+ ].each do |output, given|
91
+ define_method "test_clean_#{output.tr('-/\'&', '').gsub(/\s+/, '_')}" do
92
+ assert_equal output, Address.new(given).text
93
+ end
94
+ end
95
+
96
+ # test the city parsing code
97
+ [
98
+ [ "New York, NY", "New York", "NY", "" ],
99
+ [ "NY", "", "NY", "" ],
100
+ [ "New York", "New York", "NY", "" ],
101
+ [ "Philadelphia", "Philadelphia", "", "" ],
102
+ [ "Philadelphia PA", "Philadelphia", "PA", "" ],
103
+ [ "Philadelphia, PA", "Philadelphia", "PA", "" ],
104
+ [ "Philadelphia, Pennsylvania", "Philadelphia", "PA", "" ],
105
+ [ "Philadelphia, Pennsylvania 19131", "Philadelphia", "PA", "19131" ],
106
+ [ "Philadelphia 19131", "Philadelphia", "", "19131" ],
107
+ [ "Pennsylvania 19131", "Pennsylvania", "PA", "19131" ], # kind of a misfeature
108
+ [ "19131", "", "", "19131" ],
109
+ [ "19131-9999", "", "", "19131" ],
110
+ ].each do |fixture|
111
+ define_method "test_city_parse_#{fixture[0].gsub(/(?:\s+|[,])/,'_')}" do
112
+ check_city(fixture)
113
+ end
114
+ end
115
+
116
+ def check_city(fixture)
117
+ addr = Address.new(fixture[0])
118
+ [:city, :state, :zip].zip(fixture[1..3]).each do |key,val|
119
+ result = addr.send(key)
120
+ result = [result.downcase] unless result.kind_of?(Array)
121
+ if result.empty?
122
+ assert_equal val, "", key.to_s + " test no result " + fixture.join("/")
123
+ else
124
+ assert result.member?(val.downcase), key.to_s + " test " + result.inspect + fixture.join("/")
125
+ end
126
+ end
127
+ end
128
+
129
+ # test address parsing code
130
+ [
131
+ {:text => "1600 Pennsylvania Av., Washington DC 20050",
132
+ :number => "1600",
133
+ :street => "Pennsylvania Ave",
134
+ :city => "Washington",
135
+ :state => "DC",
136
+ :zip => "20050"},
137
+
138
+ {:text => "1600 Pennsylvania, Washington DC",
139
+ :number => "1600",
140
+ :street => "Pennsylvania",
141
+ :city => "Washington",
142
+ :state => "DC"},
143
+
144
+ {:text => "1600 Pennsylvania Washington DC",
145
+ :number => "1600",
146
+ :city => "Washington",
147
+ :street => "Pennsylvania",
148
+ :state => "DC"},
149
+
150
+ {:text => "1600 Pennsylvania Washington",
151
+ :pending => true,
152
+ :number => "1600",
153
+ :street => "Pennsylvania",
154
+ :city => "Washington",
155
+ :state => "DC"},
156
+
157
+ {:text => "1600 Pennsylvania 20050",
158
+ :number => "1600",
159
+ :state => "PA",
160
+ :zip => "20050"},
161
+
162
+ {:text => "1600 Pennsylvania Av, Washington DC 20050-9999",
163
+ :number => "1600",
164
+ :state => "DC",
165
+ :street => "Pennsylvania Ave",
166
+ :plus4 => "9999",
167
+ :zip => "20050"},
168
+
169
+ {:text => "1600 Pennsylvania Av, 20050-9999",
170
+ :pending => true,
171
+ :number => "1600",
172
+ #:state => "PA",
173
+ :street => "Pennsylvania Ave",
174
+ :plus4 => "9999",
175
+ :zip => "20050"},
176
+
177
+ {:text => "1005 Gravenstein Highway North, Sebastopol CA",
178
+ :number => "1005",
179
+ :street => "Gravenstein Hwy N",
180
+ :city => "Sebastopol",
181
+ :state => "CA"},
182
+
183
+ {:text => "100 N 7th St, Brooklyn",
184
+ :number => "100",
185
+ :street => "N 7 St",
186
+ :city => "Brooklyn"},
187
+
188
+ {:text => "100 N Seventh St, Brooklyn",
189
+ :number => "100",
190
+ :street => "N 7 St",
191
+ :city => "Brooklyn"},
192
+
193
+ {:text => "100 Central Park West, New York, NY",
194
+ :number => "100",
195
+ :street => "Central Park W",
196
+ :city => "New York",
197
+ :state => "NY"},
198
+
199
+ {:text => "100 Central Park West, 10010",
200
+ :number => "100",
201
+ :street => "Central Park W",
202
+ :zip => "10010"},
203
+
204
+ {:text => "1400 Avenue of the Americas, New York, NY 10019, US",
205
+ :number => "1400",
206
+ :street => "Ave of the Americas",
207
+ :city => "New York",
208
+ :state => "NY",
209
+ :country => "US"},
210
+
211
+ {:text => "1400 Avenue of the Americas, New York, NY 10019, USA",
212
+ :number => "1400",
213
+ :street => "Ave of the Americas",
214
+ :city => "New York",
215
+ :state => "NY",
216
+ :country => "USA"},
217
+
218
+ {:text => "1400 Avenue of the Americas, New York, NY 10019, United States of America ",
219
+ :number => "1400",
220
+ :street => "Ave of the Americas",
221
+ :city => "New York",
222
+ :state => "NY",
223
+ :country => "United States of America"},
224
+
225
+ {:text => "1400 Avenue of the Americas, New York",
226
+ :number => "1400",
227
+ :street => "Ave of the Americas",
228
+ :city => "New York"},
229
+
230
+ {:text => "1400 Ave of the Americas, New York",
231
+ :number => "1400",
232
+ :street => "Ave of the Americas",
233
+ :city => "New York"},
234
+
235
+ {:text => "1400 Av of the Americas, New York",
236
+ :number => "1400",
237
+ :street => "Ave of the Americas",
238
+ :city => "New York"},
239
+
240
+ {:text => "1400 Av of the Americas New York",
241
+ :number => "1400",
242
+ :street => "Ave of the Americas",
243
+ :city => "New York"},
244
+
245
+ {:text => "23 Home St, Hometown PA, 12345 US",
246
+ :number => "23",
247
+ :state => "PA",
248
+ :street => "Home St",
249
+ :city => "Hometown",
250
+ :zip => "12345"},
251
+
252
+ {:text => "23 Home St, Apt. A, Hometown PA, 12345 US",
253
+ :number => "23",
254
+ :state => "PA",
255
+ :street => "Home St",
256
+ :city => "Hometown",
257
+ :zip => "12345",
258
+ :country => "US"}
259
+ ].each do |fixture|
260
+ define_method "test_parse_#{fixture[:text].gsub(/(?:\s+|[.,])/,'_')}" do
261
+ pend if fixture[:pending]
262
+ check_addr(fixture)
263
+ end
264
+ end
265
+
266
+ def check_addr(fixture)
267
+ text = fixture[:text]
268
+ addr = Address.new(text)
269
+ fixture.reject{|k,v| k == :text}.each do |key, val|
270
+ result = addr.send key
271
+ if result.kind_of? Array
272
+ result.map! {|str| str.downcase}
273
+ assert result.member?(val.downcase), "#{text} (#{key}) = #{result.inspect}"
274
+ else
275
+ assert_equal val, result, "#{text} (#{key}) = #{result.inspect}"
276
+ end
277
+ end
278
+ end
228
279
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Indirizzo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70182937832940 !ruby/object:Gem::Requirement
16
+ requirement: &70302219305600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70182937832940
24
+ version_requirements: *70302219305600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cover_me
27
- requirement: &70182937832500 !ruby/object:Gem::Requirement
27
+ requirement: &70302219305160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70182937832500
35
+ version_requirements: *70302219305160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: awesome_print
38
- requirement: &70182937832080 !ruby/object:Gem::Requirement
38
+ requirement: &70302219304740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70182937832080
46
+ version_requirements: *70302219304740
47
47
  description: Indirizzo is simply an extraction of the US Street Address parsing code
48
48
  from Geocoder::US
49
49
  email: dave@highgroove.com