gmaps_directions 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ gem "activesupport", "~> 3.0.4"
5
+ gem "yajl-ruby", "~> 0.8.1", :require => "yajl"
6
+
7
+ # Add dependencies to develop your gem here.
8
+ # Include everything needed to run rake, tests, features, etc.
9
+ group :development do
10
+ gem "rspec", "~> 2.5.0"
11
+ gem "bundler", "~> 1.0.0"
12
+ gem "jeweler", "~> 1.5.2"
13
+ gem "rcov", ">= 0"
14
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Dirk Breuer
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,70 @@
1
+ = gmaps_directions
2
+
3
+ Sometimes you need to calculate the directions between two different points via
4
+ Google Maps on your server-side and not on the client. The Google Maps API for
5
+ that is dead simple and due to this I wrapped calling the API in this little gem.
6
+
7
+ The gem talks to the Google Maps Directions Web Service API. Detailed documentation
8
+ for that can be found here: http://code.google.com/apis/maps/documentation/directions/
9
+ This API allows up to 2.500 direction requests. At the current version there is no
10
+ way to use the non-public interface for Google Premium Maps customers. If you want that
11
+ feature right now drop me a patch or wait until I need it too (which might not take too
12
+ long anyway).
13
+
14
+ One last thing for the interested: The gem consumes the JSON response format from Google
15
+ API and parses it through the Ruby Yajl JSON parser.
16
+
17
+ == Example
18
+
19
+ Here is an example of how to use the Gem. As you can see, it is really more than simple:
20
+
21
+ require 'rubygems'
22
+ require 'gmaps_directions'
23
+
24
+ route = GmapsDirections::API.find_directions :from => "1 Infinite Loop, Cupertino",
25
+ :to => "1200 Park Avenue, Emmerville"
26
+
27
+ route.duration.should == 3462
28
+ route.formatted_duration.should == "58 mins"
29
+ route.distance.should == 84826
30
+ route.formatted_distance.should == "84.8 km"
31
+ route.start_address.should == "1 Infinite Loop, Cupertino, CA 95014, USA"
32
+ route.end_address.should == "1200 Park Ave, Emeryville, CA 94608, USA"
33
+ route.start_location.should == { "lat" => 37.3316900, "lng" => -122.0312600 }
34
+ route.end_location.should == { "lat" => 37.8317100, "lng" => -122.2833000 }
35
+ route.status.should == "OK"
36
+
37
+ == Configuration
38
+
39
+ Despite the fact that you cannot provide an API-Key I already built some kind of configuration.
40
+ In detail you can configure the following options when talking to Google:
41
+
42
+ * The type of transportation to use when calculate the direction ('driving', 'walking', 'bicycling')
43
+ * The unit system to use ('metric', 'imperial')
44
+ * The language in which the results is outputted (this includes number formats)
45
+ * The availability of a GPS-sensor
46
+ * Should there alternative routes be calculated
47
+
48
+ The following snippet shows how to configure those options and what are the defaults:
49
+
50
+ GmapsDirections::Config.mode = :driving
51
+ GmapsDirections::Config.units = :metric
52
+ GmapsDirections::Config.language = :en
53
+ GmapsDirections::Config.sensor = false
54
+ GmapsDirections::Config.alternatives = false
55
+
56
+ == Contributing to gmaps_directions
57
+
58
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
59
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
60
+ * Fork the project
61
+ * Start a feature/bugfix branch
62
+ * Commit and push until you are happy with your contribution
63
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
64
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
65
+
66
+ == Copyright
67
+
68
+ Copyright (c) 2011 Dirk Breuer. See LICENSE.txt for
69
+ further details.
70
+
data/Rakefile ADDED
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "gmaps_directions"
16
+ gem.homepage = "http://github.com/railsbros_dirk/gmaps_directions"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{A simple Gem to use the Google Maps distance API from Ruby}
19
+ gem.description = %Q{
20
+ Sometimes you need to calculate the directions between two different points
21
+ via Google Maps on your server-side and not on the client. The Google Maps
22
+ API for that is dead simple and due to this I wrapped calling the API in
23
+ this little gem.
24
+ }
25
+ gem.email = "dirk.breuer@gmail.com"
26
+ gem.authors = ["Dirk Breuer"]
27
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
28
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
29
+ gem.add_runtime_dependency 'yajl-ruby', '~> 0.8.1'
30
+ gem.add_runtime_dependency 'activesupport', '~> 3.0.4'
31
+ gem.add_development_dependency 'rspec', '~> 2.5'
32
+ end
33
+ Jeweler::RubygemsDotOrgTasks.new
34
+
35
+ require 'rspec/core'
36
+ require 'rspec/core/rake_task'
37
+ RSpec::Core::RakeTask.new(:spec) do |spec|
38
+ spec.pattern = FileList['spec/**/*_spec.rb']
39
+ end
40
+
41
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
42
+ spec.pattern = 'spec/**/*_spec.rb'
43
+ spec.rcov = true
44
+ end
45
+
46
+ task :default => :spec
47
+
48
+ require 'rake/rdoctask'
49
+ Rake::RDocTask.new do |rdoc|
50
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
51
+
52
+ rdoc.rdoc_dir = 'rdoc'
53
+ rdoc.title = "gmaps_directions #{version}"
54
+ rdoc.rdoc_files.include('README*')
55
+ rdoc.rdoc_files.include('lib/**/*.rb')
56
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,79 @@
1
+ require 'yajl'
2
+ require 'yajl/http_stream'
3
+ require 'uri'
4
+ require 'active_support/configurable'
5
+ require 'active_support/ordered_options'
6
+
7
+ module GmapsDirections
8
+
9
+ class Config
10
+ DEFAULTS = [:mode, :driving, :units, :metric, :language, :en, :sensor, false, :alternatives, false]
11
+
12
+ class <<self
13
+ include ActiveSupport::Configurable
14
+ config_accessor :mode, :units, :language, :sensor, :alternatives
15
+
16
+ def config
17
+ @config ||= ActiveSupport::OrderedOptions[*DEFAULTS]
18
+ end
19
+
20
+ def reset_to_defaults!
21
+ @config = ActiveSupport::OrderedOptions[*DEFAULTS]
22
+ end
23
+
24
+ def to_url_options
25
+ config.inject([]) { |url_options, option| url_options << "#{option.first.to_s}=#{URI.escape(option.last.to_s)}" }.join("&")
26
+ end
27
+ end
28
+ end
29
+
30
+ class API
31
+ class <<self
32
+ def find_directions(options = {})
33
+ api_driver = new(:start_address => options[:from], :end_address => options[:to])
34
+ api_driver.call_google
35
+ return Route.new(api_driver.parsed_directions_response)
36
+ end
37
+ end
38
+
39
+ DIRECTIONS_API_BASE_URL = "http://maps.googleapis.com/maps/api/directions/json"
40
+
41
+ attr_reader :start_address, :end_address, :parsed_directions_response
42
+
43
+ def initialize(attributes)
44
+ @start_address = attributes[:start_address]
45
+ @end_address = attributes[:end_address]
46
+ end
47
+
48
+ def call_google
49
+ Yajl::HttpStream.get(directions_api_url) do |results_hash|
50
+ @parsed_directions_response = results_hash
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def directions_api_url
57
+ URI.parse("#{DIRECTIONS_API_BASE_URL}?origin=#{URI.escape(start_address)}&destination=#{URI.escape(end_address)}&#{Config.to_url_options}")
58
+ end
59
+ end
60
+
61
+ class Route
62
+ attr_reader :duration, :formatted_duration, :distance, :formatted_distance,
63
+ :start_address, :end_address, :start_location, :end_location,
64
+ :status
65
+
66
+ def initialize(directions_api_response_hash)
67
+ @duration = directions_api_response_hash["routes"].first["legs"].first["duration"]["value"]
68
+ @formatted_duration = directions_api_response_hash["routes"].first["legs"].first["duration"]["text"]
69
+ @distance = directions_api_response_hash["routes"].first["legs"].first["distance"]["value"]
70
+ @formatted_distance = directions_api_response_hash["routes"].first["legs"].first["distance"]["text"]
71
+ @start_address = directions_api_response_hash["routes"].first["legs"].first["start_address"]
72
+ @end_address = directions_api_response_hash["routes"].first["legs"].first["end_address"]
73
+ @start_location = directions_api_response_hash["routes"].first["legs"].first["start_location"]
74
+ @end_location = directions_api_response_hash["routes"].first["legs"].first["end_location"]
75
+ @status = directions_api_response_hash["status"]
76
+ end
77
+ end
78
+
79
+ end
@@ -0,0 +1,147 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "GmapsDirections" do
4
+
5
+ it 'should provide a way to calculate the directions between points speficied by address' do
6
+ start_address = "Somestr. 23, 99999 Any City"
7
+ end_address = "Just Avenue 42, 11111 Sin City"
8
+
9
+ directions_api_url = URI.parse("http://maps.googleapis.com/maps/api/directions/json?origin=#{URI.encode(start_address)}&destination=#{URI.encode(end_address)}&mode=driving&units=metric&language=en&sensor=false&alternatives=false")
10
+ Yajl::HttpStream.should_receive(:get).with(directions_api_url)
11
+ GmapsDirections::Route.should_receive(:new)
12
+
13
+ GmapsDirections::API.find_directions :from => start_address, :to => end_address
14
+ end
15
+
16
+ describe "should have a Config object" do
17
+
18
+ before(:each) do
19
+ GmapsDirections::Config.reset_to_defaults!
20
+ end
21
+
22
+ it 'should provide a way to configure some defaults when talking with the directions API' do
23
+ GmapsDirections::Config.mode = :walking
24
+ GmapsDirections::Config.mode.should == :walking
25
+
26
+ GmapsDirections::Config.units = :imperial
27
+ GmapsDirections::Config.units.should == :imperial
28
+
29
+ GmapsDirections::Config.language = :de
30
+ GmapsDirections::Config.language.should == :de
31
+
32
+ GmapsDirections::Config.sensor = true
33
+ GmapsDirections::Config.sensor.should be(true)
34
+
35
+ GmapsDirections::Config.alternatives = true
36
+ GmapsDirections::Config.alternatives.should be(true)
37
+ end
38
+
39
+ it 'should provide a meaningful default configuration out of the box' do
40
+ GmapsDirections::Config.mode.should == :driving
41
+ GmapsDirections::Config.units.should == :metric
42
+ GmapsDirections::Config.language.should == :en
43
+ GmapsDirections::Config.sensor.should be(false)
44
+ GmapsDirections::Config.alternatives.should be(false)
45
+ end
46
+
47
+ it 'should transform the config to URL options' do
48
+ GmapsDirections::Config.to_url_options.should == "mode=driving&units=metric&language=en&sensor=false&alternatives=false"
49
+ end
50
+
51
+ end
52
+
53
+ describe "should wrap Google's JSON response in a nice object and" do
54
+
55
+ before(:each) do
56
+ @route = GmapsDirections::Route.new(
57
+ {
58
+ "status" => "OK",
59
+ "routes" => [ {
60
+ "summary" => "Luxemburger Str./B265",
61
+ "legs" => [ {
62
+ "steps" => [ {
63
+ "travel_mode" => "DRIVING",
64
+ "start_location" => { "lat" => 50.9280500, "lng" => 6.9397100 },
65
+ "end_location" => { "lat" => 50.9274800, "lng" => 6.9397800 },
66
+ "polyline" => { },
67
+ "duration" => { "value" => 11, "text" => "1 min" },
68
+ "html_instructions" => "",
69
+ "distance" => { "value" => 63, "text" => "63 m" }
70
+ } ],
71
+ "duration" => {
72
+ "value" => 476,
73
+ "text" => "8 mins"
74
+ },
75
+ "distance" => {
76
+ "value" => 3166,
77
+ "text" => "3.2 km"
78
+ },
79
+ "start_location" => { "lat" => 50.9280500, "lng" => 6.9397100 },
80
+ "end_location" => { "lat" => 50.9093600, "lng" => 6.9246200 },
81
+ "start_address" => "Somestr. 23, 99999 Any City, USA",
82
+ "end_address" => "Just Avenue 42, 11111 Sin City, USA",
83
+ "via_waypoint" => [ ]
84
+ } ],
85
+ "copyrights" => "Map data ©2011 Tele Atlas",
86
+ "overview_polyline" => { },
87
+ "warnings" => [ ],
88
+ "waypoint_order" => [ ],
89
+ "bounds" => { }
90
+ } ]
91
+ }
92
+ )
93
+ end
94
+
95
+ it 'should provide a getter to the duration' do
96
+ @route.duration.should == 476
97
+ end
98
+
99
+ it 'should provide a getter to the localized and formatted duration' do
100
+ @route.formatted_duration.should == "8 mins"
101
+ end
102
+
103
+ it 'should provide a getter to the distance' do
104
+ @route.distance.should == 3166
105
+ end
106
+
107
+ it 'should provide a getter to the localized and formatted distance' do
108
+ @route.formatted_distance.should == "3.2 km"
109
+ end
110
+
111
+ it 'should provide a getter to the submitted start address' do
112
+ @route.start_address.should == "Somestr. 23, 99999 Any City, USA"
113
+ end
114
+
115
+ it 'should provide a getter to the submitted end address' do
116
+ @route.end_address.should == "Just Avenue 42, 11111 Sin City, USA"
117
+ end
118
+
119
+ it 'should provide a getter to the geocoordinates of the start address' do
120
+ @route.start_location.should == { "lat" => 50.9280500, "lng" => 6.9397100 }
121
+ end
122
+
123
+ it 'should provide a getter to the geocoordinates of the end address' do
124
+ @route.end_location.should == { "lat" => 50.9093600, "lng" => 6.9246200 }
125
+ end
126
+
127
+ it 'should provide a getter to status of the Google response' do
128
+ @route.status.should == "OK"
129
+ end
130
+
131
+ end
132
+
133
+ it 'should perform a real request see if everything is parsed correctly' do
134
+ route = GmapsDirections::API.find_directions :from => "1 Infinite Loop, Cupertino",
135
+ :to => "1200 Park Avenue, Emmerville"
136
+
137
+ route.duration.should == 3462
138
+ route.formatted_duration.should == "58 mins"
139
+ route.distance.should == 84826
140
+ route.formatted_distance.should == "84.8 km"
141
+ route.start_address.should == "1 Infinite Loop, Cupertino, CA 95014, USA"
142
+ route.end_address.should == "1200 Park Ave, Emeryville, CA 94608, USA"
143
+ route.start_location.should == { "lat" => 37.3316900, "lng" => -122.0312600 }
144
+ route.end_location.should == { "lat" => 37.8317100, "lng" => -122.2833000 }
145
+ route.status.should == "OK"
146
+ end
147
+ end
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'gmaps_directions'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+ end
metadata ADDED
@@ -0,0 +1,218 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gmaps_directions
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Dirk Breuer
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-13 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ type: :runtime
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 4
34
+ version: 3.0.4
35
+ name: activesupport
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ type: :runtime
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 61
46
+ segments:
47
+ - 0
48
+ - 8
49
+ - 1
50
+ version: 0.8.1
51
+ name: yajl-ruby
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ type: :development
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 27
62
+ segments:
63
+ - 2
64
+ - 5
65
+ - 0
66
+ version: 2.5.0
67
+ name: rspec
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ type: :development
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 23
78
+ segments:
79
+ - 1
80
+ - 0
81
+ - 0
82
+ version: 1.0.0
83
+ name: bundler
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ prerelease: false
87
+ type: :development
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 7
94
+ segments:
95
+ - 1
96
+ - 5
97
+ - 2
98
+ version: 1.5.2
99
+ name: jeweler
100
+ version_requirements: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ prerelease: false
103
+ type: :development
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 3
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ name: rcov
114
+ version_requirements: *id006
115
+ - !ruby/object:Gem::Dependency
116
+ prerelease: false
117
+ type: :runtime
118
+ requirement: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ hash: 61
124
+ segments:
125
+ - 0
126
+ - 8
127
+ - 1
128
+ version: 0.8.1
129
+ name: yajl-ruby
130
+ version_requirements: *id007
131
+ - !ruby/object:Gem::Dependency
132
+ prerelease: false
133
+ type: :runtime
134
+ requirement: &id008 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ hash: 15
140
+ segments:
141
+ - 3
142
+ - 0
143
+ - 4
144
+ version: 3.0.4
145
+ name: activesupport
146
+ version_requirements: *id008
147
+ - !ruby/object:Gem::Dependency
148
+ prerelease: false
149
+ type: :development
150
+ requirement: &id009 !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ~>
154
+ - !ruby/object:Gem::Version
155
+ hash: 9
156
+ segments:
157
+ - 2
158
+ - 5
159
+ version: "2.5"
160
+ name: rspec
161
+ version_requirements: *id009
162
+ description: "\n Sometimes you need to calculate the directions between two different points\n via Google Maps on your server-side and not on the client. The Google Maps\n API for that is dead simple and due to this I wrapped calling the API in\n this little gem.\n "
163
+ email: dirk.breuer@gmail.com
164
+ executables: []
165
+
166
+ extensions: []
167
+
168
+ extra_rdoc_files:
169
+ - LICENSE.txt
170
+ - README.rdoc
171
+ files:
172
+ - .document
173
+ - .rspec
174
+ - Gemfile
175
+ - LICENSE.txt
176
+ - README.rdoc
177
+ - Rakefile
178
+ - VERSION
179
+ - lib/gmaps_directions.rb
180
+ - spec/gmaps_directions_spec.rb
181
+ - spec/spec_helper.rb
182
+ has_rdoc: true
183
+ homepage: http://github.com/railsbros_dirk/gmaps_directions
184
+ licenses:
185
+ - MIT
186
+ post_install_message:
187
+ rdoc_options: []
188
+
189
+ require_paths:
190
+ - lib
191
+ required_ruby_version: !ruby/object:Gem::Requirement
192
+ none: false
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ hash: 3
197
+ segments:
198
+ - 0
199
+ version: "0"
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ hash: 3
206
+ segments:
207
+ - 0
208
+ version: "0"
209
+ requirements: []
210
+
211
+ rubyforge_project:
212
+ rubygems_version: 1.6.2
213
+ signing_key:
214
+ specification_version: 3
215
+ summary: A simple Gem to use the Google Maps distance API from Ruby
216
+ test_files:
217
+ - spec/gmaps_directions_spec.rb
218
+ - spec/spec_helper.rb