google_directions 0.1.4 → 0.1.5
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.
- data/Gemfile +3 -0
- data/README.textile +0 -3
- data/Rakefile +1 -1
- data/google_directions.gemspec +6 -16
- data/init.rb +2 -1
- data/lib/google_directions.rb +65 -41
- data/test/mocks/google_directions_samle_xml.xml +31 -45
- data/test/test_helper.rb +1 -5
- data/test/unit/google_directions_test.rb +38 -13
- metadata +48 -60
- data/Manifest +0 -9
data/Gemfile
ADDED
data/README.textile
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
h2. Usage
|
2
2
|
|
3
|
-
Get a google maps API key, and store in your app under GOOGLE_MAPS_API_KEY
|
4
|
-
<pre>GOOGLE_MAPS_API_KEY = 'your_api_key'</pre>
|
5
|
-
|
6
3
|
<pre>directions = GoogleDirections.new(origin, destination)</pre>
|
7
4
|
where _origin_ and _destination_ are strings of addresses or places that Google can find an address for. Example: "816 Meridian St., 37207"
|
8
5
|
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
3
3
|
require 'rake'
|
4
4
|
require 'echoe'
|
5
5
|
|
6
|
-
Echoe.new('google_directions', '0.1.
|
6
|
+
Echoe.new('google_directions', '0.1.3') do |p|
|
7
7
|
p.description = "Ruby-wrapper for Google Directions API. Can return the drive time and driving distance between to places"
|
8
8
|
p.url = "http://github.com/joshcrews/Google-Directions-Ruby"
|
9
9
|
p.author = "Josh Crews"
|
data/google_directions.gemspec
CHANGED
@@ -2,33 +2,23 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{google_directions}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Josh Crews"]
|
9
|
-
s.date = %
|
9
|
+
s.date = Time.now.utc.strftime("%Y-%m-%d")
|
10
10
|
s.description = %q{Ruby-wrapper for Google Directions API. Can return the drive time and driving distance between to places}
|
11
11
|
s.email = %q{josh@joshcrews.com}
|
12
12
|
s.extra_rdoc_files = ["README.textile", "lib/google_directions.rb"]
|
13
|
-
s.files = ["
|
13
|
+
s.files = Dir["README.textile", "Gemfile", "Rakefile", "google_directions.gemspec", 'init.rb', "test/**/*", "lib/**/*.rb"]
|
14
14
|
s.homepage = %q{http://github.com/joshcrews/Google-Directions-Ruby}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Google_directions", "--main", "README.textile"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{google_directions}
|
18
18
|
s.rubygems_version = %q{1.3.7}
|
19
19
|
s.summary = %q{Ruby-wrapper for Google Directions API. Can return the drive time and driving distance between to places}
|
20
|
-
s.test_files =
|
20
|
+
s.test_files = Dir.glob("test/**/*_test.rb")
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
s.specification_version = 3
|
25
|
-
|
26
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<nokogiri>, [">= 1.4.1"])
|
28
|
-
else
|
29
|
-
s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
|
30
|
-
end
|
31
|
-
else
|
32
|
-
s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
|
33
|
-
end
|
22
|
+
s.add_dependency("nokogiri", ">=1.4.1")
|
23
|
+
s.add_dependency("extlib", ">=0.9.15")
|
34
24
|
end
|
data/init.rb
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'google_directions'
|
data/lib/google_directions.rb
CHANGED
@@ -1,75 +1,99 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'cgi'
|
1
3
|
require 'net/http'
|
4
|
+
require 'open-uri'
|
2
5
|
require 'nokogiri'
|
3
|
-
require '
|
6
|
+
require 'extlib/hash'
|
4
7
|
|
5
8
|
class GoogleDirections
|
6
|
-
|
7
|
-
def initialize(location_1, location_2)
|
8
|
-
@base_url = "http://maps.google.com/maps/api/directions/xml?key=#{GOOGLE_MAPS_API_KEY}&sensor=false&"
|
9
|
-
@location_1 = location_1
|
10
|
-
@location_2 = location_2
|
11
|
-
options = "origin=#{transcribe(@location_1)}&destination=#{transcribe(@location_2)}"
|
12
|
-
@xml_call = @base_url + options
|
13
|
-
@status = find_status
|
14
|
-
end
|
15
9
|
|
16
|
-
|
17
|
-
#http://maps.google.com/maps/api/directions/xml?origin=St.+Louis,+MO&destination=Nashville,+TN&sensor=false&key=ABQIAAAAINgf4OmAIbIdWblvypOUhxSQ8yY-fgrep0oj4uKpavE300Q6ExQlxB7SCyrAg2evsxwAsak4D0Liiv
|
18
|
-
|
19
|
-
def find_status
|
20
|
-
doc = Nokogiri::XML(xml)
|
21
|
-
doc.css("status").text
|
22
|
-
end
|
10
|
+
attr_reader :status, :doc, :xml, :origin, :destination, :options
|
23
11
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
12
|
+
@@base_url = 'http://maps.googleapis.com/maps/api/directions/xml'
|
13
|
+
|
14
|
+
@@default_options = {
|
15
|
+
:language => :en,
|
16
|
+
:alternative => :true,
|
17
|
+
:sensor => :false,
|
18
|
+
:mode => :driving,
|
19
|
+
}
|
20
|
+
|
21
|
+
def initialize(origin, destination, opts=@@default_options)
|
22
|
+
@origin = origin
|
23
|
+
@destination = destination
|
24
|
+
@options = opts.merge({:origin => transcribe(@origin), :destination => transcribe(@destination)})
|
25
|
+
|
26
|
+
@url = @@base_url + '?' + @options.to_params
|
27
|
+
@xml = open(@url).read
|
28
|
+
@doc = Nokogiri::XML(@xml)
|
29
|
+
@status = @doc.css('status').text
|
30
30
|
end
|
31
31
|
|
32
32
|
def xml_call
|
33
|
-
@
|
33
|
+
@url
|
34
34
|
end
|
35
35
|
|
36
|
+
# an example URL to be generated
|
37
|
+
#http://maps.google.com/maps/api/directions/xml?origin=St.+Louis,+MO&destination=Nashville,+TN&sensor=false&key=ABQIAAAAINgf4OmAIbIdWblvypOUhxSQ8yY-fgrep0oj4uKpavE300Q6ExQlxB7SCyrAg2evsxwAsak4D0Liiv
|
38
|
+
|
36
39
|
def drive_time_in_minutes
|
37
40
|
if @status != "OK"
|
38
41
|
drive_time = 0
|
39
42
|
else
|
40
|
-
|
41
|
-
drive_time = doc.css("duration value").last.text
|
43
|
+
drive_time = @doc.css("duration value").last.text
|
42
44
|
convert_to_minutes(drive_time)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
48
|
+
# the distance.value field always contains a value expressed in meters.
|
49
|
+
def distance
|
50
|
+
return @distance if @distance
|
51
|
+
unless @status == 'OK'
|
52
|
+
@distance = 0
|
53
|
+
else
|
54
|
+
@distance = @doc.css("distance value").last.text
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def distance_text
|
59
|
+
return @distance_text if @distance_text
|
60
|
+
unless @status == 'OK'
|
61
|
+
@distance_text = "0 km"
|
62
|
+
else
|
63
|
+
@distance_text = @doc.css("distance text").last.text
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
46
67
|
def distance_in_miles
|
47
68
|
if @status != "OK"
|
48
69
|
distance_in_miles = 0
|
49
70
|
else
|
50
|
-
|
51
|
-
meters = doc.css("distance value").last.text
|
71
|
+
meters = distance
|
52
72
|
distance_in_miles = (meters.to_f / 1610.22).round
|
53
73
|
distance_in_miles
|
54
74
|
end
|
55
75
|
end
|
56
|
-
|
57
|
-
def
|
58
|
-
@
|
76
|
+
|
77
|
+
def public_url
|
78
|
+
"http://maps.google.com/maps?saddr=#{transcribe(@origin)}&daddr=#{transcribe(@destination)}&hl=#{@options[:language]}&ie=UTF8"
|
79
|
+
end
|
80
|
+
|
81
|
+
def steps
|
82
|
+
if @status == 'OK'
|
83
|
+
@doc.css('html_instructions').map {|a| a.text }
|
84
|
+
else
|
85
|
+
[]
|
86
|
+
end
|
59
87
|
end
|
60
|
-
|
88
|
+
|
61
89
|
private
|
62
|
-
|
90
|
+
|
63
91
|
def convert_to_minutes(text)
|
64
|
-
(text.
|
92
|
+
(text.to_f / 60).round
|
65
93
|
end
|
66
|
-
|
94
|
+
|
67
95
|
def transcribe(location)
|
68
|
-
location
|
96
|
+
CGI::escape(location)
|
69
97
|
end
|
70
98
|
|
71
|
-
|
72
|
-
Net::HTTP.get(::URI.parse(url))
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
99
|
+
end
|
@@ -7,74 +7,60 @@
|
|
7
7
|
<step>
|
8
8
|
<travel_mode>DRIVING</travel_mode>
|
9
9
|
<start_location>
|
10
|
-
<lat>36.
|
11
|
-
<lng>-85.
|
10
|
+
<lat>36.2263600</lat>
|
11
|
+
<lng>-85.9490400</lng>
|
12
12
|
</start_location>
|
13
13
|
<end_location>
|
14
|
-
<lat>36.
|
15
|
-
<lng>-85.
|
14
|
+
<lat>36.1772300</lat>
|
15
|
+
<lng>-85.9476400</lng>
|
16
16
|
</end_location>
|
17
17
|
<polyline>
|
18
|
-
<points>
|
19
|
-
<levels>B
|
18
|
+
<points>wmb|En|qkObGX~BGbBQhHwAnBUxB?fBZlCjAzA~At@jA|DnIbC~DnAfAfDjBpCl@zAJ~A?vC[hRmEnHmA`Z}@~ENfCTlDt@xG|BxGvDtFlEnExC`Dz@bCLlAAnBS~CgAbXgPlOyHrf@}TfAOpQHlBE</points>
|
19
|
+
<levels>B??????@????@???@???@??@????@??A????@??B</levels>
|
20
20
|
</polyline>
|
21
21
|
<duration>
|
22
|
-
<value>
|
23
|
-
<text>
|
22
|
+
<value>354</value>
|
23
|
+
<text>6 mins</text>
|
24
24
|
</duration>
|
25
|
-
<html_instructions>Head <b>south</b> on <b>TN-53 S/Gordonsville Hwy</b> toward <b>Riverwood Cir</b></html_instructions>
|
25
|
+
<html_instructions>Head <b>south</b> on <b>TN-53 S/Gordonsville Hwy</b> toward <b>Riverwood Cir</b><div style="font-size:0.9em">Destination will be on the right</div></html_instructions>
|
26
26
|
<distance>
|
27
|
-
<value>
|
28
|
-
<text>
|
29
|
-
</distance>
|
30
|
-
</step>
|
31
|
-
<step>
|
32
|
-
<travel_mode>DRIVING</travel_mode>
|
33
|
-
<start_location>
|
34
|
-
<lat>36.1929700</lat>
|
35
|
-
<lng>-85.9550000</lng>
|
36
|
-
</start_location>
|
37
|
-
<end_location>
|
38
|
-
<lat>36.1773300</lat>
|
39
|
-
<lng>-85.9475700</lng>
|
40
|
-
</end_location>
|
41
|
-
<polyline>
|
42
|
-
<points>a}{{EvaskOTw@zPiJPU~@QxCyA|C_BbBoAvCa@vI}F^q@xBg@~LmGbC{@|Be@rQFvAW</points>
|
43
|
-
<levels>B???????????@???B</levels>
|
44
|
-
</polyline>
|
45
|
-
<duration>
|
46
|
-
<value>141</value>
|
47
|
-
<text>2 mins</text>
|
48
|
-
</duration>
|
49
|
-
<html_instructions>Turn <b>left</b> at <b>TN-53 S</b> <div style="font-size:0.9em">Destination will be on the right</div></html_instructions>
|
50
|
-
<distance>
|
51
|
-
<value>1912</value>
|
52
|
-
<text>1.2 mi</text>
|
27
|
+
<value>5928</value>
|
28
|
+
<text>3.7 mi</text>
|
53
29
|
</distance>
|
54
30
|
</step>
|
55
31
|
<duration>
|
56
|
-
<value>
|
32
|
+
<value>354</value>
|
57
33
|
<text>6 mins</text>
|
58
34
|
</duration>
|
59
35
|
<distance>
|
60
|
-
<value>
|
61
|
-
<text>3.
|
36
|
+
<value>5928</value>
|
37
|
+
<text>3.7 mi</text>
|
62
38
|
</distance>
|
63
39
|
<start_location>
|
64
|
-
<lat>36.
|
65
|
-
<lng>-85.
|
40
|
+
<lat>36.2263600</lat>
|
41
|
+
<lng>-85.9490400</lng>
|
66
42
|
</start_location>
|
67
43
|
<end_location>
|
68
|
-
<lat>36.
|
69
|
-
<lng>-85.
|
44
|
+
<lat>36.1772300</lat>
|
45
|
+
<lng>-85.9476400</lng>
|
70
46
|
</end_location>
|
71
47
|
<start_address>121 Gordonsville Hwy, Carthage, TN 37030, USA</start_address>
|
72
48
|
<end_address>499 Gordonsville Hwy, Gordonsville, TN 38563, USA</end_address>
|
73
49
|
</leg>
|
74
|
-
<copyrights>Map data ©
|
50
|
+
<copyrights>Map data ©2011 Google</copyrights>
|
75
51
|
<overview_polyline>
|
76
|
-
<points>
|
77
|
-
<levels>B
|
52
|
+
<points>wmb|En|qkObGX~BGbBQhHwAnBUxB?fBZlCjAzA~At@jA|DnIbC~DnAfAfDjBpCl@zAJ~A?vC[hRmEnHmA`Z}@~ENfCTlDt@xG|BxGvDtFlEnExC`Dz@bCLlAAnBS~CgAbXgPlOyHrf@}TfAOpQHlBE</points>
|
53
|
+
<levels>B??????@????@???@???@??@????@??A????@??B</levels>
|
78
54
|
</overview_polyline>
|
55
|
+
<bounds>
|
56
|
+
<southwest>
|
57
|
+
<lat>36.1772300</lat>
|
58
|
+
<lng>-85.9560100</lng>
|
59
|
+
</southwest>
|
60
|
+
<northeast>
|
61
|
+
<lat>36.2263600</lat>
|
62
|
+
<lng>-85.9476200</lng>
|
63
|
+
</northeast>
|
64
|
+
</bounds>
|
79
65
|
</route>
|
80
66
|
</DirectionsResponse>
|
data/test/test_helper.rb
CHANGED
@@ -1,32 +1,57 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
3
|
|
4
|
+
# TODO: mocks
|
3
5
|
class GoogleDirectionsTest < Test::Unit::TestCase
|
4
6
|
|
5
|
-
def test_the_truth
|
6
|
-
assert true
|
7
|
-
end
|
8
|
-
|
9
7
|
def test_happy_case
|
10
|
-
|
8
|
+
orig = "121 Gordonsville Highway, 37030"
|
9
|
+
dest = "499 Gordonsville Highway, 38563"
|
10
|
+
directions = GoogleDirections.new(orig, dest)
|
11
11
|
assert_equal(4, directions.distance_in_miles)
|
12
12
|
assert_equal(6, directions.drive_time_in_minutes)
|
13
|
-
|
14
|
-
|
13
|
+
assert_equal('http://maps.googleapis.com/maps/api/directions/xml?language=en&alternative=true&sensor=false&mode=driving&origin=121+Gordonsville+Highway%2C+37030&destination=499+Gordonsville+Highway%2C+38563', directions.xml_call)
|
14
|
+
# end_location > lat
|
15
|
+
assert_not_nil(directions.xml =~ /36\.1772300/)
|
16
|
+
assert_equal orig, directions.origin
|
17
|
+
assert_equal dest, directions.destination
|
15
18
|
end
|
16
|
-
|
19
|
+
|
17
20
|
def test_directions_not_found
|
18
21
|
directions = GoogleDirections.new("fasfefasdfdfsd", "499 Gordonsville Highway, 38563")
|
19
22
|
assert_equal(0, directions.distance_in_miles)
|
20
23
|
assert_equal(0, directions.drive_time_in_minutes)
|
21
24
|
assert_equal("NOT_FOUND", directions.status)
|
22
25
|
end
|
23
|
-
|
26
|
+
|
24
27
|
def test_zero_results
|
25
|
-
directions = GoogleDirections.new("
|
28
|
+
directions = GoogleDirections.new("27 Beemdenlaan, 2550 Kontich", "499 Gordonsville Highway, 38563")
|
26
29
|
assert_equal(0, directions.distance_in_miles)
|
27
30
|
assert_equal(0, directions.drive_time_in_minutes)
|
28
31
|
assert_equal("ZERO_RESULTS", directions.status)
|
29
32
|
end
|
30
|
-
|
31
|
-
|
33
|
+
|
34
|
+
def test_french_direction
|
35
|
+
assert_nothing_raised do
|
36
|
+
# URI::InvalidURIError
|
37
|
+
directions = GoogleDirections.new("15 rue poissonnière, 75002 Paris", "169 11th Street CA 94103 San Francisco United States")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_steps
|
42
|
+
directions = GoogleDirections.new("rue poissonnière, 75002 Paris", "51 rue de Turbigo, 75003 Paris France")
|
43
|
+
assert_equal Array, directions.steps.class
|
44
|
+
assert_equal 3, directions.steps.size
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_distance_text
|
48
|
+
directions = GoogleDirections.new("Place du Maquis du Vercors PARIS-19EME", "rue poissoniere 75002 paris")
|
49
|
+
assert_equal String, directions.distance_text.class
|
50
|
+
assert_equal "6.7 km", directions.distance_text
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_zero_distance_text
|
54
|
+
directions = GoogleDirections.new("27 Beemdenlaan, 2550 Kontich", "499 Gordonsville Highway, 38563")
|
55
|
+
assert_equal "0 km", directions.distance_text
|
56
|
+
end
|
32
57
|
end
|
metadata
CHANGED
@@ -1,98 +1,86 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: google_directions
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 4
|
10
|
-
version: 0.1.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Josh Crews
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-01-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: nokogiri
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70151553549100 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 5
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 4
|
33
|
-
- 1
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 1.4.1
|
35
|
-
type: :
|
36
|
-
|
37
|
-
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70151553549100
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: extlib
|
27
|
+
requirement: &70151553548140 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.9.15
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70151553548140
|
36
|
+
description: Ruby-wrapper for Google Directions API. Can return the drive time and
|
37
|
+
driving distance between to places
|
38
38
|
email: josh@joshcrews.com
|
39
39
|
executables: []
|
40
|
-
|
41
40
|
extensions: []
|
42
|
-
|
43
|
-
extra_rdoc_files:
|
41
|
+
extra_rdoc_files:
|
44
42
|
- README.textile
|
45
43
|
- lib/google_directions.rb
|
46
|
-
files:
|
47
|
-
- Manifest
|
44
|
+
files:
|
48
45
|
- README.textile
|
46
|
+
- Gemfile
|
49
47
|
- Rakefile
|
50
48
|
- google_directions.gemspec
|
51
49
|
- init.rb
|
52
|
-
- lib/google_directions.rb
|
53
50
|
- test/mocks/google_directions_samle_xml.xml
|
54
51
|
- test/test_helper.rb
|
55
52
|
- test/unit/google_directions_test.rb
|
56
|
-
|
53
|
+
- lib/google_directions.rb
|
57
54
|
homepage: http://github.com/joshcrews/Google-Directions-Ruby
|
58
55
|
licenses: []
|
59
|
-
|
60
56
|
post_install_message:
|
61
|
-
rdoc_options:
|
57
|
+
rdoc_options:
|
62
58
|
- --line-numbers
|
63
59
|
- --inline-source
|
64
60
|
- --title
|
65
61
|
- Google_directions
|
66
62
|
- --main
|
67
63
|
- README.textile
|
68
|
-
require_paths:
|
64
|
+
require_paths:
|
69
65
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
67
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
- 0
|
78
|
-
version: "0"
|
79
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
73
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 1
|
87
|
-
- 2
|
88
|
-
version: "1.2"
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.2'
|
89
78
|
requirements: []
|
90
|
-
|
91
79
|
rubyforge_project: google_directions
|
92
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.8.11
|
93
81
|
signing_key:
|
94
82
|
specification_version: 3
|
95
|
-
summary: Ruby-wrapper for Google Directions API. Can return the drive time and driving
|
96
|
-
|
97
|
-
|
83
|
+
summary: Ruby-wrapper for Google Directions API. Can return the drive time and driving
|
84
|
+
distance between to places
|
85
|
+
test_files:
|
98
86
|
- test/unit/google_directions_test.rb
|