gpx 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/gpx/gpx.rb +7 -10
- data/lib/gpx/gpx_file.rb +17 -10
- data/lib/gpx/point.rb +1 -1
- data/lib/gpx/route.rb +3 -3
- data/lib/gpx/waypoint.rb +20 -3
- data/tests/gpx10_test.rb +1 -1
- data/tests/gpx_file_test.rb +9 -0
- data/tests/gpx_files/routes.gpx +9 -1
- data/tests/gpx_files/waypoints.gpx +20 -1
- data/tests/magellan_test.rb +1 -1
- data/tests/route_test.rb +63 -0
- data/tests/segment_test.rb +1 -1
- data/tests/track_file_test.rb +1 -1
- data/tests/track_test.rb +1 -1
- data/tests/waypoint_test.rb +44 -0
- metadata +43 -33
data/lib/gpx/gpx.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
23
|
module GPX
|
24
|
-
VERSION = "0.
|
24
|
+
VERSION = "0.3"
|
25
25
|
|
26
26
|
# A common base class which provides a useful initializer method to many
|
27
27
|
# class in the GPX library.
|
@@ -34,16 +34,13 @@ module GPX
|
|
34
34
|
# an attribute to be initialized on the instance. This means you don't
|
35
35
|
# have to pick out individual text elements in each initializer of each
|
36
36
|
# class (Route, TrackPoint, Track, etc). Just pass an array of possible
|
37
|
-
# attributes to this method.
|
38
|
-
def instantiate_with_text_elements(parent, text_elements)
|
37
|
+
# attributes to this method.
|
38
|
+
def instantiate_with_text_elements(parent, text_elements, ns)
|
39
39
|
text_elements.each do |el|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
#{el}=#{val}
|
45
|
-
code
|
46
|
-
class_eval code
|
40
|
+
child_xpath = "gpx:#{el}"
|
41
|
+
unless parent.find(child_xpath, ns).empty?
|
42
|
+
val = parent.find(child_xpath, ns).first.content
|
43
|
+
self.send("#{el}=", val)
|
47
44
|
end
|
48
45
|
end
|
49
46
|
|
data/lib/gpx/gpx_file.rb
CHANGED
@@ -34,6 +34,8 @@ module GPX
|
|
34
34
|
# puts "Duration: #{gpx_file.duration}"
|
35
35
|
# puts "Bounds: #{gpx_file.bounds}"
|
36
36
|
#
|
37
|
+
# To read a GPX file from a string, use :gpx_data.
|
38
|
+
# gpx_file = GPXFile.new(:gpx_data => '<xml ...><gpx>...</gpx>)
|
37
39
|
# To create a new blank GPXFile instance:
|
38
40
|
# gpx_file = GPXFile.new
|
39
41
|
# Note that you can pass in any instance variables to this form of the initializer, including Tracks or Segments:
|
@@ -42,16 +44,20 @@ module GPX
|
|
42
44
|
#
|
43
45
|
def initialize(opts = {})
|
44
46
|
@duration = 0
|
45
|
-
if(opts[:gpx_file])
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
47
|
+
if(opts[:gpx_file] or opts[:gpx_data])
|
48
|
+
if opts[:gpx_file]
|
49
|
+
gpx_file = opts[:gpx_file]
|
50
|
+
#case gpx_file
|
51
|
+
#when String
|
52
|
+
# gpx_file = File.open(gpx_file)
|
53
|
+
#end
|
54
|
+
gpx_file = gpx_file.name if gpx_file.is_a?(File)
|
55
|
+
@xml = XML::Document.file(gpx_file)
|
56
|
+
else
|
57
|
+
parser = XML::Parser.new
|
58
|
+
parser.string = opts[:gpx_data]
|
59
|
+
@xml = parser.parse
|
60
|
+
end
|
55
61
|
# set XML namespace for XML find
|
56
62
|
if @xml.root.namespace_node
|
57
63
|
@ns = 'gpx:' + @xml.root.namespace_node.href
|
@@ -59,6 +65,7 @@ module GPX
|
|
59
65
|
@ns = 'gpx:http://www.topografix.com/GPX/1/1' # default to GPX 1.1
|
60
66
|
end
|
61
67
|
|
68
|
+
reset_meta_data
|
62
69
|
bounds_element = (@xml.find("//gpx:gpx/gpx:metadata/gpx:bounds", @ns).to_a.first rescue nil)
|
63
70
|
if bounds_element
|
64
71
|
@bounds.min_lat = get_bounds_attr_value(bounds_element, %w{ min_lat minlat minLat })
|
data/lib/gpx/point.rb
CHANGED
@@ -25,7 +25,7 @@ module GPX
|
|
25
25
|
# The base class for all points. Trackpoint and Waypoint both descend from this base class.
|
26
26
|
class Point < Base
|
27
27
|
D_TO_R = PI/180.0;
|
28
|
-
attr_accessor :lat, :lon, :time, :elevation
|
28
|
+
attr_accessor :lat, :lon, :time, :elevation, :gpx_file
|
29
29
|
|
30
30
|
# When you need to manipulate individual points, you can create a Point
|
31
31
|
# object with a latitude, a longitude, an elevation, and a time. In
|
data/lib/gpx/route.rb
CHANGED
@@ -33,10 +33,10 @@ module GPX
|
|
33
33
|
def initialize(opts = {})
|
34
34
|
rte_element = opts[:element]
|
35
35
|
@gpx_file = opts[:gpx_file]
|
36
|
-
@name = rte_element.find("child::gpx:name", @ns).first.content
|
36
|
+
@name = rte_element.find("child::gpx:name", @gpx_file.ns).first.content
|
37
37
|
@points = []
|
38
|
-
rte_element.find("child::gpx:rtept", @ns).each do |point|
|
39
|
-
@points << Point.new(:element => point)
|
38
|
+
rte_element.find("child::gpx:rtept", @gpx_file.ns).each do |point|
|
39
|
+
@points << Point.new(:element => point, :gpx_file => @gpx_file)
|
40
40
|
end
|
41
41
|
|
42
42
|
end
|
data/lib/gpx/waypoint.rb
CHANGED
@@ -27,9 +27,10 @@ module GPX
|
|
27
27
|
# not seen much use yet, since WalkingBoss does not use waypoints right now.
|
28
28
|
class Waypoint < Point
|
29
29
|
|
30
|
-
SUB_ELEMENTS = %
|
30
|
+
SUB_ELEMENTS = %w{ magvar geoidheight name cmt desc src link sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions }
|
31
31
|
|
32
32
|
attr_reader :gpx_file
|
33
|
+
SUB_ELEMENTS.each { |sub_el| attr_accessor sub_el.to_sym }
|
33
34
|
|
34
35
|
# Not implemented
|
35
36
|
def crop(area)
|
@@ -42,9 +43,25 @@ module GPX
|
|
42
43
|
# Initializes a waypoint from a XML::Node.
|
43
44
|
def initialize(opts = {})
|
44
45
|
wpt_elem = opts[:element]
|
45
|
-
super(:element => wpt_elem)
|
46
|
-
instantiate_with_text_elements(wpt_elem, SUB_ELEMENTS)
|
47
46
|
@gpx_file = opts[:gpx_file]
|
47
|
+
super(:element => wpt_elem, :gpx_file => @gpx_file)
|
48
|
+
instantiate_with_text_elements(wpt_elem, SUB_ELEMENTS, @gpx_file.ns)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Prints out a friendly summary of this track (sans points). Useful for
|
52
|
+
# debugging and sanity checks.
|
53
|
+
def to_s
|
54
|
+
result = "Waypoint \n"
|
55
|
+
result << "\tName: #{name}\n"
|
56
|
+
result << "\tLatitude: #{lat} \n"
|
57
|
+
result << "\tLongitude: #{lon} \n"
|
58
|
+
result << "\tElevation: #{elevation}\n "
|
59
|
+
result << "\tTime: #{time}\n"
|
60
|
+
SUB_ELEMENTS.each do |sub_element_attribute|
|
61
|
+
val = self.send(sub_element_attribute)
|
62
|
+
result << "\t#{sub_element_attribute}: #{val}\n" unless val.nil?
|
63
|
+
end
|
64
|
+
result
|
48
65
|
end
|
49
66
|
|
50
67
|
# Converts a waypoint to a XML::Node.
|
data/tests/gpx10_test.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/../lib/gpx'
|
3
|
+
|
4
|
+
class GPXFileTest < Test::Unit::TestCase
|
5
|
+
ONE_TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/one_track.gpx")
|
6
|
+
def test_load_data
|
7
|
+
GPX::GPXFile.new(:gpx_data => open(ONE_TRACK_FILE).read)
|
8
|
+
end
|
9
|
+
end
|
data/tests/gpx_files/routes.gpx
CHANGED
@@ -1 +1,9 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Link2GPS - 2.0.2 - http://www.hiketech.com" xsi:schemaLocation="ttp://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"><metadata><name><![CDATA[routes.gpx]]></name><time>2006-01-02T08:55:34Z</time><bounds min_lat="39.989739" min_lon="-105.295285" max_lat="39.999840" max_lon="-105.214696"/></metadata><extensions/>
|
3
|
+
<rte><name><![CDATA[GRG-CA-TO]]></name>
|
4
|
+
<rtept lat="39.997298" lon="-105.292674"><name><![CDATA[GRG-CA]]></name><sym>Waypoint</sym><ele>1766.535</ele></rtept>
|
5
|
+
<rtept lat="39.995700" lon="-105.292805"><name><![CDATA[AMPTHT]]></name><sym>Waypoint</sym><ele>1854.735</ele></rtept>
|
6
|
+
<rtept lat="39.989739" lon="-105.295285"><name><![CDATA[TO]]></name><sym>Waypoint</sym><ele>2163.556</ele></rtept></rte>
|
7
|
+
<rte><name><![CDATA[SBDR-SBDR]]></name>
|
8
|
+
<rtept lat="39.999840" lon="-105.214696"><name><![CDATA[SBDR]]></name><sym>Waypoint</sym><ele>1612.965</ele></rtept></rte>
|
9
|
+
</gpx>
|
@@ -1 +1,20 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Link2GPS - 2.0.2 - http://www.hiketech.com" xsi:schemaLocation="ttp://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"><metadata><name><![CDATA[waypoints.gpx]]></name><time>2006-01-02T08:55:21Z</time><bounds min_lat="25.061783" min_lon="-111.946110" max_lat="50.982883" max_lon="121.640267"/></metadata><extensions/>
|
3
|
+
<wpt lat="40.035557" lon="-105.248268"><name><![CDATA[001]]></name><sym>Waypoint</sym><ele>1639.161</ele><cmt><![CDATA[001]]></cmt><desc><![CDATA[Just some waypoint...]]></desc></wpt>
|
4
|
+
<wpt lat="39.993070" lon="-105.296588"><name><![CDATA[002]]></name><sym>Waypoint</sym><ele>1955.192</ele></wpt>
|
5
|
+
<wpt lat="39.990151" lon="-105.295680"><name><![CDATA[003]]></name><sym>Waypoint</sym><ele>2129.91</ele></wpt>
|
6
|
+
<wpt lat="39.990157" lon="-105.295686"><name><![CDATA[004]]></name><sym>Waypoint</sym><ele>2136.399</ele></wpt>
|
7
|
+
<wpt lat="39.990134" lon="-105.295251"><name><![CDATA[005]]></name><sym>Waypoint</sym><ele>2174.612</ele></wpt>
|
8
|
+
<wpt lat="39.990116" lon="-105.295147"><name><![CDATA[006]]></name><sym>Waypoint</sym><ele>2156.106</ele></wpt>
|
9
|
+
<wpt lat="39.990099" lon="-105.295207"><name><![CDATA[007]]></name><sym>Waypoint</sym><ele>2155.145</ele></wpt>
|
10
|
+
<wpt lat="39.990067" lon="-105.295185"><name><![CDATA[008]]></name><sym>Waypoint</sym><ele>2152.021</ele></wpt>
|
11
|
+
<wpt lat="39.995700" lon="-105.292805"><name><![CDATA[AMPTHT]]></name><sym>Waypoint</sym><ele>1854.735</ele></wpt>
|
12
|
+
<wpt lat="38.855550" lon="-94.799017"><name><![CDATA[GARMIN]]></name><sym>Waypoint</sym><ele>325.0491</ele></wpt>
|
13
|
+
<wpt lat="39.997298" lon="-105.292674"><name><![CDATA[GRG-CA]]></name><sym>Waypoint</sym><ele>1766.535</ele></wpt>
|
14
|
+
<wpt lat="50.982883" lon="-1.463900"><name><![CDATA[GRMEUR]]></name><sym>Waypoint</sym><ele>35.93469</ele></wpt>
|
15
|
+
<wpt lat="33.330190" lon="-111.946110"><name><![CDATA[GRMPHX]]></name><sym>Waypoint</sym><ele>361.0981</ele></wpt>
|
16
|
+
<wpt lat="25.061783" lon="121.640267"><name><![CDATA[GRMTWN]]></name><sym>Waypoint</sym><ele>38.09766</ele></wpt>
|
17
|
+
<wpt lat="39.999840" lon="-105.214696"><name><![CDATA[SBDR]]></name><sym>Waypoint</sym><ele>1612.965</ele></wpt>
|
18
|
+
<wpt lat="39.989739" lon="-105.295285"><name><![CDATA[TO]]></name><sym>Waypoint</sym><ele>2163.556</ele></wpt>
|
19
|
+
<wpt lat="40.035301" lon="-105.254443"><name><![CDATA[VICS]]></name><sym>Waypoint</sym><ele>1535.34</ele></wpt>
|
20
|
+
</gpx>
|
data/tests/magellan_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require File.dirname(__FILE__) + '/../lib/gpx'
|
3
3
|
|
4
|
-
class
|
4
|
+
class MagellanTest < Test::Unit::TestCase
|
5
5
|
MAGELLAN_TRACK_LOG = File.join(File.dirname(__FILE__), "gpx_files/magellan_track.log")
|
6
6
|
GPX_FILE = File.join(File.dirname(__FILE__), "gpx_files/one_segment.gpx")
|
7
7
|
|
data/tests/route_test.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/../lib/gpx'
|
3
|
+
|
4
|
+
class RouteTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_read_routes
|
7
|
+
gpx = GPX::GPXFile.new(:gpx_file => File.join(File.dirname(__FILE__), "gpx_files/routes.gpx"))
|
8
|
+
assert_equal(2, gpx.routes.size)
|
9
|
+
first_route = gpx.routes.first
|
10
|
+
assert_equal(3, first_route.points.size)
|
11
|
+
assert_equal('GRG-CA-TO', first_route.name)
|
12
|
+
|
13
|
+
|
14
|
+
# Route 1, First Point
|
15
|
+
# <rtept lat="39.997298" lon="-105.292674">
|
16
|
+
# <name><![CDATA[GRG-CA]]></name>
|
17
|
+
# <sym>Waypoint</sym>
|
18
|
+
# <ele>1766.535</ele>
|
19
|
+
# </rtept>
|
20
|
+
assert_equal(39.997298, first_route.points[0].lat)
|
21
|
+
assert_equal(-105.292674, first_route.points[0].lon)
|
22
|
+
assert_equal(1766.535, first_route.points[0].elevation)
|
23
|
+
|
24
|
+
|
25
|
+
# Route 1, Second Point
|
26
|
+
# <rtept lat="39.995700" lon="-105.292805">
|
27
|
+
# <name><![CDATA[AMPTHT]]></name>
|
28
|
+
# <sym>Waypoint</sym>
|
29
|
+
# <ele>1854.735</ele>
|
30
|
+
# </rtept>
|
31
|
+
assert_equal(39.995700, first_route.points[1].lat)
|
32
|
+
assert_equal(-105.292805, first_route.points[1].lon)
|
33
|
+
assert_equal(1854.735, first_route.points[1].elevation)
|
34
|
+
|
35
|
+
# Route 1, Third Point
|
36
|
+
# <rtept lat="39.989739" lon="-105.295285">
|
37
|
+
# <name><![CDATA[TO]]></name>
|
38
|
+
# <sym>Waypoint</sym>
|
39
|
+
# <ele>2163.556</ele>
|
40
|
+
# </rtept>
|
41
|
+
assert_equal(39.989739, first_route.points[2].lat)
|
42
|
+
assert_equal(-105.295285, first_route.points[2].lon)
|
43
|
+
assert_equal(2163.556, first_route.points[2].elevation)
|
44
|
+
|
45
|
+
|
46
|
+
second_route = gpx.routes[1]
|
47
|
+
assert_equal(1, second_route.points.size)
|
48
|
+
assert_equal('SBDR-SBDR', second_route.name)
|
49
|
+
|
50
|
+
# Route 2, Only Point
|
51
|
+
# <rtept lat="39.999840" lon="-105.214696">
|
52
|
+
# <name><![CDATA[SBDR]]></name>
|
53
|
+
# <sym>Waypoint</sym>
|
54
|
+
# <ele>1612.965</ele>
|
55
|
+
# </rtept>
|
56
|
+
assert_equal(39.999840, second_route.points[0].lat)
|
57
|
+
assert_equal(-105.214696, second_route.points[0].lon)
|
58
|
+
assert_equal(1612.965, second_route.points[0].elevation)
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
end
|
data/tests/segment_test.rb
CHANGED
data/tests/track_file_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require File.dirname(__FILE__) + '/../lib/gpx'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TrackFileTest < Test::Unit::TestCase
|
5
5
|
TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/tracks.gpx")
|
6
6
|
OTHER_TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/arches.gpx")
|
7
7
|
|
data/tests/track_test.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/../lib/gpx'
|
3
|
+
|
4
|
+
class WaypointTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_read_waypoints
|
7
|
+
|
8
|
+
gpx = GPX::GPXFile.new(:gpx_file => File.join(File.dirname(__FILE__), "gpx_files/waypoints.gpx"))
|
9
|
+
assert_equal(17, gpx.waypoints.size)
|
10
|
+
|
11
|
+
# First Waypoint
|
12
|
+
# <wpt lat="40.035557" lon="-105.248268">
|
13
|
+
# <name><![CDATA[001]]></name>
|
14
|
+
# <sym>Waypoint</sym>
|
15
|
+
# <ele>1639.161</ele>
|
16
|
+
# <cmt><![CDATA[001]]></cmt>
|
17
|
+
# <desc><![CDATA[Just some waypoint...]]></desc>
|
18
|
+
# </wpt>
|
19
|
+
|
20
|
+
first_wpt = gpx.waypoints[0]
|
21
|
+
assert_equal(40.035557, first_wpt.lat)
|
22
|
+
assert_equal(-105.248268, first_wpt.lon)
|
23
|
+
assert_equal('001', first_wpt.name)
|
24
|
+
assert_equal('001', first_wpt.cmt)
|
25
|
+
assert_equal('Just some waypoint...', first_wpt.desc)
|
26
|
+
assert_equal('Waypoint', first_wpt.sym)
|
27
|
+
assert_equal(1639.161, first_wpt.elevation)
|
28
|
+
|
29
|
+
# Second Waypoint
|
30
|
+
# <wpt lat="39.993070" lon="-105.296588">
|
31
|
+
# <name><![CDATA[002]]></name>
|
32
|
+
# <sym>Waypoint</sym>
|
33
|
+
# <ele>1955.192</ele>
|
34
|
+
# </wpt>
|
35
|
+
second_wpt = gpx.waypoints[1]
|
36
|
+
assert_equal(39.993070, second_wpt.lat)
|
37
|
+
assert_equal(-105.296588, second_wpt.lon)
|
38
|
+
assert_equal('002', second_wpt.name)
|
39
|
+
assert_equal('Waypoint', second_wpt.sym)
|
40
|
+
assert_equal(1955.192, second_wpt.elevation)
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
metadata
CHANGED
@@ -1,33 +1,26 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: gpx
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2007-11-29 00:00:00 -07:00
|
8
|
-
summary: A basic API for reading and writing GPX files.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: doug.fales@gmail.com
|
12
|
-
homepage: http://gpx.rubyforge.com/
|
13
|
-
rubyforge_project:
|
14
|
-
description: A basic API for reading and writing GPX files.
|
15
|
-
autorequire: gpx
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: "0.3"
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Doug Fales
|
8
|
+
autorequire: gpx
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-02-11 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A basic API for reading and writing GPX files.
|
17
|
+
email: doug.fales@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
31
24
|
files:
|
32
25
|
- lib/gpx
|
33
26
|
- lib/gpx/bounds.rb
|
@@ -42,6 +35,7 @@ files:
|
|
42
35
|
- lib/gpx/waypoint.rb
|
43
36
|
- lib/gpx.rb
|
44
37
|
- tests/gpx10_test.rb
|
38
|
+
- tests/gpx_file_test.rb
|
45
39
|
- tests/gpx_files
|
46
40
|
- tests/gpx_files/arches.gpx
|
47
41
|
- tests/gpx_files/gpx10.gpx
|
@@ -52,22 +46,38 @@ files:
|
|
52
46
|
- tests/gpx_files/tracks.gpx
|
53
47
|
- tests/gpx_files/waypoints.gpx
|
54
48
|
- tests/magellan_test.rb
|
49
|
+
- tests/route_test.rb
|
55
50
|
- tests/segment_test.rb
|
56
51
|
- tests/track_file_test.rb
|
57
52
|
- tests/track_test.rb
|
53
|
+
- tests/waypoint_test.rb
|
58
54
|
- Rakefile
|
59
55
|
- README
|
60
|
-
|
61
|
-
|
56
|
+
has_rdoc: true
|
57
|
+
homepage: http://gpx.rubyforge.com/
|
58
|
+
post_install_message:
|
62
59
|
rdoc_options: []
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
version:
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
70
75
|
requirements: []
|
71
76
|
|
72
|
-
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 1.0.1
|
79
|
+
signing_key:
|
80
|
+
specification_version: 2
|
81
|
+
summary: A basic API for reading and writing GPX files.
|
82
|
+
test_files: []
|
73
83
|
|