abuiles-geokit 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.bundle/config +2 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +19 -0
  5. data/History.txt +77 -0
  6. data/Manifest.txt +21 -0
  7. data/README.markdown +273 -0
  8. data/Rakefile +13 -0
  9. data/geokit.gemspec +24 -0
  10. data/lib/geokit.rb +55 -0
  11. data/lib/geokit/bounds.rb +95 -0
  12. data/lib/geokit/geo_loc.rb +115 -0
  13. data/lib/geokit/geocoders.rb +68 -0
  14. data/lib/geokit/geocoders/ca_geocoder.rb +54 -0
  15. data/lib/geokit/geocoders/geo_plugin_geocoder.rb +30 -0
  16. data/lib/geokit/geocoders/geocode_error.rb +7 -0
  17. data/lib/geokit/geocoders/geocoder.rb +75 -0
  18. data/lib/geokit/geocoders/geonames_geocoder.rb +53 -0
  19. data/lib/geokit/geocoders/google_geocoder.rb +145 -0
  20. data/lib/geokit/geocoders/google_premier_geocoder.rb +147 -0
  21. data/lib/geokit/geocoders/ip_geocoder.rb +76 -0
  22. data/lib/geokit/geocoders/multi_geocoder.rb +60 -0
  23. data/lib/geokit/geocoders/us_geocoder.rb +50 -0
  24. data/lib/geokit/geocoders/yahoo_geocoder.rb +49 -0
  25. data/lib/geokit/inflector.rb +39 -0
  26. data/lib/geokit/lat_lng.rb +112 -0
  27. data/lib/geokit/mappable.rb +210 -0
  28. data/lib/geokit/too_many_queries_error.rb +4 -0
  29. data/lib/geokit/version.rb +3 -0
  30. data/test/test_base_geocoder.rb +58 -0
  31. data/test/test_bounds.rb +97 -0
  32. data/test/test_ca_geocoder.rb +39 -0
  33. data/test/test_geoloc.rb +72 -0
  34. data/test/test_geoplugin_geocoder.rb +58 -0
  35. data/test/test_google_geocoder.rb +225 -0
  36. data/test/test_google_premier_geocoder.rb +88 -0
  37. data/test/test_google_reverse_geocoder.rb +47 -0
  38. data/test/test_inflector.rb +24 -0
  39. data/test/test_ipgeocoder.rb +109 -0
  40. data/test/test_latlng.rb +209 -0
  41. data/test/test_multi_geocoder.rb +91 -0
  42. data/test/test_multi_ip_geocoder.rb +36 -0
  43. data/test/test_us_geocoder.rb +54 -0
  44. data/test/test_yahoo_geocoder.rb +103 -0
  45. metadata +141 -0
@@ -0,0 +1,91 @@
1
+ Geokit::Geocoders::provider_order=[:google,:yahoo,:us]
2
+
3
+ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
4
+
5
+ def setup
6
+ super
7
+ @failure = Geokit::GeoLoc.new
8
+ end
9
+
10
+ def test_successful_first
11
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@success)
12
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
13
+ end
14
+
15
+ def test_failover
16
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
17
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@success)
18
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
19
+ end
20
+
21
+ def test_double_failover
22
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
23
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
24
+ Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address, {}).returns(@success)
25
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address)
26
+ end
27
+
28
+ def test_failure
29
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
30
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
31
+ Geokit::Geocoders::UsGeocoder.expects(:geocode).with(@address, {}).returns(@failure)
32
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
33
+ end
34
+
35
+ def test_invalid_provider
36
+ temp = Geokit::Geocoders::provider_order
37
+ Geokit::Geocoders.provider_order = [:bogus]
38
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@address)
39
+ Geokit::Geocoders.provider_order = temp
40
+ end
41
+
42
+ def test_blank_address
43
+ t1, t2 = Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order # will need to reset after
44
+ Geokit::Geocoders.provider_order = [:google]
45
+ Geokit::Geocoders.ip_provider_order = [:geo_plugin]
46
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).with("", {}).returns(@failure)
47
+ Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).never
48
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode("")
49
+ Geokit::Geocoders.provider_order, Geokit::Geocoders.ip_provider_order = t1, t2 # reset to orig values
50
+ end
51
+
52
+ def test_reverse_geocode_successful_first
53
+ Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
54
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
55
+ end
56
+
57
+ def test_reverse_geocode_failover
58
+ Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
59
+ Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
60
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
61
+ end
62
+
63
+ def test_reverse_geocode_double_failover
64
+ Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
65
+ Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
66
+ Geokit::Geocoders::UsGeocoder.expects(:reverse_geocode).with(@latlng).returns(@success)
67
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
68
+ end
69
+
70
+ def test_reverse_geocode_failure
71
+ Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
72
+ Geokit::Geocoders::YahooGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
73
+ Geokit::Geocoders::UsGeocoder.expects(:reverse_geocode).with(@latlng).returns(@failure)
74
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
75
+ end
76
+
77
+ def test_reverse_geocode_with_invalid_provider
78
+ temp = Geokit::Geocoders::provider_order
79
+ Geokit::Geocoders.provider_order = [:bogus]
80
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode(@latlng)
81
+ Geokit::Geocoders.provider_order = temp
82
+ end
83
+
84
+ def test_reverse_geocode_with_blank_latlng
85
+ t1 = Geokit::Geocoders.provider_order # will need to reset after
86
+ Geokit::Geocoders.provider_order = [:google]
87
+ Geokit::Geocoders::GoogleGeocoder.expects(:reverse_geocode).with("").returns(@failure)
88
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode("")
89
+ Geokit::Geocoders.provider_order = t1 # reset to orig values
90
+ end
91
+ end
@@ -0,0 +1,36 @@
1
+ Geokit::Geocoders::ip_provider_order=[:geo_plugin,:ip]
2
+
3
+ class MultiIpGeocoderTest < BaseGeocoderTest #:nodoc: all
4
+
5
+ def setup
6
+ @ip_address = '10.10.10.10'
7
+ @success = Geokit::GeoLoc.new({:city=>"SAN FRANCISCO", :state=>"CA", :country_code=>"US", :lat=>37.7742, :lng=>-122.417068})
8
+ @success.success = true
9
+ @failure = Geokit::GeoLoc.new
10
+ end
11
+
12
+ def test_successful_first
13
+ Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@success)
14
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
15
+ end
16
+
17
+ def test_failover
18
+ Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
19
+ Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address, {}).returns(@success)
20
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
21
+ end
22
+
23
+ def test_failure
24
+ Geokit::Geocoders::GeoPluginGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
25
+ Geokit::Geocoders::IpGeocoder.expects(:geocode).with(@ip_address, {}).returns(@failure)
26
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
27
+ end
28
+
29
+ def test_invalid_provider
30
+ temp = Geokit::Geocoders::ip_provider_order
31
+ Geokit::Geocoders.ip_provider_order = [:bogus]
32
+ assert_equal @failure, Geokit::Geocoders::MultiGeocoder.geocode(@ip_address)
33
+ Geokit::Geocoders.ip_provider_order = temp
34
+ end
35
+
36
+ end
@@ -0,0 +1,54 @@
1
+ Geokit::Geocoders::geocoder_us = nil
2
+
3
+ class UsGeocoderTest < BaseGeocoderTest #:nodoc: all
4
+
5
+ GEOCODER_US_FULL='37.792528,-122.393981,100 Spear St,San Francisco,CA,94105'
6
+
7
+ def setup
8
+ super
9
+ @us_full_hash = {:city=>"San Francisco", :state=>"CA"}
10
+ @us_full_loc = Geokit::GeoLoc.new(@us_full_hash)
11
+ end
12
+
13
+ def test_geocoder_us
14
+ response = MockSuccess.new
15
+ response.expects(:body).returns(GEOCODER_US_FULL)
16
+ url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
17
+ Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
18
+ verify(Geokit::Geocoders::UsGeocoder.geocode(@address))
19
+ end
20
+
21
+ def test_geocoder_with_geo_loc
22
+ response = MockSuccess.new
23
+ response.expects(:body).returns(GEOCODER_US_FULL)
24
+ url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
25
+ Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
26
+ verify(Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc))
27
+ end
28
+
29
+ def test_service_unavailable
30
+ response = MockFailure.new
31
+ url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
32
+ Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
33
+ assert !Geokit::Geocoders::UsGeocoder.geocode(@us_full_loc).success
34
+ end
35
+
36
+ def test_all_method
37
+ response = MockSuccess.new
38
+ response.expects(:body).returns(GEOCODER_US_FULL)
39
+ url = "http://geocoder.us/service/csv/geocode?address=#{Geokit::Inflector.url_escape(@address)}"
40
+ Geokit::Geocoders::UsGeocoder.expects(:call_geocoder_service).with(url).returns(response)
41
+ res=Geokit::Geocoders::UsGeocoder.geocode(@address)
42
+ assert_equal 1, res.all.size
43
+ end
44
+
45
+ private
46
+
47
+ def verify(location)
48
+ assert_equal "CA", location.state
49
+ assert_equal "San Francisco", location.city
50
+ assert_equal "37.792528,-122.393981", location.ll
51
+ assert location.is_us?
52
+ assert_equal "100 Spear St, San Francisco, CA, 94105, US", location.full_address #slightly different from yahoo
53
+ end
54
+ end
@@ -0,0 +1,103 @@
1
+ Geokit::Geocoders::yahoo = 'Yahoo'
2
+
3
+ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
4
+ YAHOO_FULL=<<-EOF.strip
5
+ <?xml version="1.0"?>
6
+ <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.792406</Latitude><Longitude>-122.39411</Longitude><Address>100 SPEAR ST</Address><City>SAN FRANCISCO</City><State>CA</State><Zip>94105-1522</Zip><Country>US</Country></Result></ResultSet>
7
+ <!-- ws01.search.scd.yahoo.com uncompressed/chunked Mon Jan 29 16:23:43 PST 2007 -->
8
+ EOF
9
+
10
+ YAHOO_CITY=<<-EOF.strip
11
+ <?xml version="1.0"?>
12
+ <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="city"><Latitude>37.7742</Latitude><Longitude>-122.417068</Longitude><Address></Address><City>SAN FRANCISCO</City><State>CA</State><Zip></Zip><Country>US</Country></Result></ResultSet>
13
+ <!-- ws02.search.scd.yahoo.com uncompressed/chunked Mon Jan 29 18:00:28 PST 2007 -->
14
+ EOF
15
+
16
+ def setup
17
+ super
18
+ @yahoo_full_hash = {:street_address=>"100 Spear St", :city=>"San Francisco", :state=>"CA", :zip=>"94105-1522", :country_code=>"US"}
19
+ @yahoo_city_hash = {:city=>"San Francisco", :state=>"CA"}
20
+ @yahoo_full_loc = Geokit::GeoLoc.new(@yahoo_full_hash)
21
+ @yahoo_city_loc = Geokit::GeoLoc.new(@yahoo_city_hash)
22
+ end
23
+
24
+ # the testing methods themselves
25
+ def test_yahoo_full_address
26
+ response = MockSuccess.new
27
+ response.expects(:body).returns(YAHOO_FULL)
28
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
29
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
30
+ do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@address))
31
+ end
32
+
33
+ def test_yahoo_full_address_accuracy
34
+ response = MockSuccess.new
35
+ response.expects(:body).returns(YAHOO_FULL)
36
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
37
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
38
+ res = Geokit::Geocoders::YahooGeocoder.geocode(@address)
39
+ assert_equal 8, res.accuracy
40
+ end
41
+
42
+ def test_yahoo_full_address_with_geo_loc
43
+ response = MockSuccess.new
44
+ response.expects(:body).returns(YAHOO_FULL)
45
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@full_address)}"
46
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
47
+ do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_full_loc))
48
+ end
49
+
50
+ def test_yahoo_city
51
+ response = MockSuccess.new
52
+ response.expects(:body).returns(YAHOO_CITY)
53
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
54
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
55
+ do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@address))
56
+ end
57
+
58
+ def test_yahoo_city_accuracy
59
+ response = MockSuccess.new
60
+ response.expects(:body).returns(YAHOO_CITY)
61
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
62
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
63
+ res = Geokit::Geocoders::YahooGeocoder.geocode(@address)
64
+ assert_equal 4, res.accuracy
65
+ end
66
+
67
+ def test_yahoo_city_with_geo_loc
68
+ response = MockSuccess.new
69
+ response.expects(:body).returns(YAHOO_CITY)
70
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
71
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
72
+ do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_city_loc))
73
+ end
74
+
75
+ def test_service_unavailable
76
+ response = MockFailure.new
77
+ url = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=Yahoo&location=#{Geokit::Inflector.url_escape(@address)}"
78
+ Geokit::Geocoders::YahooGeocoder.expects(:call_geocoder_service).with(url).returns(response)
79
+ assert !Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_city_loc).success
80
+ end
81
+
82
+ private
83
+
84
+ # next two methods do the assertions for both address-level and city-level lookups
85
+ def do_full_address_assertions(res)
86
+ assert_equal "CA", res.state
87
+ assert_equal "San Francisco", res.city
88
+ assert_equal "37.792406,-122.39411", res.ll
89
+ assert res.is_us?
90
+ assert_equal "100 Spear St, San Francisco, CA, 94105-1522, US", res.full_address
91
+ assert_equal "yahoo", res.provider
92
+ end
93
+
94
+ def do_city_assertions(res)
95
+ assert_equal "CA", res.state
96
+ assert_equal "San Francisco", res.city
97
+ assert_equal "37.7742,-122.417068", res.ll
98
+ assert res.is_us?
99
+ assert_equal "San Francisco, CA, US", res.full_address
100
+ assert_nil res.street_address
101
+ assert_equal "yahoo", res.provider
102
+ end
103
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: abuiles-geokit
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.6.1
6
+ platform: ruby
7
+ authors:
8
+ - Andre Lewis
9
+ - Bill Eisenhauer
10
+ - Steve Hoeksema
11
+ - Adolfo Builes
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2011-03-24 00:00:00 -04:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: activesupport
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: "3"
28
+ type: :runtime
29
+ version_requirements: *id001
30
+ - !ruby/object:Gem::Dependency
31
+ name: mocha
32
+ prerelease: false
33
+ requirement: &id002 !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: "0.9"
39
+ type: :development
40
+ version_requirements: *id002
41
+ description:
42
+ email:
43
+ - andre@earthcode.com
44
+ - bill_eisenhauer@yahoo.com
45
+ - steve@seven.net.nz
46
+ - steve@seven.net.nz
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files: []
52
+
53
+ files:
54
+ - .bundle/config
55
+ - .gitignore
56
+ - Gemfile
57
+ - Gemfile.lock
58
+ - History.txt
59
+ - Manifest.txt
60
+ - README.markdown
61
+ - Rakefile
62
+ - geokit.gemspec
63
+ - lib/geokit.rb
64
+ - lib/geokit/bounds.rb
65
+ - lib/geokit/geo_loc.rb
66
+ - lib/geokit/geocoders.rb
67
+ - lib/geokit/geocoders/ca_geocoder.rb
68
+ - lib/geokit/geocoders/geo_plugin_geocoder.rb
69
+ - lib/geokit/geocoders/geocode_error.rb
70
+ - lib/geokit/geocoders/geocoder.rb
71
+ - lib/geokit/geocoders/geonames_geocoder.rb
72
+ - lib/geokit/geocoders/google_geocoder.rb
73
+ - lib/geokit/geocoders/google_premier_geocoder.rb
74
+ - lib/geokit/geocoders/ip_geocoder.rb
75
+ - lib/geokit/geocoders/multi_geocoder.rb
76
+ - lib/geokit/geocoders/us_geocoder.rb
77
+ - lib/geokit/geocoders/yahoo_geocoder.rb
78
+ - lib/geokit/inflector.rb
79
+ - lib/geokit/lat_lng.rb
80
+ - lib/geokit/mappable.rb
81
+ - lib/geokit/too_many_queries_error.rb
82
+ - lib/geokit/version.rb
83
+ - test/test_base_geocoder.rb
84
+ - test/test_bounds.rb
85
+ - test/test_ca_geocoder.rb
86
+ - test/test_geoloc.rb
87
+ - test/test_geoplugin_geocoder.rb
88
+ - test/test_google_geocoder.rb
89
+ - test/test_google_premier_geocoder.rb
90
+ - test/test_google_reverse_geocoder.rb
91
+ - test/test_inflector.rb
92
+ - test/test_ipgeocoder.rb
93
+ - test/test_latlng.rb
94
+ - test/test_multi_geocoder.rb
95
+ - test/test_multi_ip_geocoder.rb
96
+ - test/test_us_geocoder.rb
97
+ - test/test_yahoo_geocoder.rb
98
+ has_rdoc: true
99
+ homepage: https://github.com/abuiles/geokit
100
+ licenses: []
101
+
102
+ post_install_message:
103
+ rdoc_options: []
104
+
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: "0"
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: "0"
119
+ requirements: []
120
+
121
+ rubyforge_project: abuiles-geokit
122
+ rubygems_version: 1.6.2
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Geokit provides geocoding and distance/heading calculations.
126
+ test_files:
127
+ - test/test_base_geocoder.rb
128
+ - test/test_bounds.rb
129
+ - test/test_ca_geocoder.rb
130
+ - test/test_geoloc.rb
131
+ - test/test_geoplugin_geocoder.rb
132
+ - test/test_google_geocoder.rb
133
+ - test/test_google_premier_geocoder.rb
134
+ - test/test_google_reverse_geocoder.rb
135
+ - test/test_inflector.rb
136
+ - test/test_ipgeocoder.rb
137
+ - test/test_latlng.rb
138
+ - test/test_multi_geocoder.rb
139
+ - test/test_multi_ip_geocoder.rb
140
+ - test/test_us_geocoder.rb
141
+ - test/test_yahoo_geocoder.rb