us_street 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 007d55a2a54e1d6e42573edb3f5dfab5515ff1b0
4
- data.tar.gz: fb7aae9671e5168511a4de1708f6f6bb0068e3fc
3
+ metadata.gz: 8c13a0e9d18bb2aaf9fc6311cae3322b3d3be582
4
+ data.tar.gz: ffaeffddf9d4237f730479c754b0374e83d23f6c
5
5
  SHA512:
6
- metadata.gz: a27b13fc431432e3fabb57a88e160f7340d53c00361cf60bb67c80d3a5d49e0ba8f2ff3cbf930f0a2f89b2d0b3657bbef5e5befa705585b941ed0efaa7366594
7
- data.tar.gz: 1ec41605f2e513dfce2d05158b141bda74baef754051e13fba1baaf6498397df5a75afc938e6c31f1f70d0994761f90e9ab24d0e7c7cc6c41de71846a7a50ec1
6
+ metadata.gz: d91e8b113fb8e9acb1eb3598492c8d1a713dbf2ec2100264b527ddafa5e96f1879d5d710725fcc0f4bca0b4383e692b1b94ef6491c8c7ecfff8f0d61b7ccc28d
7
+ data.tar.gz: 6871c87474a63ab99591d9fbc04aa2cbfa058faf7cdc44431f5fabc049b13ee7a29d5a6a1413dcd148edde40e41ecf9809516b74fd6b15ae7214b433e13a6bb3
@@ -1,3 +1,3 @@
1
1
  class UsStreet
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/us_street.rb CHANGED
@@ -82,8 +82,6 @@ class UsStreet
82
82
  sidx, eidx = 0, parts.length - 1
83
83
  unit_number = dir_suffix = dir_prefix = street_suffix = street_number = road_number = nil
84
84
 
85
- # start at the end and chomp
86
-
87
85
  # We could have a unit number last. Format '#\d+' but it's removed by the cleaners so match the original
88
86
  if match = original_full_street.match(/#(\d+)$/)
89
87
  unit_number = match[1]
@@ -95,24 +93,31 @@ class UsStreet
95
93
  eidx -= 1
96
94
  end
97
95
 
98
- # We may have a directional suffix, and or a street suffix
99
- eidx -= 1 if dir_suffix = direction_mapping(parts[eidx])
100
- eidx -= 1 if street_suffix = road_mapping(parts[eidx])
101
-
102
- # if our current spread is 0 then someone may have put in 12 st for 12th Street. We want to end it here if that's true.
103
- if eidx - sidx > 0
104
- # lets look at the start of the string
105
-
106
- # is there a street number?
107
- if parts[sidx] =~ /^\d+$/
108
- street_number = parts[sidx]
109
- sidx += 1
96
+ # strip suffixes starting at the end and working backwards
97
+ # Check for a postdirectional (directional suffix)
98
+ eidx -= 1 if eidx - sidx > 0 and dir_suffix = direction_mapping(parts[eidx])
99
+
100
+ # Check for a street suffix. If there's already a street suffix override,
101
+ # don't strip from string unless it's the same suffix.
102
+ # Otherwise "Forest Trail Rd" gets stripped to "Forest Trl"
103
+ if eidx - sidx > 0 and street_suffix_maybe = road_mapping(parts[eidx])
104
+ if overrides[:street_suffix].blank? or street_suffix_maybe == road_mapping(overrides[:street_suffix])
105
+ street_suffix = street_suffix_maybe
106
+ eidx -= 1
110
107
  end
108
+ end
109
+
110
+ # remove components from the beginning
111
111
 
112
- # is there a directional prefix?
113
- sidx += 1 if dir_prefix = direction_mapping(parts[sidx])
112
+ # is there a street number at beginning
113
+ if eidx - sidx > 0 and parts[sidx] =~ /^\d+$/
114
+ street_number = parts[sidx]
115
+ sidx += 1
114
116
  end
115
117
 
118
+ # is there a predirectional?
119
+ sidx += 1 if eidx - sidx > 0 and dir_prefix = direction_mapping(parts[sidx])
120
+
116
121
  # fix weirdo street names and make them consistent
117
122
  parts[sidx] = "St" if parts[sidx] =~ /^((st\.?)|(saint))$/i # catch "Saint John Street"
118
123
  parts[sidx] = "Dr" if parts[sidx] =~ /^((dr\.?)|(doctor))$/i # catch "Dr. Oz Road"
@@ -84,6 +84,12 @@ describe UsStreet do
84
84
  us_street = UsStreet.from_attrs(" 123", 'S', "North 12th St WEST", 'Street', 'E')
85
85
  expect(us_street.full_street).to eq('123 S 12th St E')
86
86
  end
87
+
88
+ # yes this is a real address: 2644 E North Ln, Phoenix, AZ 85028
89
+ it "doesn't strip North if it's the full street name" do
90
+ us_street = UsStreet.from_attrs("2644", "E", "North", "Ln", nil)
91
+ expect(us_street.full_street).to eq("2644 E North Ln")
92
+ end
87
93
  end
88
94
  end
89
95
 
@@ -125,6 +131,11 @@ describe UsStreet do
125
131
  expect(us_street.full_street).to eq("123 N Main Southy")
126
132
  end
127
133
 
134
+ it "doesn't strip directions in street name" do
135
+ us_street = UsStreet.parse("2644 E North Ln")
136
+ expect(us_street.full_street).to eq("2644 E North Ln")
137
+ end
138
+
128
139
  it "strips off spaces" do
129
140
  us_street = UsStreet.parse(" 123 N main southy ")
130
141
  expect(us_street.full_street).to eq("123 N Main Southy")
@@ -145,7 +156,8 @@ describe UsStreet do
145
156
  it 'prefers an explicit street_suffix' do
146
157
  us_street = UsStreet.parse("123 main southy road", street_suffix: "st")
147
158
  expect(us_street.street_suffix).to eq('St')
148
- expect(us_street.full_street).to eq("123 Main Southy St")
159
+ # we can't strip Road here, it may be part of the street name in fact.
160
+ expect(us_street.full_street).to eq("123 Main Southy Road St")
149
161
  end
150
162
 
151
163
  it 'handles unit numbers' do
@@ -204,5 +216,13 @@ describe UsStreet do
204
216
  expect(street.street_suffix).to eq('Rd')
205
217
  expect(street.unit).to eq('12')
206
218
  end
219
+
220
+ it 'doesnt strip street when overrides are present' do
221
+ street = UsStreet.parse("PALM BEACH", {:street_number=>"20127", :dir_prefix=>"E", :street_suffix=>"Drive"})
222
+ expect(street.full_street).to eq('20127 E Palm Beach Dr')
223
+ expect(street.street_number).to eq('20127')
224
+ expect(street.street_name).to eq('Palm Beach')
225
+ expect(street.street_suffix).to eq('Dr')
226
+ end
207
227
  end
208
228
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: us_street
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Neighman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-12 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport