perambulate 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,7 @@
1
+ Please include RSpec tests for contributions.
2
+
3
+ That's It?!
4
+ ===========
5
+
6
+ Perambulate is only a baby project at the moment... As of this writing it doesn't even work yet. So putting up more
7
+ barriers to contribution would be like erecting a gate for a pile of scrap.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,41 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ perambulate (0.0.3)
5
+ lexr (~> 0.3.1)
6
+ rake (~> 0.9.2.2)
7
+ whittle (~> 0.0.8)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activesupport (3.2.9)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ diff-lcs (1.1.3)
16
+ factory_girl (4.1.0)
17
+ activesupport (>= 3.0.0)
18
+ i18n (0.6.1)
19
+ lexr (0.3.1)
20
+ minitest (3.3.0)
21
+ multi_json (1.3.7)
22
+ rake (0.9.2.2)
23
+ rspec (2.10.0)
24
+ rspec-core (~> 2.10.0)
25
+ rspec-expectations (~> 2.10.0)
26
+ rspec-mocks (~> 2.10.0)
27
+ rspec-core (2.10.1)
28
+ rspec-expectations (2.10.0)
29
+ diff-lcs (~> 1.1.3)
30
+ rspec-mocks (2.10.1)
31
+ whittle (0.0.8)
32
+
33
+ PLATFORMS
34
+ java
35
+ ruby
36
+
37
+ DEPENDENCIES
38
+ factory_girl (~> 4.1.0)
39
+ minitest (~> 3.3.0)
40
+ perambulate!
41
+ rspec (~> 2.10.0)
data/README ADDED
@@ -0,0 +1,36 @@
1
+ Perambulate is a library for parsing addresses in natural language.
2
+
3
+ As Seen On TV(tm), Perambulate makes it easier for you to get customer addresses in a normal, conversational form.
4
+ No more thousands of input boxes, drop-downs and annoying conversational logic. Simply ask for their address
5
+ and run it through Perambulate.
6
+
7
+ Limitations
8
+ ===========
9
+ Currently, this tool does nothing. It's still in very early stages and doesn't even have a concrete architecture yet.
10
+
11
+ You *CAN* expect constant breaking changes on Master.
12
+
13
+ The first iteration will not handle countries: To make things simpler, you need to know what country address grammar you're
14
+ attempting to parse before parsing it.
15
+
16
+ The first iteration is being done on Australian style addresses because that's what I'm familiar with. Sorry, Matz.
17
+
18
+ Goals
19
+ =====
20
+
21
+ I want Perambulate to be an address management toolkit for developers. Desired features are:
22
+
23
+ * Chunk any given address
24
+ * Offer a likilhood of any string being a specific set of address units
25
+ * Validate that any chunk is a member of a valid set (ie restrict 'suburb' to a defined set)
26
+ * Have a variety of address parsers to suit specific combinations of
27
+
28
+ Architecture
29
+ ============
30
+
31
+ This section was last updated for version: 0.0.1
32
+ If this is not the latest version of the gem, this document is out of date. You're most welcome to correct everything below
33
+ this paragraph but please don't change the version without checking that the following is true. I don't want to lie to
34
+ other developers ;)
35
+
36
+ Perambulate is the library module where all user interaction functions live, including configuration.
data/Rakefile ADDED
File without changes
@@ -0,0 +1,15 @@
1
+ module Perambulate
2
+ class Address
3
+ attr_accessor :street_number, :street_name, :suburb, :designation, :postcode, :state
4
+
5
+ def initialize(options = {})
6
+ @street_number = options[:street_number]
7
+ @street_name = options[:street_name]
8
+ @designation = options[:designation]
9
+ @suburb = options[:suburb]
10
+ @postcode = options[:postcode]
11
+ @state = options[:state]
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ module Perambulate
2
+ class Designations
3
+ AVENUE = :avenue
4
+
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ require "lexr"
2
+
3
+ module Perambulate
4
+ AussieLexer = Lexr.that {
5
+ ignores /\s+/ => :whitespace
6
+
7
+ matches /\d+/ => :number
8
+ matches /Road|road|rd|Rd|RD/ => :designation
9
+ matches /[,\/-]/ => :separator
10
+ matches /[a-zA-Z]+/ => :place_word
11
+ }
12
+ end
@@ -0,0 +1,62 @@
1
+ require "whittle"
2
+
3
+ module Perambulate
4
+ class Parser < Whittle::Parser
5
+
6
+ # Terminal Symbols -- ORDER MATTERS
7
+ rule(:wsp => /\s+/).skip!
8
+ rule(:number => /\d+/)
9
+ rule(:unit_symbol => /Unit|Num|Number|No/i)
10
+ rule(:unit_separator => /\/|-|,/)
11
+ rule(:street_separator => /,/)
12
+ rule(:designation => /Street/)
13
+
14
+ rule(:word => /[a-zA-Z]+/)
15
+
16
+ rule(:unit_prefix) do |r|
17
+ r[]
18
+ r[:unit_symbol]
19
+
20
+ end
21
+
22
+ rule(:unit_number) do |r|
23
+ r[:unit_prefix, :number, :unit_separator].as {|_, b, _| b}
24
+ r[:number, :unit_separator].as {|a, _| a}
25
+ end
26
+
27
+ rule(:street_number_block) do |r|
28
+ r[:unit_number, :number].as {|a,b| {:unit_number => a, :street_number => b}}
29
+ r[:number].as {|a| {:street_number => a}}
30
+ end
31
+
32
+ rule(:name) do |r|
33
+ r[:name, :word].as {|a,b| "#{a} #{b}"}
34
+ r[:word]
35
+ end
36
+
37
+ rule(:street_specification) do |r|
38
+ r[:name, :designation].as {|a,b| {:street_name => a, :designation => b}}
39
+ end
40
+
41
+ rule(:street_block) do |r|
42
+ r[:street_number_block, :street_specification].as {|a,b| a.merge(b)}
43
+ r[:street_specification]
44
+ end
45
+
46
+ rule(:addr) do |r|
47
+ r[:street_block, :optional_suburb_separator, :name].as {|a,_,b| a.merge({:suburb => b})}
48
+ r[:street_block, :name].as {|a,b| a.merge({:suburb => b})}
49
+ r[:street_block]
50
+ r[:name].as {|a| {:suburb => a}}
51
+ end
52
+
53
+ rule(:optional_suburb_separator) do |r|
54
+ r[:street_separator]
55
+ r[:unit_separator]
56
+
57
+
58
+ end
59
+
60
+ start(:addr)
61
+ end
62
+ end
@@ -0,0 +1,3 @@
1
+ module Perambulate
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,25 @@
1
+ # Require ALL THE THINGS
2
+ require "perambulate/address/address"
3
+ require "perambulate/lexer/aussie_lexer"
4
+ require "perambulate/parser/parser"
5
+ require "perambulate/designations"
6
+
7
+
8
+ module Perambulate
9
+
10
+ @@configuration = {:default_parser => "Australian"}
11
+
12
+ def self.config
13
+ return @@configuration
14
+ end
15
+
16
+ def self.configure(&block)
17
+ yield @@configuration
18
+ end
19
+
20
+ def self.create_address(address_string)
21
+ lexemes = AussieLexer.new(address_string)
22
+
23
+ end
24
+ end
25
+
@@ -0,0 +1,25 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "perambulate/version"
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = 'perambulate'
6
+ spec.version = Perambulate::VERSION
7
+ spec.date = '2012-11-28'
8
+ spec.summary = "Take addresses as a string. Get back useful details."
9
+ spec.description = "Perambulate is an address parsing library for natural language addresses. It provides a broken-down
10
+ version of a passed address, allowing you to get one input value and do useful things on the chunks."
11
+ spec.authors = ["Dylan Lacey"]
12
+ spec.email = 'perambulate@dylanlacey.com'
13
+ spec.files = `git ls-files`.split("\n")
14
+ spec.homepage = "http://www.github.com/dylanlacey/Perambulate"
15
+
16
+
17
+ spec.add_runtime_dependency "lexr", '~> 0.3.1'
18
+ spec.add_runtime_dependency "rake", '~> 0.9.2.2'
19
+ spec.add_runtime_dependency "whittle", '~> 0.0.8'
20
+
21
+ spec.add_development_dependency "minitest", '~> 3.3.0'
22
+ spec.add_development_dependency "rspec", '~> 2.10.0'
23
+ spec.add_development_dependency "factory_girl", '~> 4.1.0'
24
+
25
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :address, :class => Perambulate::Address do
3
+
4
+ end
5
+ end
@@ -0,0 +1,36 @@
1
+ require "rspec"
2
+ require "lib/perambulate"
3
+ require "factory_girl"
4
+
5
+ FactoryGirl.find_definitions
6
+
7
+ describe "Address Parsing Interface" do
8
+
9
+ describe "Given Australian addresses" do
10
+ it "Should deal with a compact Australia address" do
11
+ test_address = "75 Boston Avenue, Coorparoo QLD"
12
+
13
+ expected = FactoryGirl.build(:address, :street_number => "75",
14
+ :street_name => "Boston",
15
+ :designation => Perambulate::Designations::AVENUE,
16
+ :suburb => "Coorparoo",
17
+ :state => "Queensland"
18
+ )
19
+ end
20
+
21
+ it "Should deal with an expanded Australian address" do
22
+ test_address = "75 Boston Avenue, Coorparoo Queensland"
23
+ end
24
+
25
+ it "Should deal with a unit number compact Australiam address" do
26
+ test_address = "Unit 1, 75 Boston Avenue, Coorparoo QLD"
27
+ end
28
+
29
+ it "Should deal with a post code" do
30
+ test_address = "73 Boston Avenue, Coorparoo QLD 4234"
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,37 @@
1
+ require "rspec"
2
+ require "lib/perambulate"
3
+
4
+ describe "A new address" do
5
+ describe "Passed an options hash" do
6
+ let(:address) {Perambulate::Address.new( :street_number => "75",
7
+ :street_name=>"Boston",
8
+ :designation => Perambulate::Designations::AVENUE,
9
+ :suburb => "Coorparoo",
10
+ :postcode => "4104",
11
+ :state => "QLD"
12
+ )}
13
+
14
+ it "should have instantiated with its values set" do
15
+ address.street_number.should == "75"
16
+ address.street_name.should == "Boston"
17
+ address.designation.should == Perambulate::Designations::AVENUE
18
+ address.suburb.should == "Coorparoo"
19
+ address.postcode.should == "4104"
20
+ address.state.should == "QLD"
21
+ end
22
+
23
+ end
24
+
25
+ describe "Not passed an options hash" do
26
+ let (:address) {Perambulate::Address.new()}
27
+
28
+ it "should have nils for all options" do
29
+ address.street_number.should be_nil
30
+ address.street_name.should be_nil
31
+ address.designation.should be_nil
32
+ address.suburb.should be_nil
33
+ address.postcode.should be_nil
34
+ address.state.should be_nil
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,76 @@
1
+ require "test/spec/spec_helper"
2
+
3
+ describe "AussieLexer" do
4
+
5
+ context "Single Words" do
6
+
7
+ it "should return separator" do
8
+ parsed = Perambulate::AussieLexer.new(",").next
9
+
10
+ parsed.type.should eql :separator
11
+ parsed.value.should eql ","
12
+ end
13
+
14
+ it "should return separator" do
15
+ parsed = Perambulate::AussieLexer.new("-").next
16
+
17
+ parsed.type.should eql :separator
18
+ parsed.value.should eql "-"
19
+ end
20
+
21
+ it "should return separator" do
22
+ parsed = Perambulate::AussieLexer.new("/").next
23
+
24
+ parsed.type.should eql :separator
25
+ parsed.value.should eql "/"
26
+ end
27
+ end
28
+
29
+ context "Normal Street Address" do
30
+ let(:lexer) {Perambulate::AussieLexer.new("775 London Road Chandler")}
31
+
32
+ it "should return four components" do
33
+ number = lexer.next
34
+ number.type.should eql :number
35
+ number.value.should eql "775"
36
+
37
+ street = lexer.next
38
+ street.type.should eql :place_word
39
+ street.value.should eql "London"
40
+
41
+ designation = lexer.next
42
+ designation.type.should eql :designation
43
+ designation.value.should eql "Road"
44
+
45
+ suburb = lexer.next
46
+ suburb.type.should eql :place_word
47
+ suburb.value.should eql "Chandler"
48
+ end
49
+ end
50
+
51
+ context "Separated Street Address" do
52
+ let (:lexer) {Perambulate::AussieLexer.new("775 London Road, Chandler")}
53
+
54
+ it "should return all components" do
55
+ expected_results = [
56
+ [:number, "775"],
57
+ [:place_word, "London"],
58
+ [:designation, "Road"],
59
+ [:separator, ","],
60
+ [:place_word, "Chandler"]
61
+ ]
62
+ expected_iterator = expected_results.each
63
+ actual = lexer.next
64
+
65
+ until lexer.end?
66
+ result = expected_iterator.next
67
+
68
+ puts "Actual: #{actual} expected #{result}"
69
+ actual.type.should eql result[0]
70
+ actual.value.should eql result[1]
71
+
72
+ actual = lexer.next
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,92 @@
1
+ require "test/spec/spec_helper"
2
+
3
+ describe "Parser" do
4
+ context "When short-circuited with single terminals" do
5
+ let(:parser){Perambulate::Parser.new()}
6
+ it "should return a digit for street number" do
7
+ parser.parse("48", :rule => :street_number_block).should eql({:street_number => "48"})
8
+
9
+ end
10
+
11
+ it "should return street for Zigzag" do
12
+ parser.parse("Zigzag", :rule => :name).should eql "Zigzag"
13
+ end
14
+
15
+ it "should not return anything" do
16
+ parser.parse("48a", :rule => :street_number_block).should raise_exception (Whittle::ParseError)
17
+ end
18
+
19
+ it "should correctly parse a designation" do
20
+ parser.parse("Street", :rule => :designation).should eql "Street"
21
+ end
22
+ end
23
+
24
+ context "When short-circuited with street names" do
25
+ let(:parser){Perambulate::Parser.new()}
26
+
27
+ it "should return a hash with the name and number" do
28
+ parser.parse("48 Zigzag Street", :rule=>:street_block).should eql({:street_number => "48", :street_name => "Zigzag", :designation => "Street"})
29
+ end
30
+ end
31
+
32
+ context "When given unit numbers" do
33
+ let(:parser){Perambulate::Parser.new()}
34
+
35
+ it "should return a unit and street number for slashes" do
36
+ parser.parse("1/65", :rule => :street_number_block).should eql({:unit_number => "1", :street_number => "65"})
37
+ end
38
+
39
+ it "should return a unit and street number for dashes" do
40
+ parser.parse("1-65", :rule => :street_number_block).should eql({:unit_number => "1", :street_number => "65"})
41
+ end
42
+
43
+ it "should return a unit and street number for commas" do
44
+ parser.parse("1,65", :rule => :street_number_block).should eql({:unit_number => "1", :street_number => "65"})
45
+ end
46
+
47
+ it "should return a unit and street number when surrounded by spaces" do
48
+ parser.parse("1 / 65", :rule => :street_number_block).should eql({:unit_number => "1", :street_number => "65"})
49
+ end
50
+
51
+ it "should return a unit and street number when preceeded by unit" do
52
+ parser.parse("Unit 5 / 65", :rule => :street_number_block).should eql({:unit_number => "5", :street_number => "65"})
53
+ end
54
+
55
+ end
56
+ context "Parsing completely" do
57
+ let(:parser){Perambulate::Parser.new()}
58
+
59
+ it "should return a hash with just street details" do
60
+ parser.parse("Zigzag Street").should eql({:street_name => "Zigzag", :designation => "Street"})
61
+ end
62
+
63
+ its "should return a hash with just number, street details" do
64
+ parser.parse("48 Zigzag Street").should eql({:street_number => "48", :street_name => "Zigzag", :designation => "Street"})
65
+ end
66
+
67
+ it "should return a hash with just a suburb" do
68
+ parser.parse("Red Hill").should eql({:suburb => "Red Hill"})
69
+ end
70
+
71
+ it "should return a hash with street name and suburb" do
72
+ parser.parse("Zigzag Street, Red Hill").should eql({:street_name => "Zigzag", :designation => "Street", :suburb => "Red Hill"})
73
+ end
74
+
75
+ it "should return a hash with street name and suburb without a comma" do
76
+ parser.parse("Zigzag Street Red Hill").should eql({:street_name => "Zigzag", :designation => "Street", :suburb => "Red Hill"})
77
+ end
78
+
79
+ it "should return a hash with everything" do
80
+ parser.parse("48 Zigzag Street, Red Hill").should eql({:street_number => "48", :street_name => "Zigzag", :designation => "Street", :suburb=>"Red Hill"})
81
+ end
82
+
83
+ it "should return a unit number for a street address" do
84
+ parser.parse("1/48 Zigzag Street, Red Hill").should eql({:unit_number => "1", :street_number=>"48", :street_name => "Zigzag", :designation=>"Street", :suburb=>"Red Hill"})
85
+ end
86
+
87
+ it "should return a unit number for a street address starting with unit" do
88
+ parser.parse("Unit 1/48 Zigzag Street, Red Hill").should eql({:unit_number => "1", :street_number=>"48", :street_name => "Zigzag", :designation=>"Street", :suburb=>"Red Hill"})
89
+ end
90
+
91
+ end
92
+ end
@@ -0,0 +1,47 @@
1
+ require "test/spec/spec_helper"
2
+
3
+ describe "Perambulate" do
4
+ describe "As newly included" do
5
+ it "should have 'Australian' as the default parsing strategy" do
6
+ Perambulate.config[:default_parser].should eq "Australian"
7
+ end
8
+ end
9
+
10
+ it "should have a Config hash" do
11
+ Perambulate.config.class.to_s.should == "Hash"
12
+ end
13
+
14
+ it "should take a Config block" do
15
+ lambda {
16
+ Perambulate.configure do |config|
17
+
18
+ end
19
+ }.should_not raise_error
20
+ end
21
+
22
+ describe "with a custom configuration" do
23
+ before(:each) do
24
+ Perambulate.configure do |config|
25
+ config[:default_parser] = "Finnish"
26
+ end
27
+ end
28
+
29
+ it "should persist configuration values" do
30
+ Perambulate.config[:default_parser].should eq "Finnish"
31
+ end
32
+ end
33
+
34
+ describe ".create_address" do
35
+
36
+ context "Given a standard Australian Address with no postcode" do
37
+ let(:address) {Perambulate.create_address("75 London Road, Chandler")}
38
+
39
+ it "parses a street name, designation and suburb" do
40
+ address.street_name.should eql "London"
41
+ address.street_number.should eql "75"
42
+ address.designation.should eql "Road"
43
+ address.suburb.should eql "Chandler"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,2 @@
1
+ require "rspec"
2
+ require "lib/perambulate"
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "../", "lib")
2
+
3
+ require "perambulate"
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: perambulate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dylan Lacey
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: lexr
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.3.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.3.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.9.2.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.2.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: whittle
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.0.8
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.8
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 3.3.0
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 3.3.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.10.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.10.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: factory_girl
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 4.1.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 4.1.0
110
+ description: ! "Perambulate is an address parsing library for natural language addresses.
111
+ \ It provides a broken-down\n version of a passed address,
112
+ allowing you to get one input value and do useful things on the chunks."
113
+ email: perambulate@dylanlacey.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - CONTRIBUTING.md
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - README
122
+ - Rakefile
123
+ - lib/perambulate.rb
124
+ - lib/perambulate/address/address.rb
125
+ - lib/perambulate/designations.rb
126
+ - lib/perambulate/lexer/aussie_lexer.rb
127
+ - lib/perambulate/parser/parser.rb
128
+ - lib/perambulate/version.rb
129
+ - perambulate.gemspec
130
+ - test/factories/address_factory.rb
131
+ - test/spec/address_integration_spec.rb
132
+ - test/spec/address_model_spec.rb
133
+ - test/spec/aussie_lexer_spec.rb
134
+ - test/spec/parser_spec.rb
135
+ - test/spec/perambulate_spec.rb
136
+ - test/spec/spec_helper.rb
137
+ - test/test_helper.rb
138
+ homepage: http://www.github.com/dylanlacey/Perambulate
139
+ licenses: []
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 1.8.24
159
+ signing_key:
160
+ specification_version: 3
161
+ summary: Take addresses as a string. Get back useful details.
162
+ test_files: []