uk_address_parser 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ecc35c8f590a22839dd63839d3b9750705435aee
4
+ data.tar.gz: e0a2ca56f87a8d1efa5e4620cd658b1901f52f71
5
+ SHA512:
6
+ metadata.gz: d37b2e9d7c9d8bade64971257bce549428bbae5d5578b6b1dcd642650140d6645cf3ef23efba028bb1f8b3e77123df8344e6ee0c386debb774f604e1b95e726b
7
+ data.tar.gz: e8c28ded654249723f5ad69d31ec3ef4cc95ca3dc2ca3f7734093f5e302720310c89d5cf2031e65eeb93d7d66637171bbaf85e5198e6b89e0981be40a4c5f28f
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.0.0
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in uk_address_parser.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Rob Nichols
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ # UkAddressParser
2
+
3
+ Tool to convert a UK address string into its constituent parts.
4
+
5
+ So for example:
6
+
7
+ ```ruby
8
+ UkAddressParser.parse 'Flat 1, Bubble House, 12 Long Road, Someton, Worcestershire, WR1 1XX'
9
+ ```
10
+
11
+ Will generate:
12
+
13
+ {
14
+ flat: "Flat 1",
15
+ house_number: "12",
16
+ house_name: "Bubble House",
17
+ street: "Long Road",
18
+ street2: nil,
19
+ street3: nil,
20
+ town: "Someton",
21
+ county: "Worcestershire",
22
+ postcode:"WR1 1XX"
23
+ }
24
+
25
+ ## Installation
26
+
27
+ Add this line to your application's Gemfile:
28
+
29
+ ```ruby
30
+ gem 'uk_address_parser'
31
+ ```
32
+
33
+ And then execute:
34
+
35
+ $ bundle
36
+
37
+ Or install it yourself as:
38
+
39
+ $ gem install uk_address_parser
40
+
41
+ ## Usage Limitations
42
+
43
+ This parser was initially built to parse a single set of addresses that had a
44
+ fairly limited variance in the arrangement of the component parts.
45
+
46
+ There are some limitations to how it works:
47
+
48
+ * The parser only works with comma delimited addresses.
49
+ * The parser assumes the address is a United Kingdom address and does not search for country
50
+
51
+ ## Development
52
+
53
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
54
+
55
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
56
+
57
+ ## Contributing
58
+
59
+ Bug reports and pull requests are welcome on GitHub at https://github.com/reggieb/uk_address_parser.
60
+
61
+
62
+ ## License
63
+
64
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
65
+
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "uk_address_parser"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,8 @@
1
+ require "uk_address_parser/version"
2
+ require "uk_address_parser/address_parser"
3
+
4
+ module UkAddressParser
5
+ def self.parse(address)
6
+ AddressParser.new(address).details
7
+ end
8
+ end
@@ -0,0 +1,171 @@
1
+ module UkAddressParser
2
+ class AddressParser
3
+
4
+ attr_accessor :address, :flat, :house_number, :house_name, :street, :street2, :street3, :town, :county
5
+ def initialize(address)
6
+ self.address = address
7
+ end
8
+
9
+ def parts
10
+ @parts ||= address.split(/\s?\,\s?/).collect(&:strip)
11
+ end
12
+
13
+ def build
14
+ postcode
15
+ build_county
16
+ building_and_street
17
+ build_town
18
+ streets
19
+ end
20
+
21
+ def postcode
22
+ @postcode || build_postcode
23
+ end
24
+
25
+ def build_postcode
26
+ @postcode = parts.pop if postcode_pattern =~ parts.last
27
+ end
28
+
29
+ # Checking for something that looks like a postcode
30
+ # This is not checking if the postcode is valid
31
+ def postcode_pattern
32
+ /^[0-9A-Z]{2,4}\s+[0-9A-Z]{3}$/
33
+ end
34
+
35
+ def build_county
36
+ @county = parts.pop if counties.include?(parts.last)
37
+ end
38
+
39
+ def building_and_street
40
+ case parts.first
41
+ when number_and_known_street_ending
42
+ @house_number = $1
43
+ @street = $2
44
+ parts.shift
45
+ 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
48
+ building_and_street
49
+ else
50
+ @street = parts.shift
51
+ end
52
+ when flat_number
53
+ @flat = parts.shift
54
+ building_and_street
55
+ when number_and_any_street_name
56
+ @house_number = $1
57
+ @street = $2
58
+ parts.shift
59
+ else
60
+ unless house_name
61
+ @house_name = parts.shift
62
+ building_and_street
63
+ end
64
+ end
65
+ end
66
+
67
+ def number_and_known_street_ending
68
+ /^(\d+\w?)\s([a-zA-Z\s\-\.\']+(#{street_endings.join('|')})$)/i
69
+ end
70
+
71
+ def known_street_ending_no_number
72
+ /^([a-zA-Z\s\-\.\']+(#{street_endings.join('|')})$)/i
73
+ end
74
+
75
+ def flat_number
76
+ /^Flat\s.*\d+.*/
77
+ end
78
+
79
+ def number_and_any_street_name
80
+ /^(\d+\w?)\s([\w\s\-\.]+)$/i
81
+ end
82
+
83
+ def build_town
84
+ @town = parts.pop unless parts.empty?
85
+ end
86
+
87
+ def streets
88
+ return if parts.empty?
89
+ @street = parts.shift unless street
90
+ @street2 = parts.shift
91
+ @street3 = parts.shift
92
+ raise "unprocessed parts: #{parts}" unless parts.empty?
93
+ end
94
+
95
+ def details
96
+ build unless parts.empty?
97
+ {
98
+ flat: flat,
99
+ house_number: house_number,
100
+ house_name: house_name,
101
+ street: street,
102
+ street2: street2,
103
+ street3: street3,
104
+ town: town,
105
+ county: county,
106
+ postcode: postcode
107
+ }
108
+ end
109
+
110
+ def counties
111
+ [
112
+ 'Avon', 'Bedfordshire', 'Berkshire', 'Borders', 'Buckinghamshire', 'Cambridgeshire', 'Central',
113
+ 'Cheshire', 'Cleveland', 'Clwyd', 'Cornwall', 'County Antrim', 'County Armagh', 'County Down',
114
+ 'County Fermanagh', 'County Londonderry', 'County Tyrone', 'Cumbria', 'Derbyshire', 'Devon',
115
+ 'Dorset', 'Dumfries and Galloway', 'Durham', 'Dyfed', 'East Sussex', 'Essex', 'Fife',
116
+ 'Gloucestershire', 'Grampian', 'Greater Manchester', 'Gwent', 'Gwynedd County', 'Hampshire',
117
+ 'Herefordshire', 'Hertfordshire', 'Highlands and Islands', 'Humberside', 'Isle of Wight',
118
+ 'Kent', 'Lancashire', 'Leicestershire', 'Lincolnshire', 'Lothian', 'Merseyside', 'Mid Glamorgan',
119
+ 'Norfolk', 'North Yorkshire', 'Northamptonshire', 'Northumberland', 'Nottinghamshire', 'Oxfordshire',
120
+ 'Powys', 'Rutland', 'Shropshire', 'Somerset', 'South Glamorgan', 'South Yorkshire', 'Staffordshire',
121
+ 'Strathclyde', 'Suffolk', 'Surrey', 'Tayside', 'Tyne and Wear', 'Warwickshire', 'West Glamorgan',
122
+ 'West Midlands', 'West Sussex', 'West Yorkshire', 'Wiltshire', 'Worcestershire'
123
+ ]
124
+ end
125
+
126
+ def street_endings
127
+ [
128
+ 'ALLEE', 'ALLEY', 'ALLY', 'ALY', 'ANEX', 'ANNEX', 'ANNX', 'ANX', 'ARC', 'ARCADE', 'AV', 'AVE', 'AVEN',
129
+ 'AVENU', 'AVENUE', 'AVN', 'AVNUE', 'BAYOO', 'BAYOU', 'BCH', 'BEACH', 'BEND', 'BND', 'BLF', 'BLUF', 'BLUFF',
130
+ 'BLUFFS', 'BOT', 'BTM', 'BOTTM', 'BOTTOM', 'BLVD', 'BOUL', 'BOULEVARD', 'BOULV', 'BR', 'BRNCH', 'BRANCH',
131
+ 'BRDGE', 'BRG', 'BRIDGE', 'BRK', 'BROOK', 'BROOKS', 'BURG', 'BURGS', 'BYP', 'BYPA', 'BYPAS', 'BYPASS',
132
+ 'BYPS', 'CAMP', 'CP', 'CMP', 'CANYN', 'CANYON', 'CNYN', 'CAPE', 'CPE', 'CAUSEWAY', 'CAUSWA', 'CSWY',
133
+ 'CEN', 'CENT', 'CENTER', 'CENTR', 'CENTRE', 'CNTER', 'CNTR', 'CTR', 'CENTERS', 'CIR', 'CIRC', 'CIRCL',
134
+ 'CIRCLE', 'CRCL', 'CRCLE', 'CIRCLES', 'CLF', 'CLIFF', 'CLFS', 'CLIFFS', 'CL', 'CLOSE', 'CLB', 'CLUB', 'COMMON', 'COMMONS',
135
+ 'COR', 'CORNER', 'CORNERS', 'CORS', 'COURSE', 'CRSE', 'COURT', 'CT', 'COURTS', 'CTS', 'COVE', 'CV', 'COVES',
136
+ 'CREEK', 'CRK', 'CRESCENT', 'CRES', 'CRSENT', 'CRSNT', 'CREST', 'CROSSING', 'CRSSNG', 'XING', 'CROSSROAD',
137
+ 'CROSSROADS', 'CURVE', 'DALE', 'DL', 'DAM', 'DM', 'DIV', 'DIVIDE', 'DV', 'DVD', 'DR', 'DRIV', 'DRIVE', 'DRV',
138
+ 'DRIVES', 'EST', 'ESTATE', 'ESTATES', 'ESTS', 'EXP', 'EXPR', 'EXPRESS', 'EXPRESSWAY', 'EXPW', 'EXPY', 'EXT',
139
+ 'EXTENSION', 'EXTN', 'EXTNSN', 'EXTS', 'FALL', 'FALLS', 'FLS', 'FERRY', 'FRRY', 'FRY', 'FIELD', 'FLD', 'FIELDS',
140
+ 'FLDS', 'FLAT', 'FLT', 'FLATS', 'FLTS', 'FORD', 'FRD', 'FORDS', 'FOREST', 'FORESTS', 'FRST', 'FORG', 'FORGE',
141
+ 'FRG', 'FORGES', 'FORK', 'FRK', 'FORKS', 'FRKS', 'FORT', 'FRT', 'FT', 'FREEWAY', 'FREEWY', 'FRWAY', 'FRWY',
142
+ 'FWY', 'GARDEN', 'GARDN', 'GRDEN', 'GRDN', 'GARDENS', 'GDNS', 'GRDNS', 'GATEWAY', 'GATEWY', 'GATWAY', 'GTWAY',
143
+ 'GTWY', 'GLEN', 'GLN', 'GLENS', 'GREEN', 'GRN', 'GREENS', 'GROV', 'GROVE', 'GRV', 'GROVES', 'HARB', 'HARBOR',
144
+ 'HARBR', 'HBR', 'HRBOR', 'HARBORS', 'HAVEN', 'HVN', 'HT', 'HTS', 'HIGHWAY', 'HIGHWY', 'HIWAY', 'HIWY', 'HWAY',
145
+ 'HWY', 'HILL', 'HL', 'HILLS', 'HLS', 'HLLW', 'HOLLOW', 'HOLLOWS', 'HOLW', 'HOLWS', 'INLT', 'INLET', 'IS', 'ISLAND',
146
+ 'ISLND', 'ISLANDS', 'ISLNDS', 'ISS', 'ISLE', 'ISLES', 'JCT', 'JCTION', 'JCTN', 'JUNCTION', 'JUNCTN', 'JUNCTON',
147
+ 'JCTNS', 'JCTS', 'JUNCTIONS', 'KEY', 'KY', 'KEYS', 'KYS', 'KNL', 'KNOL', 'KNOLL', 'KNLS', 'KNOLLS', 'LK',
148
+ 'LAKE', 'LKS', 'LAKES', 'LAND', 'LANDING', 'LNDG', 'LNDNG', 'LANE', 'LN', 'LGT', 'LIGHT', 'LIGHTS', 'LF',
149
+ 'LOAF', 'LCK', 'LOCK', 'LCKS', 'LOCKS', 'LDG', 'LDGE', 'LODG', 'LODGE', 'LOOP', 'LOOPS', 'MALL', 'MNR', 'MANOR',
150
+ 'MANORS', 'MNRS', 'MEADOW', 'MDW', 'MDWS', 'MEADOWS', 'MEDOWS', 'MEWS', 'MILL', 'MILLS', 'MISSN', 'MSSN',
151
+ 'MOTORWAY', 'MNT', 'MT', 'MOUNT', 'MNTAIN', 'MNTN', 'MOUNTAIN', 'MOUNTIN', 'MTIN', 'MTN', 'MNTNS', 'MOUNTAINS',
152
+ 'NCK', 'NECK', 'ORCH', 'ORCHARD', 'ORCHRD', 'OVAL', 'OVL', 'OVERPASS', 'PARADE' 'PARK', 'PRK', 'PARKS', 'PARKWAY',
153
+ 'PARKWY', 'PKWAY', 'PKWY', 'PKY', 'PARKWAYS', 'PKWYS', 'PASS', 'PASSAGE', 'PATH', 'PATHS', 'PIKE', 'PIKES',
154
+ 'PINE', 'PINES', 'PNES', 'PLACE', 'PL', 'PLAIN', 'PLN', 'PLAINS', 'PLNS', 'PLAZA', 'PLZ', 'PLZA', 'POINT', 'PT', 'POINTS',
155
+ 'PTS', 'PORT', 'PRT', 'PORTS', 'PRTS', 'PR', 'PRAIRIE', 'PRR', 'RAD', 'RADIAL', 'RADIEL', 'RADL', 'RAMP', 'RANCH',
156
+ 'RANCHES', 'RNCH', 'RNCHS', 'RAPID', 'RPD', 'RAPIDS', 'RPDS', 'REST', 'RST', 'RDG', 'RDGE', 'RIDGE', 'RDGS',
157
+ 'RIDGES', 'RIV', 'RIVER', 'RVR', 'RIVR', 'RD', 'ROAD', 'ROADS', 'RDS', 'ROUTE', 'ROW', 'RUE', 'RUN', 'SHL',
158
+ 'SHOAL', 'SHLS', 'SHOALS', 'SHOAR', 'SHORE', 'SHR', 'SHOARS', 'SHORES', 'SHRS', 'SKYWAY', 'SPG', 'SPNG', 'SPRING',
159
+ 'SPRNG', 'SPGS', 'SPNGS', 'SPRINGS', 'SPRNGS', 'SPUR', 'SPURS', 'SQ', 'SQR', 'SQRE', 'SQU', 'SQUARE', 'SQRS',
160
+ 'SQUARES', 'STA', 'STATION', 'STATN', 'STN', 'STRA', 'STRAV', 'STRAVEN', 'STRAVENUE', 'STRAVN', 'STRVN',
161
+ 'STRVNUE', 'STREAM', 'STREME', 'STRM', 'STREET', 'STRT', 'ST', 'STR', 'STREETS', 'SMT', 'SUMIT', 'SUMITT',
162
+ 'SUMMIT', 'TER', 'TERR', 'TERRACE', 'THROUGHWAY', 'TRACE', 'TRACES', 'TRCE', 'TRACK', 'TRACKS', 'TRAK', 'TRK',
163
+ 'TRKS', 'TRAFFICWAY', 'TRAIL', 'TRAILS', 'TRL', 'TRLS', 'TRAILER', 'TRLR', 'TRLRS', 'TUNEL', 'TUNL', 'TUNLS',
164
+ 'TUNNEL', 'TUNNELS', 'TUNNL', 'TRNPK', 'TURNPIKE', 'TURNPK', 'UNDERPASS', 'UN', 'UNION', 'UNIONS', 'VALLEY',
165
+ 'VALLY', 'VLLY', 'VLY', 'VALLEYS', 'VLYS', 'VDCT', 'VIA', 'VIADCT', 'VIADUCT', 'VIEW', 'VW', 'VIEWS', 'VWS',
166
+ 'VILL', 'VILLAG', 'VILLAGE', 'VILLG', 'VILLIAGE', 'VLG', 'VILLAGES', 'VLGS', 'VILLE', 'VL', 'VIS', 'VIST',
167
+ 'VISTA', 'VST', 'VSTA', 'WALK', 'WALKS', 'WALL', 'WY', 'WAY', 'WAYS', 'WELL', 'WELLS', 'WLS'
168
+ ]
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,3 @@
1
+ module UkAddressParser
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'uk_address_parser/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "uk_address_parser"
8
+ spec.version = UkAddressParser::VERSION
9
+ spec.authors = ["Rob Nichols"]
10
+ spec.email = ["rob@undervale.co.uk"]
11
+
12
+ spec.summary = %q{Tool to convert a UK address string into its constituent parts.}
13
+ spec.homepage = "https://github.com/reggieb/uk_address_parser"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_development_dependency "bundler", "~> 1.12"
20
+ spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_development_dependency "minitest", "~> 5.0"
22
+ spec.add_development_dependency "faker", "~> 1.6"
23
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uk_address_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Rob Nichols
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ description:
70
+ email:
71
+ - rob@undervale.co.uk
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .travis.yml
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - bin/console
83
+ - bin/setup
84
+ - lib/uk_address_parser.rb
85
+ - lib/uk_address_parser/address_parser.rb
86
+ - lib/uk_address_parser/version.rb
87
+ - uk_address_parser.gemspec
88
+ homepage: https://github.com/reggieb/uk_address_parser
89
+ licenses:
90
+ - MIT
91
+ metadata: {}
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 2.4.8
109
+ signing_key:
110
+ specification_version: 4
111
+ summary: Tool to convert a UK address string into its constituent parts.
112
+ test_files: []