geo-spider 0.1.3 → 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.
@@ -11,14 +11,14 @@ module GeoSpider
11
11
  REGEXP = /(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])(\s*)[0-9][ABD-HJLNP-UW-Z]{2})/i
12
12
 
13
13
  def locations
14
- results = @element.inner_html.scan(REGEXP)
14
+ results = @element.inner_text.scan(REGEXP)
15
15
  results = results.map(&:first)
16
16
 
17
17
  found_locations = []
18
18
 
19
19
  results.each do |result|
20
20
  begin
21
- p = geocoder.locate(result)
21
+ p = geocoder.locate(:zip => result, :country => "GB")
22
22
  found_locations << Location.new(:latitude => p.latitude, :longitude => p.longitude, :title => result)
23
23
  rescue Graticule::Error => e
24
24
  next
@@ -27,7 +27,7 @@ module GeoSpider
27
27
  return found_locations
28
28
  end
29
29
 
30
- # You need to set a valid Yahoo API key before the UK postcode geocoding will work. Yahoo have vastly better UK postcode accuracy than the other large mapping providers, apart from perhaps Multimap.
30
+ # You need to set a valid Multimap API key before the UK postcode geocoding will work. Multimap have the most accurate UK postcode geocoding I've discovered.
31
31
 
32
32
  def self.api_key=(api_key)
33
33
  @@api_key = api_key
@@ -36,8 +36,8 @@ module GeoSpider
36
36
  private
37
37
 
38
38
  def geocoder
39
- raise "No Yahoo API key set" unless @@api_key
40
- Graticule.service(:yahoo).new @@api_key
39
+ raise "No Multimap API key set" unless @@api_key
40
+ Graticule.service(:multimap).new @@api_key
41
41
  end
42
42
 
43
43
  end
@@ -1,8 +1,8 @@
1
1
  module GeoSpider
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 1
5
- TINY = 3
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -25,9 +25,9 @@ describe Page, "with a single postcode which is being parsed" do
25
25
  OpenURI.should_receive(:open_uri).and_return(page_as_string('single_postcode.html'))
26
26
  @page = Page.new("http://www.example.com")
27
27
  GeoSpider::Extractors::Postcode.api_key = "waffles"
28
- mock_geocoder_result = OpenStruct.new( {:location => [51.000000, -1.000000]} )
28
+ mock_geocoder = OpenStruct.new( { :locate => OpenStruct.new({ :longitude => -1.000000, :latitude => 51.000000 })})
29
29
  Graticule.stub!(:service)
30
- Graticule.service.should_receive(:new).and_return(mock_geocoder_result)
30
+ Graticule.service.should_receive(:new).and_return(mock_geocoder)
31
31
  end
32
32
 
33
33
  it "should find one location" do
@@ -49,9 +49,9 @@ describe Page, "with multiple microformats and postcodes being parsed" do
49
49
  OpenURI.should_receive(:open_uri).and_return(page_as_string('multiple_postcodes_and_microformats.html'))
50
50
  @page = Page.new("http://www.example.com")
51
51
 
52
- mock_geocoder_result = OpenStruct.new( {:location => [51.000000, -1.000000]} )
52
+ mock_geocoder = OpenStruct.new( { :locate => OpenStruct.new({ :longitude => -1.000000, :latitude => 51.000000 })})
53
53
  Graticule.stub!(:service)
54
- Graticule.service.should_receive(:new).twice.and_return(mock_geocoder_result)
54
+ Graticule.service.should_receive(:new).twice.and_return(mock_geocoder)
55
55
  end
56
56
 
57
57
  it "should find four locations" do
@@ -122,4 +122,17 @@ describe Page, "which is finding the title" do
122
122
  @page.title.should == "Heading 1"
123
123
  end
124
124
  end
125
+ end
126
+
127
+ describe Page, "which is parsing a page with a string in a URL that happens to match a postcode" do
128
+
129
+ before(:each) do
130
+ OpenURI.should_receive(:open_uri).and_return(page_as_string('postcode_in_url.html'))
131
+ @page = Page.new("http://www.example.com")
132
+ end
133
+
134
+ it "should not find any locations" do
135
+ @page.locations.should be_empty
136
+ end
137
+
125
138
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo-spider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Taylor
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-01 00:00:00 +01:00
12
+ date: 2008-10-03 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency