graticule 0.2.2 → 0.2.3

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.
Files changed (43) hide show
  1. data/CHANGELOG.txt +4 -0
  2. data/Manifest.txt +9 -0
  3. data/Rakefile +69 -0
  4. data/lib/graticule.rb +2 -0
  5. data/lib/graticule/cli.rb +6 -4
  6. data/lib/graticule/geocoder/base.rb +112 -0
  7. data/lib/graticule/geocoder/geocoder_us.rb +1 -1
  8. data/lib/graticule/geocoder/google.rb +5 -5
  9. data/lib/graticule/geocoder/host_ip.rb +9 -18
  10. data/lib/graticule/geocoder/local_search_maps.rb +4 -4
  11. data/lib/graticule/geocoder/meta_carta.rb +1 -6
  12. data/lib/graticule/geocoder/rest.rb +6 -98
  13. data/lib/graticule/geocoder/yahoo.rb +1 -13
  14. data/lib/graticule/version.rb +1 -1
  15. data/site/index.html +114 -0
  16. data/site/plugin.html +82 -0
  17. data/site/stylesheets/style.css +73 -0
  18. data/test/config.yml.default +36 -0
  19. data/test/fixtures/responses/geocoder_us/success.xml +13 -5
  20. data/test/fixtures/responses/geocoder_us/unknown.xml +1 -1
  21. data/test/fixtures/responses/google/badkey.xml +1 -10
  22. data/test/fixtures/responses/google/missing_address.xml +1 -10
  23. data/test/fixtures/responses/google/partial.xml +1 -0
  24. data/test/fixtures/responses/google/success.xml +1 -37
  25. data/test/fixtures/responses/google/unavailable.xml +1 -10
  26. data/test/fixtures/responses/google/unknown_address.xml +1 -10
  27. data/test/fixtures/responses/host_ip/private.txt +1 -1
  28. data/test/fixtures/responses/host_ip/success.txt +1 -1
  29. data/test/fixtures/responses/host_ip/unknown.txt +1 -1
  30. data/test/fixtures/responses/local_search_maps/empty.txt +1 -0
  31. data/test/fixtures/responses/local_search_maps/not_found.txt +1 -0
  32. data/test/fixtures/responses/local_search_maps/success.txt +1 -1
  33. data/test/fixtures/responses/meta_carta/bad_address.xml +15 -7
  34. data/test/fixtures/responses/meta_carta/success.xml +29 -21
  35. data/test/fixtures/responses/yahoo/success.xml +2 -2
  36. data/test/fixtures/responses/yahoo/unknown_address.xml +6 -6
  37. data/test/mocks/uri.rb +3 -2
  38. data/test/unit/graticule/geocoder/google_test.rb +14 -0
  39. data/test/unit/graticule/geocoder/host_ip_test.rb +1 -0
  40. data/test/unit/graticule/geocoder/meta_carta_test.rb +1 -1
  41. data/test/unit/graticule/location_test.rb +1 -1
  42. metadata +10 -3
  43. data/test/unit/graticule/cli_test.rb +0 -26
@@ -1,10 +1 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <kml xmlns="http://earth.google.com/kml/2.0">
3
- <Response>
4
- <name>1600</name>
5
- <Status>
6
- <code>602</code>
7
- <request>geocode</request>
8
- </Status>
9
- </Response>
10
- </kml>
1
+ <?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.1"><Response><name>1600</name><Status><code>602</code><request>geocode</request></Status></Response></kml>
@@ -1,4 +1,4 @@
1
1
  Country: (Private Address) (XX)
2
2
  City: (Private Address)
3
3
  Latitude:
4
- Longitude:
4
+ Longitude:
@@ -1,4 +1,4 @@
1
1
  Country: UNITED STATES (US)
2
2
  City: Mountain View, CA
3
3
  Latitude: 37.402
4
- Longitude: -122.078
4
+ Longitude: -122.078
@@ -1,4 +1,4 @@
1
1
  Country: (Unknown Country?) (XX)
2
2
  City: (Unknown City?)
3
3
  Latitude:
4
- Longitude:
4
+ Longitude:
@@ -0,0 +1 @@
1
+ alert('Please provide a location');
@@ -0,0 +1 @@
1
+ alert('location not found');
@@ -1 +1 @@
1
- map.centerAndZoom(new GPoint(-0.130427, 51.510036), 4);
1
+ map.centerAndZoom(new GPoint(-0.130427, 51.510036), 4);
@@ -1,9 +1,17 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
2
3
  <!DOCTYPE Locations SYSTEM "Locations.dtd">
3
- <Locations xmlns:gml="http://www.opengis.net/gml" CreatedBy="MetaCarta GeoParser v3.5.0-labs-alpha" CreatedOn="Sat Jun 17 02:05:42 2006" ConvertedFromBinaryFormat="False" InputByteLength="0">
4
- <ViewBox>
5
- <gml:Box srsName="epsg:4326">
6
- <gml:coordinates>-90.000000,-180.000000 90.000000,180.000000</gml:coordinates>
7
- </gml:Box>
8
- </ViewBox>
4
+
5
+ <Locations
6
+ xmlns:gml="http://www.opengis.net/gml"
7
+ CreatedBy="MetaCarta GeoParser v3.7.0-labs"
8
+ CreatedOn="Wed Apr 25 22:12:33 2007"
9
+ ConvertedFromBinaryFormat="0"
10
+ InputByteLength="0">
11
+ <ViewBox>
12
+
13
+ <gml:Box srsName="epsg:4326">
14
+ <gml:coordinates>-180.000000,-90.000000 180.000000,90.000000</gml:coordinates>
15
+ </gml:Box>
16
+ </ViewBox>
9
17
  </Locations>
@@ -1,23 +1,31 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+
2
3
  <!DOCTYPE Locations SYSTEM "Locations.dtd">
3
- <Locations xmlns:gml="http://www.opengis.net/gml" CreatedBy="MetaCarta GeoParser v3.5.0-labs-alpha" CreatedOn="Thu Jun 15 23:56:50 2006" ConvertedFromBinaryFormat="False" InputByteLength="0">
4
- <ViewBox>
5
- <gml:Box srsName="epsg:4326">
6
- <gml:coordinates>26.238611,37.293889 40.438611,51.493889</gml:coordinates>
7
- </gml:Box>
8
- </ViewBox>
9
- <Location Name="Baghdad" Type="PPLC" Population="5672516" Hierarchy="Iraq/Baghdad/Baghdad">
10
- <ViewBox>
11
- <gml:Box srsName="epsg:4326">
12
- <gml:coordinates>26.238611,37.293889 40.438611,51.493889</gml:coordinates>
13
- </gml:Box>
14
- </ViewBox>
15
- <RemainingQuery/>
16
- <Confidence>0.195185</Confidence>
17
- <Centroid>
18
- <gml:Point>
19
- <gml:coordinates>44.393889,33.338611</gml:coordinates>
20
- </gml:Point>
21
- </Centroid>
22
- </Location>
4
+
5
+ <Locations
6
+ xmlns:gml="http://www.opengis.net/gml"
7
+ CreatedBy="MetaCarta GeoParser v3.7.0-labs"
8
+ CreatedOn="Wed Apr 25 22:12:33 2007"
9
+ ConvertedFromBinaryFormat="0"
10
+ InputByteLength="0">
11
+ <ViewBox>
12
+
13
+ <gml:Box srsName="epsg:4326">
14
+ <gml:coordinates>43.593900,32.538600 45.193900,34.138600</gml:coordinates>
15
+ </gml:Box>
16
+ </ViewBox>
17
+ <Location
18
+
19
+ Name="Baghdad"
20
+ Type=""
21
+ Population="-1"
22
+ Hierarchy="">
23
+ <ViewBox>
24
+ <gml:Box srsName="epsg:4326">
25
+ <gml:coordinates>43.593900,32.538600 45.193900,34.138600</gml:coordinates>
26
+ </gml:Box>
27
+ </ViewBox>
28
+ <RemainingQuery></RemainingQuery>
29
+ <Confidence>0.566875</Confidence> <Centroid><gml:Point><gml:coordinates>44.393900000000002,33.3386</gml:coordinates></gml:Point></Centroid>
30
+ </Location>
23
31
  </Locations>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0"?>
