gpx_track 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa9f853406843a0cde03333879fbf1af4572cbe5
4
- data.tar.gz: a2015d8bafd5bb029f6af731657ad5274112c3f7
3
+ metadata.gz: d47aea20143f27cbd7ad88244d1c64a2d05316f7
4
+ data.tar.gz: de1a1003bbe17086ba9d82e5f14147ff48c7a962
5
5
  SHA512:
6
- metadata.gz: 9d772909f9896f1ba4a24ba0df340d59c1816a3cb9bd42a00423f2cc5aa9f9665dc68b8cb9fffa5f79644365f35fbe1a0a0244c2b5f8578c060777f637e2d9a5
7
- data.tar.gz: 0008564066046f99ee8f0e23f98e904cae286b76f0bb9d8088fb4c914eedc52cdad119680b24803e1cb99b2df25e075f21cb47fce82a84db42ae9552142681e4
6
+ metadata.gz: 6a2548e0c4444ac6d17804624647e84b4eef1e1f624894ef85493cbf544fcb6d1a76a6e1c0022e5a06fac3893a3d9865d4429b12505861a7b0ed9cb52c7cc7cd
7
+ data.tar.gz: 0c1454faffd3e4b08edb2dab88d7a623075435059ec26922542286a2ed9afbc85dbcaefa3bae29e7d740f932cee74545725af0a74a5ec95d7c73f8a3268acad5
data/.gitignore CHANGED
@@ -16,6 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
 
19
-
20
19
  #OSX
21
20
  .DS_Store
@@ -1 +1 @@
1
- ruby-2.0.0-p247
1
+ 2.0.0-p247
data/.simplecov CHANGED
@@ -1,4 +1,5 @@
1
1
  SimpleCov.minimum_coverage 90
2
2
  SimpleCov.start do
3
3
  add_filter "/spec/"
4
- end
4
+ add_filter ".bundle"
5
+ end
data/README.md CHANGED
@@ -26,11 +26,14 @@ Or install it yourself as:
26
26
 
27
27
  gpx.points_count # get count of track points
28
28
 
29
- gpx.times.last[:t] # get track length
29
+ gpx.duration # get track duration [s]
30
+ gpx.length # get track length [km]
31
+
32
+ gpx.times[n][:t] # get time delta for n-th and n-1-th track point
30
33
  gpx.times[n][:dt] # get time delta for n-th and n-1-th track point
31
34
 
32
- gpx.distance[n][:s] # get distance between track start and n-th track point
33
- gpx.distance[n][:ds] # get distance delta for track n-th and n-1-th track point
35
+ gpx.distances[n][:s] # get distance between track start and n-th track point
36
+ gpx.distances[n][:ds] # get distance delta for track n-th and n-1-th track point
34
37
 
35
38
  gpx.max_speed # get max value from all partial speeds (ds/dt)
36
39
  gpx.average_speed # get average speed for track
@@ -38,7 +41,7 @@ Or install it yourself as:
38
41
  gpx.speeds # get partial speeds
39
42
 
40
43
  gpx.start_date # date when track begins
41
- gpx.end_date # date when track ends
44
+ gpx.end_date # date when track ends
42
45
 
43
46
  ## Contributing
44
47
 
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "nokogiri"
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.3"
22
24
  spec.add_development_dependency "rake"
23
25
  spec.add_development_dependency "rspec"
24
26
  spec.add_development_dependency "simplecov"
25
-
26
- spec.add_dependency "nokogiri"
27
27
  end
@@ -1,7 +1,8 @@
1
1
  module GPX
2
-
3
- # Exception occurs when file opened by GPX class is in other format or not exists
2
+
3
+ # Exception occurs when file opened by GPX class
4
+ # is in other format or not exists
4
5
  class GPXInvalidFileException < Exception
5
6
  end
6
-
7
+
7
8
  end
@@ -2,8 +2,9 @@ require 'time'
2
2
  require 'nokogiri'
3
3
 
4
4
  module GPX
5
-
6
- # Class is responsible for parsing GPX files and calculate track statistics
5
+
6
+ # Class is responsible for parsing GPX files
7
+ # and calculate track statistics
7
8
  class GPX
8
9
  attr_reader :points_count,
9
10
  :points,
@@ -14,25 +15,25 @@ module GPX
14
15
  :max_speed,
15
16
  :start_date,
16
17
  :end_date
17
-
18
+
18
19
  def points_count
19
20
  (@points) ? @points.count : 0
20
21
  end
21
-
22
+
22
23
  def start_date
23
24
  @dates.first
24
25
  end
25
-
26
+
26
27
  def end_date
27
28
  @dates.last
28
29
  end
29
-
30
+
30
31
  def speeds
31
32
  unless @speeds
32
33
  @speeds = self.distances.zip(self.times).collect do |dist,time|
33
34
  dt = time[:dt]
34
35
  unless dt == 0
35
- next dist[:ds]/dt*3600
36
+ next dist[:ds]/dt*3600
36
37
  else
37
38
  next 0
38
39
  end
@@ -40,14 +41,14 @@ module GPX
40
41
  end
41
42
  @speeds
42
43
  end
43
-
44
+
44
45
  def max_speed
45
46
  unless @max_speed
46
47
  @max_speed = self.speeds.sort_by{|speed| speed}.last
47
48
  end
48
49
  @max_speed
49
50
  end
50
-
51
+
51
52
  def average_speed
52
53
  unless @average_speed
53
54
  @average_speed = 0
@@ -56,33 +57,39 @@ module GPX
56
57
  end
57
58
  @average_speed
58
59
  end
59
-
60
+
60
61
  def times
61
62
  calculate_times unless @times
62
63
  @times
63
64
  end
64
-
65
+
66
+ def duration
67
+ self.times.last[:t]
68
+ end
69
+
65
70
  def distances
66
71
  calculate_distances unless @distances
67
72
  @distances
68
73
  end
69
-
74
+
75
+ def length
76
+ self.distances.last[:s]
77
+ end
78
+
70
79
  def initialize(path)
71
80
  @doc = nil
72
-
81
+
73
82
  begin
74
83
  path = open(path)
75
84
  doc = Nokogiri::XML(path)
76
85
  rescue
77
86
  raise GPXInvalidFileException
78
87
  end
79
-
80
- # raise GPXInvalidFileException if doc.children.empty?
81
-
88
+
82
89
  @points = []
83
90
  @dates = []
84
-
85
- doc.search('trkpt').map do |el|
91
+
92
+ doc.search('trkpt').map do |el|
86
93
  @dates.push Time.parse(el.at('time').text)
87
94
  @points.push GeoPoint.new(
88
95
  latitude: el['lat'].to_f,
@@ -91,9 +98,9 @@ module GPX
91
98
  )
92
99
  end
93
100
  end
94
-
101
+
95
102
  private
96
-
103
+
97
104
  def calculate_times
98
105
  @times = [ { dt: 0.0, t: 0.0 } ]
99
106
  @dates.each_cons(2) do |date|
@@ -104,18 +111,18 @@ module GPX
104
111
  @times.push time
105
112
  end
106
113
  end
107
-
114
+
108
115
  def calculate_distances
109
116
  @distances = [ {ds: 0.0, s: 0.0} ]
110
117
  @points.each_cons(2) do |point|
