uk_address_parser 0.1.0 → 0.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: 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