2
- <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="address"><Latitude>37.416384</Latitude><Longitude>-122.024853</Longitude><Address>701 FIRST AVE</Address><City>SUNNYVALE</City><State>CA</State><Zip>94089-1019</Zip><Country>US</Country></Result></ResultSet>
3
- <!-- ws01.search.re2.yahoo.com compressed/chunked Sun Oct 15 18:23:09 PDT 2006 -->
2
+ <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd"><Result precision="address" warning="The exact location could not be found, here is the closest match: 701 First Ave, Sunnyvale, CA 94089"><Latitude>37.416384</Latitude><Longitude>-122.024853</Longitude><Address>701 FIRST AVE</Address><City>SUNNYVALE</City><State>CA</State><Zip>94089-1019</Zip><Country>US</Country></Result></ResultSet>
3
+ <!-- ws06.search.re2.yahoo.com uncompressed/chunked Wed Apr 25 15:13:01 PDT 2007 -->
@@ -1,6 +1,6 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Error xmlns="urn:yahoo:api">
3
- The following errors were detected:
4
- <Message>unable to parse location</Message>
5
- </Error>
6
- <!-- ws02.search.scd.yahoo.com uncompressed/chunked Thu Jun 8 15:53:20 PDT 2006 -->
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Error xmlns="urn:yahoo:api">
3
+ The following errors were detected:
4
+ <Message>unable to parse location</Message>
5
+ </Error>
6
+ <!-- ws05.search.re2.yahoo.com uncompressed/chunked Wed Apr 25 15:13:01 PDT 2007 -->
data/test/mocks/uri.rb CHANGED
@@ -40,11 +40,12 @@ class URI::HTTP # :nodoc:
40
40
 
41
41
  alias original_open open
42
42
 
43
- def open
43
+ def open(*args)
44
44
  self.class.uris << self.to_s
45
45
  io = StringIO.new(self.class.responses.shift)
46
46
  OpenURI::Meta.init(io)
47
- yield io
47
+ yield io if block_given?
48
+ io
48
49
  end
49
50
 
50
51
  end
@@ -24,6 +24,20 @@ module Graticule
24
24
  )
25
25
  assert_equal location, @geocoder.locate('1600 Amphitheatre Parkway, Mountain View, CA')
26
26
  end
27
+
28
+ def test_partial
29
+ return unless prepare_response(:partial)
30
+
31
+ location = Location.new(
32
+ :locality => "San Francisco",
33
+ :region => "CA",
34
+ :country => "US",
35
+ :longitude => -122.418333,
36
+ :latitude => 37.775000
37
+ )
38
+
39
+ assert_equal location, @geocoder.locate('sf ca')
40
+ end
27
41
 
28
42
  def test_bad_key
29
43
  return unless prepare_response(:badkey)
@@ -28,6 +28,7 @@ module Graticule
28
28
  prepare_response :private
29
29
  assert_raises(AddressError) { @geocoder.locate('127.0.0.1') }
30
30
  end
31
+
31
32
  private
32
33
 
33
34
  def prepare_response(id = :success)
@@ -14,7 +14,7 @@ module Graticule
14
14
  def test_locate
15
15
  prepare_response(:success)
16
16
 
17
- expected = Location.new :latitude => 44.393889, :longitude => 33.338611
17
+ expected = Location.new :latitude => 44.3939, :longitude => 33.3386
18
18
 
19
19
  assert_equal expected, @geocoder.locate('baghdad')
20
20
  assert_equal true, URI::HTTP.responses.empty?
@@ -29,7 +29,7 @@ module Graticule
29
29
  assert_equal Location.new, Location.new