111
- distance = {
118
+ distance = {
112
119
  ds: difference = Haversine.distance(point[0], point[1]),
113
120
  s: difference + @distances.last[:s]
114
121
  }
115
122
  @distances.push distance
116
123
  end
117
124
  end
118
-
125
+
119
126
  end
120
-
127
+
121
128
  end
@@ -1,31 +1,32 @@
1
1
  module GPX
2
-
2
+
3
3
  # Class is responsible for calculating distance between two geo points (it considers point height)
4
4
  class Haversine
5
5
  RADIAN_PER_DEGREE = Math::PI/180.0
6
6
  EARTH_RADIUS = 6371.00079
7
-
7
+
8
8
  def self.distance(first_point, second_point)
9
9
  first_latitude_rad = first_point.latitude.to_f * RADIAN_PER_DEGREE
10
10
  second_latitude_rad = second_point.latitude.to_f * RADIAN_PER_DEGREE
11
-
11
+
12
12
  delta_longitude = (second_point.longitude.to_f - first_point.longitude.to_f) * RADIAN_PER_DEGREE
13
13
  delta_latitude = (second_point.latitude.to_f - first_point.latitude.to_f) * RADIAN_PER_DEGREE
14
-
14
+
15
15
  elevation = (first_point.elevation.to_f / 1000.0 - second_point.elevation.to_f / 1000.0).abs
16
-
17
- triangulate(EARTH_RADIUS * calculate_distance(first_latitude_rad, second_latitude_rad, delta_latitude, delta_longitude), elevation)
16
+
17
+ distance = calculate_distance(first_latitude_rad, second_latitude_rad, delta_latitude, delta_longitude)
18
+ triangulate(EARTH_RADIUS * distance, elevation)
18
19
  end
19
-
20
+
20
21
  private
21
22
  def self.calculate_distance(first_latitude_rad, second_latitude_rad, delta_latitude, delta_longitude)
22
23
  coefficient = (Math::sin(delta_latitude/2.0)**2.0) +
23
24
  Math::cos(first_latitude_rad) * Math::cos(second_latitude_rad) * (Math::sin(delta_longitude/2.0)**2.0)
24
-
25
+
25
26
  2.0 * Math::atan2(Math::sqrt(coefficient), Math::sqrt(1.0-coefficient))
26
27
  end
27
-
28
- def self.triangulate (distance, height)
28
+
29
+ def self.triangulate (distance, height)
29
30
  Math::sqrt(distance**2 + height**2)
30
31
  end
31
32
  end
@@ -1,3 +1,3 @@
1
1
  module GPX
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,78 +1,84 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GPX do
4
-
4
+
5
5
  describe "file with one point" do
6
6
  before do
7
7
  @gpx = GPX::GPX.new 'spec/assets/one_point.gpx'
8
8
  end
9
-
9
+
10
10
  subject { @gpx }
11
-
11
+
12
12
  it { should respond_to :points }
13
13
  it { should_not respond_to :points= }
14
-
14
+
15
15
  it { should respond_to :points_count }
16
16
  it { should_not respond_to :points_count= }
17
-
17
+
18
18
  it { should_not respond_to :elevations }
19
19
  it { should_not respond_to :elevations= }
20
-
20
+
21
21
  it { should respond_to :times }
22
22
  it { should_not respond_to :times= }
23
-
23
+
24
+ it { should respond_to :duration }
25
+ it { should_not respond_to :duration= }
26
+
24
27
  it { should respond_to :speeds }
25
28
  it { should_not respond_to :speeds= }
26
-
29
+
27
30
  it { should respond_to :distances }
28
31
  it { should_not respond_to :distances= }
29
-
32
+
33
+ it { should respond_to :length }
34
+ it { should_not respond_to :length= }
35
+
30
36
  it { should_not respond_to :times_cumulated }
31
37
  it { should_not respond_to :times_cumulated= }
32
-
38
+
33
39
  it { should_not respond_to :distances_cumulated }
34
40
  it { should_not respond_to :distances_cumulated= }
35
-
41
+
36
42
  it { should respond_to :average_speed }
37
43
  it { should_not respond_to :average_speed= }
38
-
44
+
39
45
  it { should respond_to :max_speed }
40
46
  it { should_not respond_to :max_speed= }
41
-
47
+
42
48
  it { should respond_to :start_date }
43
49
  it { should_not respond_to :start_date= }
44
-
50
+
45
51
  it { should respond_to :end_date }
46
52
  it { should_not respond_to :end_date= }
47
-
53
+
48
54
  it "should return one point" do
49
55
  @gpx.points_count.should eq 1
50
56
  end
51
-
57
+
52
58
  it "should return point time" do
53
59
  @gpx.times.first[:dt].should eq 0
54
60
  end
55
-
61
+
56
62
  it "should return point cumulated time" do
57
63
  @gpx.times.first[:t].should eq 0
58
64
  end
59
-
65
+
60
66
  it "average speed should be zero" do
61
67
  @gpx.average_speed.should eq 0
62
68
  end
63
-
69
+
64
70
  it "max speed should be zero" do
65
71
  @gpx.max_speed.should eq 0
66
72
  end
67
-
73
+
68
74
  it "start date should not be nil" do
69
75
  @gpx.start_date.should_not eq nil
70
76
  end
71
-
77
+
72
78
  it "start date should equals end date" do
73
79
  @gpx.start_date.should eq @gpx.end_date
74
80
  end
75
-
81
+
76
82
  describe "should return one zero distance (because of one point)" do
77
83
  it "distances count should equals one" do
78
84
  @gpx.distances.count.should eq 1
@@ -84,7 +90,7 @@ describe GPX do
84
90
  @gpx.distances.first[:s].should eq 0
85
91
  end
86
92
  end
87
-
93
+
88
94
  describe "should return one zero speed (because of one point)" do
89
95
  it "speeds count should equals one" do
90
96
  @gpx.speeds.count.should eq 1
@@ -93,53 +99,53 @@ describe GPX do
93
99
  @gpx.speeds[0].should eq 0
94
100
  end
95
101
  end
96
-
102
+
97
103
  it "should have proper latitude" do
98
104
  @gpx.points.first.latitude.should eq 47.644548
99
105
  end
100
106
  end
101
-
107
+
102
108
  describe "file with more than one track point" do
103
109
  POINTS_COUNT = 6
104
-
110
+
105
111
  before do
106
112
  @gpx = GPX::GPX.new 'spec/assets/two_tracks.gpx'
107
113
  end
108
-
114
+
109
115
  subject { @gpx }
110
-
116
+
111
117
  it "should return all points in one array" do
112
118
  @gpx.points_count.should eq POINTS_COUNT
113
119
  end
114
-
120
+
115
121
  it "last point should not be nil" do
116
122
  @gpx.points.last.should_not eq nil
117
123
  end
118
-
124
+
119
125
  it "should return same count of distances elements as points" do
120
126
  @gpx.distances.count.should eq POINTS_COUNT
121
127
  end
122
-
128
+
123
129
  it "should return same count of speeds elements as points" do
124
130
  @gpx.speeds.count.should eq POINTS_COUNT
125
131
  end
126
-
132
+
127
133
  it "last point speed should not be nil" do
128
134
  @gpx.speeds.last.should_not eq nil
129
135
  end
130
-
136
+
131
137
  it "should return same count of time elements as points" do
132
138
  @gpx.times.count.should eq POINTS_COUNT
133
139
  end
134
-
140
+
135
141
  it "last point time should not be nil" do
136
142
  @gpx.times.last.should_not eq nil
137
143
  end
138
-
144
+
139
145
  it "last point cumulated time should be positive" do
140
146
  @gpx.times.last[:t].should > 0
141
147
  end
142
-
148
+
143
149
  it "last point distance should not be zero" do
144
150
  @gpx.distances.last[:ds].should_not eq 0
145
151
  end
@@ -147,39 +153,47 @@ describe GPX do
147
153
  it "last point cumulated distance should not be zero" do
148
154
  @gpx.distances.last[:s].should_not eq 0
149
155
  end
150
-
156
+
157
+ it "cumulated time should equals duration" do
158
+ @gpx.times.last[:t].should eq @gpx.duration
159
+ end
160
+
161
+ it "cumulated distance should equals track length" do
162
+ @gpx.distances.last[:s].should eq @gpx.length
163
+ end
164
+
151
165
  it "average speed should be positive" do
152
166
  @gpx.average_speed.should > 0
153
167
  end
154
-
168
+
155
169
  it "max speed should be positive" do
156
170
  @gpx.max_speed.should > 0
157
171
  end
158
-
172
+
159
173
  it "start date should not equals end date" do
160
174
  @gpx.start_date.should_not eq @gpx.end_date
161
175
  end
162
176
  end
163
-
177
+
164
178
  it "return exeption for non-existing file" do
165
179
  expect {
166
- gpx = GPX::GPX.new 'spec/assets/some_filt_that_not_exists_25363.gpx'
180
+ GPX::GPX.new 'spec/assets/some_filt_that_not_exists_25363.gpx'
167
181
  }.to raise_error( GPX::GPXInvalidFileException )
168
182
  end
169
-
183
+
170
184
  let(:wrong_file_type_gpx) {GPX::GPX.new 'spec/assets/blank.gif'}
171
185
  it "return no points for wrong file type" do
172
186
  wrong_file_type_gpx.points_count.should eq 0
173
187
  end
174
-
188
+
175
189
  let(:blank_file_gpx) {GPX::GPX.new 'spec/assets/blank.gpx'}
176
190
  it "return no points for blank file" do
177
191
  blank_file_gpx.points_count.should eq 0
178
192
  end
179
-
193
+
180
194
  it "should return zero points for file with no track point" do
181
195
  gpx = GPX::GPX.new 'spec/assets/empty.gpx'
182
196
  gpx.points_count.should eq(0)
183
197
  end
184
-
198
+
185
199
  end
@@ -5,26 +5,26 @@ PRECISION = 0.002 # 0.01%
5
5
  describe GPX::Haversine do
6
6
  def should_equals_distance_with_precision(checked_distance, real_distance)
7
7
  (checked_distance-real_distance).abs.should < real_distance * PRECISION
8
- end
9
-
8
+ end
9
+
10
10
  let(:zabrze) { GPX::GeoPoint.new(latitude: 50.3167, longitude: 18.7833, elevation: 0) }
11
11
  let(:katowice) { GPX::GeoPoint.new(latitude: 50.2667, longitude: 19.0167, elevation: 0) }
12
12
  let(:katowice_distance) { 17.47 }
13
-
13
+
14
14
  it "should return proper distance from Zabrze, PL to Katowice, PL" do
15
15
  distance = GPX::Haversine.distance(zabrze, katowice)
16
16
  should_equals_distance_with_precision(distance, katowice_distance)
17
17
  end
18
-
18
+
19
19
  it "should return proper distance from Katowice, PL to Zabrze, PL" do
20
20
  distance = GPX::Haversine.distance(katowice, zabrze)
21
21
  should_equals_distance_with_precision(distance, katowice_distance)
22
22
  end
23
-
23
+
24
24
  let(:tokyo) { GPX::GeoPoint.new(latitude: 35.6850, longitude: 139.7514, elevation: 0) }
25
25
  let(:london) { GPX::GeoPoint.new(latitude: 51.5000, longitude: -0.1167, elevation: 0) }
26
26
  let(:london_distance) { 9554.72 }
27
-
27
+
28
28
  it "should return proper distance from Tokyo, JP to London, GB" do
29
29
  distance = GPX::Haversine.distance(tokyo, london)
30
30
  should_equals_distance_with_precision(distance, london_distance)
@@ -37,17 +37,17 @@ describe GPX::Haversine do
37
37
  )
38
38
  should_equals_distance_with_precision(distance, 20038)
39
39
  end
40
-
40
+
41
41
  let(:same_point) { GPX::GeoPoint.new(latitude: 44.654, longitude: 44.654, elevation: 0) }
42
42
  it "should return 0 for same lat/lon" do
43
43
  distance = GPX::Haversine.distance(same_point,same_point)
44
44
  distance.should eq 0
45
45
  end
46
-
46
+
47
47
  let(:height) { GPX::GeoPoint.new(latitude: 44.654, longitude: 44.654, elevation: 1233.54) }
48
48
  it "should return proper height for same lat/lon" do
49
49
  distance = GPX::Haversine.distance(same_point, height)
50
50
  distance.should eq height.elevation/1000
51
51
  end
52
-
52
+
53
53
  end
@@ -1,4 +1,5 @@
1
1
  require 'simplecov'
2
+
2
3
  SimpleCov.start
3
4
 
4
- require 'gpx'
5
+ require 'gpx'
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gpx_track
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dawid Dziurdzia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-15 00:00:00.000000000 Z
11
+ date: 2013-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: simplecov
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: nokogiri
70
+ name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :runtime
76
+ type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Provide GPX file parsing
@@ -87,10 +87,10 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - .gitignore
91
- - .ruby-gemset
92
- - .ruby-version
93
- - .simplecov
90
+ - ".gitignore"
91
+ - ".ruby-gemset"
92
+ - ".ruby-version"
93
+ - ".simplecov"
94
94
  - Gemfile
95
95
  - LICENSE.txt
96
96
  - README.md
@@ -121,17 +121,17 @@ require_paths:
121
121
  - lib
122
122
  required_ruby_version: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  requirements: []
133
133
  rubyforge_project:
134
- rubygems_version: 2.0.5
134
+ rubygems_version: 2.1.10
135
135
  signing_key:
136
136
  specification_version: 4
137
137
  summary: Provide GPX file parsing