abuiles-geokit 1.6.1

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 (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