30
30
 
31
31
  attrs = {:latitude => 100.5389, :longitude => -147.5893, :street => '123 A Street',
32
- :locality => 'Somewhere', :region => 'NO', :postal_code => '12345', :country => 'USA', :precision => :address}
32
+ :locality => 'Somewhere', :region => 'NO', :postal_code => '12345', :country => 'USA'}
33
33
 
34
34
  assert_equal Location.new(attrs), Location.new(attrs)
35
35
  attrs.each do |k,v|
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: graticule
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.2
7
- date: 2007-03-27 00:00:00 -04:00
6
+ version: 0.2.3
7
+ date: 2007-04-27 00:00:00 -04:00
8
8
  summary: API for using all the popular geocoding services.
9
9
  require_paths:
10
10
  - lib
@@ -43,6 +43,7 @@ files:
43
43
  - lib/graticule/distance/spherical.rb
44
44
  - lib/graticule/distance/vincenty.rb
45
45
  - lib/graticule/geocoder.rb
46
+ - lib/graticule/geocoder/base.rb
46
47
  - lib/graticule/geocoder/bogus.rb
47
48
  - lib/graticule/geocoder/geocoder_ca.rb
48
49
  - lib/graticule/geocoder/geocoder_us.rb
@@ -55,11 +56,16 @@ files:
55
56
  - lib/graticule/geocoder/yahoo.rb
56
57
  - lib/graticule/location.rb
57
58
  - lib/graticule/version.rb
59
+ - site/index.html
60
+ - site/plugin.html
61
+ - site/stylesheets/style.css
62
+ - test/config.yml.default
58
63
  - test/fixtures/responses/geocoder_us/success.xml
59
64
  - test/fixtures/responses/geocoder_us/unknown.xml
60
65
  - test/fixtures/responses/google/badkey.xml
61
66
  - test/fixtures/responses/google/limit.xml
62
67
  - test/fixtures/responses/google/missing_address.xml
68
+ - test/fixtures/responses/google/partial.xml
63
69
  - test/fixtures/responses/google/server_error.xml
64
70
  - test/fixtures/responses/google/success.xml
65
71
  - test/fixtures/responses/google/unavailable.xml
@@ -67,6 +73,8 @@ files:
67
73
  - test/fixtures/responses/host_ip/private.txt
68
74
  - test/fixtures/responses/host_ip/success.txt
69
75
  - test/fixtures/responses/host_ip/unknown.txt
76
+ - test/fixtures/responses/local_search_maps/empty.txt
77
+ - test/fixtures/responses/local_search_maps/not_found.txt
70
78
  - test/fixtures/responses/local_search_maps/success.txt
71
79
  - test/fixtures/responses/meta_carta/bad_address.xml
72
80
  - test/fixtures/responses/meta_carta/multiple.xml
@@ -91,7 +99,6 @@ files:
91
99
  - test/unit/graticule/geocoder_test.rb
92
100
  - test/unit/graticule/location_test.rb
93
101
  test_files:
94
- - test/unit/graticule/cli_test.rb
95
102
  - test/unit/graticule/distance_test.rb
96
103
  - test/unit/graticule/geocoder_test.rb
97
104
  - test/unit/graticule/location_test.rb
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../test_helper'
2
- require 'graticule/cli'
3
-
4
- module Graticule
5
- class CliTest < Test::Unit::TestCase
6
-
7
- def setup
8
- URI::HTTP.responses = []
9
- URI::HTTP.uris = []
10
- end
11
-
12
- def test_start
13
- prepare_response(:success)
14
- Kernel.expects(:puts)
15
- Kernel.stubs(:puts)
16
- result = Graticule::Cli.start ['-s', 'yahoo', '-a', 'YahooDemo', 'Saugatuck,', 'MI']
17
- end
18
-
19
- protected
20
-
21
- def prepare_response(id)
22
- URI::HTTP.responses << response('yahoo', id)
23
- end
24
-
25
- end
26
- end