uk_address_parser 0.1.0 → 0.2.0

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: ecc35c8f590a22839dd63839d3b9750705435aee
4
- data.tar.gz: e0a2ca56f87a8d1efa5e4620cd658b1901f52f71
3
+ metadata.gz: 60502d3b6bc51be50f55316c0c3287d1539deb90
4
+ data.tar.gz: 24ca711046631664a9f591b7280998cdbb6909ce
5
5
  SHA512:
6
- metadata.gz: d37b2e9d7c9d8bade64971257bce549428bbae5d5578b6b1dcd642650140d6645cf3ef23efba028bb1f8b3e77123df8344e6ee0c386debb774f604e1b95e726b
7
- data.tar.gz: e8c28ded654249723f5ad69d31ec3ef4cc95ca3dc2ca3f7734093f5e302720310c89d5cf2031e65eeb93d7d66637171bbaf85e5198e6b89e0981be40a4c5f28f
6
+ metadata.gz: 66f53dbfeea1b2df8b1e9a0e22656689be4c4798284180d6cd417df7cec915b2b7a085bd81aaba497634f1bfaf1f53af8720673df033e5b25d016d70ccf94ec9
7
+ data.tar.gz: b9f5c034d08addd1352426e13d917c9f15b7d9f034e7df5d1a8456568ccc856ba6d3c561c9f4312e9cab6df5829e1ef3151d98ea42315a929bbe73a38e0ad395
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
data/README.md CHANGED
@@ -13,7 +13,7 @@ Will generate:
13
13
  {
14
14
  flat: "Flat 1",
15
15
  house_number: "12",
16
- house_name: "Bubble House",
16
+ building_name: "Bubble House",
17
17
  street: "Long Road",
18
18
  street2: nil,
19
19
  street3: nil,
@@ -1,13 +1,14 @@
1
1
  module UkAddressParser
2
2
  class AddressParser
3
3
 
4
- attr_accessor :address, :flat, :house_number, :house_name, :street, :street2, :street3, :town, :county
4
+ attr_accessor :address, :flat, :house_number, :building_name, :street, :street2, :street3, :town, :county
5
5
  def initialize(address)
6
6
  self.address = address
7
7
  end
8
8
 
9
9
  def parts
10
- @parts ||= address.split(/\s?\,\s?/).collect(&:strip)
10
+ comma_or_commas_with_empty_spaces = /\s?\,[\s\,]*/
11
+ @parts ||= address.split(comma_or_commas_with_empty_spaces).collect(&:strip)
11
12
  end
12
13
 
13
14
  def build
@@ -43,8 +44,8 @@ module UkAddressParser
43
44
  @street = $2
44
45
  parts.shift
45
46
  when known_street_ending_no_number
46
- if !house_name && (number_and_any_street_name =~ parts[1] || known_street_ending_no_number =~ parts[1])
47
- @house_name = parts.shift
47
+ if !building_name && looks_like_a_street?(parts[1])
48
+ @building_name = parts.shift
48
49
  building_and_street
49
50
  else
50
51
  @street = parts.shift
@@ -56,9 +57,13 @@ module UkAddressParser
56
57
  @house_number = $1
57
58
  @street = $2
58
59
  parts.shift
60
+ if !building_name && looks_like_a_street?(parts[0])
61
+ @building_name = @street
62
+ @street = parts.shift
63
+ end
59
64
  else
60
- unless house_name
61
- @house_name = parts.shift
65
+ unless building_name
66
+ @building_name = parts.shift
62
67
  building_and_street
63
68
  end
64
69
  end
@@ -80,6 +85,10 @@ module UkAddressParser
80
85
  /^(\d+\w?)\s([\w\s\-\.]+)$/i
81
86
  end
82
87
 
88
+ def looks_like_a_street?(part)
89
+ (number_and_any_street_name =~ part || known_street_ending_no_number =~ part)
90
+ end
91
+
83
92
  def build_town
84
93
  @town = parts.pop unless parts.empty?
85
94
  end
@@ -97,7 +106,7 @@ module UkAddressParser
97
106
  {
98
107
  flat: flat,
99
108
  house_number: house_number,
100
- house_name: house_name,
109
+ building_name: building_name,
101
110
  street: street,
102
111
  street2: street2,
103
112
  street3: street3,
@@ -1,3 +1,3 @@
1
1
  module UkAddressParser
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uk_address_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Nichols
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-03 00:00:00.000000000 Z
11
+ date: 2017-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler