gooby 0.9.4 → 0.9.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.
Files changed (91) hide show
  1. data/README +48 -67
  2. data/bin/20050305_corporate_cup_hm_to_csv.rb +9 -0
  3. data/bin/20050430_nashville_marathon_to_csv.rb +9 -0
  4. data/bin/20060115_phoenix_marathon_to_csv.rb +9 -0
  5. data/bin/activity_2007_03_10_13_02_32.xml_to_csv.rb +9 -0
  6. data/bin/{tests_gen.rb → code_scan.rb} +6 -4
  7. data/bin/example_usage.rb +2 -3
  8. data/bin/example_usage.sh +52 -0
  9. data/bin/gen_gap_phx.rb +10 -0
  10. data/bin/gen_gmap_cc_2005.rb +10 -0
  11. data/bin/gen_gmap_cc_2007.rb +10 -0
  12. data/bin/gen_gmap_nashville.rb +10 -0
  13. data/bin/gen_gmap_phx.rb +10 -0
  14. data/bin/phx_to_csv.rb +47 -0
  15. data/bin/split_forerunner_logbook_2007.rb +10 -0
  16. data/bin/split_training_center_2007.rb +8 -0
  17. data/data/{2007_03_04.tcx → 2007_03_10.tcx} +11694 -0
  18. data/data/activity_2007_03_10_13_02_32.csv +1168 -0
  19. data/data/activity_2007_03_10_13_02_32.xml +11695 -0
  20. data/data/forerunner_2007.xml +0 -227142
  21. data/img/gicons/readme.txt +3 -0
  22. data/lib/gooby.rb +625 -552
  23. data/samples/20050305_corporate_cup_hm.html +271 -269
  24. data/samples/20050430_nashville_marathon.html +1240 -246
  25. data/samples/20060115_phoenix_marathon.html +1596 -0
  26. data/samples/20070310_corporate_cup_hm.html +1367 -0
  27. data/samples/phoenix_marathon.html +1312 -258
  28. data/tests/ts_gooby.rb +423 -551
  29. data/tests/ts_gooby_min.rb +550 -0
  30. metadata +25 -67
  31. data/bin/tcx_ex.rb +0 -35
  32. data/data/20051124_hyatt_turkey_trot_8K.csv +0 -321
  33. data/data/20051124_hyatt_turkey_trot_8K.xml +0 -2651
  34. data/data/2007_03_03.tcx +0 -6207
  35. data/data/activity_2007_03_04_15_22_36.xml +0 -10545
  36. data/data/run_2007_01_01_16_38_27.xml +0 -2020
  37. data/data/run_2007_02_24_15_01_35.csv +0 -484
  38. data/data/run_2007_02_24_15_01_35.xml +0 -3884
  39. data/lib/gooby/cls_counter_hash.rb +0 -78
  40. data/lib/gooby/cls_delim_line.rb +0 -35
  41. data/lib/gooby/cls_dttm.rb +0 -79
  42. data/lib/gooby/cls_duration.rb +0 -79
  43. data/lib/gooby/cls_forerunner_xml_parser.rb +0 -178
  44. data/lib/gooby/cls_forerunner_xml_splitter.rb +0 -109
  45. data/lib/gooby/cls_geo_data.rb +0 -181
  46. data/lib/gooby/cls_gooby_command.rb +0 -46
  47. data/lib/gooby/cls_gooby_object.rb +0 -18
  48. data/lib/gooby/cls_google_map_generator.rb +0 -363
  49. data/lib/gooby/cls_history.rb +0 -33
  50. data/lib/gooby/cls_lap.rb +0 -22
  51. data/lib/gooby/cls_line.rb +0 -75
  52. data/lib/gooby/cls_options.rb +0 -67
  53. data/lib/gooby/cls_position.rb +0 -44
  54. data/lib/gooby/cls_run.rb +0 -194
  55. data/lib/gooby/cls_simple_xml_parser.rb +0 -41
  56. data/lib/gooby/cls_test_regen.rb +0 -182
  57. data/lib/gooby/cls_track.rb +0 -47
  58. data/lib/gooby/cls_trackpoint.rb +0 -200
  59. data/lib/gooby/cls_training_center_parser.rb +0 -183
  60. data/lib/gooby/cls_training_center_splitter.rb +0 -109
  61. data/lib/gooby/mod_introspect.rb +0 -26
  62. data/lib/gooby/mod_io.rb +0 -58
  63. data/lib/gooby/mod_project_info.rb +0 -80
  64. data/lib/gooby/mod_string.rb +0 -19
  65. data/lib/gooby/mod_test_helper.rb +0 -15
  66. data/samples/20041113_richmond_marathon.html +0 -532
  67. data/samples/run_2007_01_10_22_44_54.html +0 -201
  68. data/samples/run_2007_02_24_15_01_35.html +0 -298
  69. data/tests/tc_cls_counter_hash.rb +0 -107
  70. data/tests/tc_cls_delim_line.rb +0 -74
  71. data/tests/tc_cls_dttm.rb +0 -131
  72. data/tests/tc_cls_duration.rb +0 -51
  73. data/tests/tc_cls_forerunner_xml_parser.rb +0 -70
  74. data/tests/tc_cls_geo_data.xxx +0 -71
  75. data/tests/tc_cls_gooby_object.rb +0 -26
  76. data/tests/tc_cls_google_map_generator.rb +0 -109
  77. data/tests/tc_cls_history.rb +0 -46
  78. data/tests/tc_cls_lap.rb +0 -38
  79. data/tests/tc_cls_line.rb +0 -110
  80. data/tests/tc_cls_options.rb +0 -79
  81. data/tests/tc_cls_position.rb +0 -66
  82. data/tests/tc_cls_run.rb +0 -142
  83. data/tests/tc_cls_simple_xml_parser.rb +0 -50
  84. data/tests/tc_cls_track.rb +0 -70
  85. data/tests/tc_cls_trackpoint.rb +0 -145
  86. data/tests/tc_mod_introspect.rb +0 -32
  87. data/tests/tc_mod_io.rb +0 -53
  88. data/tests/tc_mod_project_info.rb +0 -79
  89. data/tests/tc_mod_string.rb +0 -58
  90. /data/data/{phx.csv → 20060115_phoenix_marathon.csv} +0 -0
  91. /data/data/{phx.xml → 20060115_phoenix_marathon.xml} +0 -0
@@ -1,200 +0,0 @@
1
- module Gooby
2
-
3
- =begin rdoc
4
- Instances of this class represent a <Trackpoint> aggregate from a Forerunner
5
- XML file. Additionally, there is distance, pace, and Google Map generation
6
- logic in this class.
7
-
8
- <Trackpoint>
9
- <Position>
10
- <Latitude>35.49577</Latitude>
11
- <Longitude>-80.83281</Longitude>
12
- <Altitude>232.296</Altitude>
13
- </Position>
14
- <Time>2007-01-06T15:27:51Z</Time>
15
- </Trackpoint>
16
- =end
17
-
18
- class Trackpoint < Position
19
-
20
- attr_reader :first, :last, :number, :runNumber, :dttm, :prevTkpt, :descr
21
- attr_reader :cumulativeDistance, :cumulativePace, :incrementalDistance, :split, :prevSplit
22
- attr_writer :first, :last, :runNumber
23
-
24
- def initialize(num, lat, lng, alt, time_string, descr='')
25
- @number = num
26
- @runNumber = 0
27
-
28
- # initialize superclass variables:
29
- @latitude = lat.to_s
30
- @longitude = lng.to_s
31
- @altitude = alt.to_s
32
- @note = note.to_s
33
- @dttm = DtTm.new(time_string)
34
- @first = false
35
- @last = false
36
- @prevTkpt = nil
37
- @cumulativeDistance, @split = 0.0, 0.0
38
- @cumulativePace = ""
39
- @descr = descr
40
- end
41
-
42
- public
43
-
44
- def position
45
- Position.new(@latitude, @longitude, @altitude, @note)
46
- end
47
-
48
- def to_s
49
- "Tkpt: #{@number} #{super.to_s} date: #{@dttm.to_s} cdist: #{@cumulativeDistance}"
50
- end
51
-
52
- def to_csv
53
- ss = position.to_csv
54
- "#{@runNumber} | #{@dttm.to_s} | #{@number} | #{ss} | #{@cumulativeDistance} "
55
- end
56
-
57
- def to_geo_s
58
- ss = position.to_csv
59
- "Tkpt: #{@number} | #{ss} | #{@descr}"
60
- end
61
-
62
- def compute_distance_and_pace(curr_index, start_dttm, prev_cumulative_dist, prev_trackpoint, units)
63
- @prev_tkpt = prev_trackpoint
64
- @cumulativeDistance = prev_cumulative_dist.to_f
65
-
66
- if @prev_tkpt
67
- arg1 = latitude().to_f
68
- arg2 = @prev_tkpt.latitude().to_f
69
- arg3 = latitude().to_f
70
- arg4 = @prev_tkpt.latitude().to_f
71
- theta = longitude().to_f - @prev_tkpt.longitude().to_f
72
-
73
- res1 = Math.sin(deg2rad(arg1))
74
- res2 = Math.sin(deg2rad(arg2))
75
- res3 = Math.cos(deg2rad(arg3))
76
- res4 = Math.cos(deg2rad(arg4))
77
- res5 = Math.cos(deg2rad(theta.to_f))
78
-
79
- incremental_distance = ((res1 * res2) + (res3 * res4 * res5)).to_f
80
-
81
- if (!incremental_distance.nan?)
82
- incremental_distance = Math.acos(incremental_distance.to_f)
83
- if (!incremental_distance.nan?)
84
- incremental_distance = rad2deg(incremental_distance)
85
- if (!incremental_distance.nan?)
86
- incremental_distance = incremental_distance * 60 * 1.1515;
87
- if (!incremental_distance.nan?)
88
- if units == "K"
89
- incremental_distance = incremental_distance * 1.609344;
90
- end
91
- if units == "N"
92
- incremental_distance = incremental_distance * 0.8684;
93
- end
94
- @cumulativeDistance = @cumulativeDistance + incremental_distance.to_f
95
- end
96
- end
97
- end
98
- end
99
- compute_cumulative_pace(start_dttm)
100
- @cumulativeDistance
101
- else
102
- 0
103
- end
104
- end
105
-
106
- def compute_cumulative_pace(start_dttm)
107
- if @cumulativeDistance > 0
108
- secsDiff = @dttm.seconds_diff(start_dttm)
109
- secsMile = ((secsDiff.to_f) / (@cumulativeDistance.to_f))
110
- minsMile = (secsMile / 60)
111
- wholeMins = minsMile.floor
112
- secsBal = secsMile - (wholeMins * 60)
113
- s1 = "#{secsDiff} #{secsMile} #{minsMile} #{wholeMins} #{secsBal} #{@cumulativeDistance} | "
114
- s2 = sprintf("%d:%2.1f", minsMile, secsBal)
115
- @cumulativePace = "#{s2}"
116
- else
117
- @cumulativePace = ""
118
- end
119
- end
120
-
121
- def set_split(n, tkpt)
122
- @split, @prevSplit = n, tkpt
123
- end
124
-
125
- def is_split()
126
- (@split >= 1)
127
- end
128
-
129
- def is_first()
130
- @first
131
- end
132
-
133
- def is_last()
134
- @last
135
- end
136
-
137
- def split_info(dtTm)
138
- if is_split
139
- hhmmss = ''
140
- if @prevSplit
141
- return "#{@split} #{@dttm.hhmmss_diff(@prevSplit.dttm())}"
142
- else
143
- return "#{@split} #{@dttm.hhmmss_diff(dtTm)}"
144
- end
145
- else
146
- ""
147
- end
148
- end
149
-
150
- private
151
-
152
- def deg2rad(degrees)
153
- (((0 + degrees) * Math::PI) / 180)
154
- end
155
-
156
- def rad2deg(radians)
157
- (((0 + radians) * 180) / Math::PI)
158
- end
159
-
160
- public
161
-
162
- def as_glatlng(comments, tkpt_count, curr_idx, gpoint_count, start_dttm)
163
- if comments
164
- secs_diff = @dttm.seconds_diff(start_dttm)
165
- fmt_time = @dttm.hhmmss_diff(start_dttm)
166
- "\n points.push(new GLatLng(#{latitude_as_float},#{longitude_as_float})); " +
167
- "// #{gpoint_count} (#{curr_idx + 1} of #{tkpt_count}) #{@dttm.to_s} #{secs_diff} #{fmt_time} #{@cumulativeDistance} #{split_info(start_dttm)} "
168
- else
169
- "\n points.push(new GLatLng(#{latitude_as_float},#{longitude_as_float})); "
170
- end
171
- end
172
-
173
- def as_info_window_html(checkpoint, start_dttm)
174
- s = "\"<table align='left'>"
175
- if checkpoint
176
- secs_diff = @dttm.seconds_diff(start_dttm)
177
- fmt_time = @dttm.hhmmss_diff(start_dttm)
178
-
179
- if checkpoint == 'Start'
180
- s << "<tr><td colspan='2'><b>Start!</b></td></tr>"
181
- elsif checkpoint == 'Finish'
182
- s << "<tr><td colspan='2'><b>Finish!</b></td></tr>"
183
- else
184
- s << "<tr><td colspan='2'><b>Checkpoint #{checkpoint}</b></td></tr>"
185
- end
186
- s << "<tr><td>Distance: </td><td>#{@cumulativeDistance}</td></tr>"
187
- s << "<tr><td>Time of Day: </td><td>#{@dttm.to_s} </td></tr>"
188
- s << "<tr><td>Elapsed Time: </td><td>#{fmt_time} </td></tr>"
189
- s << "<tr><td>Average Pace: </td><td>#{@cumulativePace} </td></tr>"
190
- s << "<tr><td>Lat/Lng: </td><td>#{latitude_as_float} , #{longitude_as_float} </td></tr>"
191
- s << "<tr><td>Altitude: </td><td>#{altitude_as_float}m </td></tr>"
192
- s
193
- end
194
- s << "</table>\""
195
- s
196
- end
197
-
198
- end
199
-
200
- end # end of module
@@ -1,183 +0,0 @@
1
- module Gooby
2
-
3
- =begin rdoc
4
- Instances of this class are used to parse a Garmin TrainingCenter XML file
5
- in a SAX-like manner. Instances of the model classes - History, Run, Track,
6
- Trackpoint, etc. are created in this parsing process.
7
-
8
- See http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd for the XML
9
- Schema Definition for Garmin TrainingCenter XML.
10
- =end
11
-
12
- class TrainingCenterXmlParser
13
-
14
- DETAIL_TAGS = %w( Notes StartTime Duration Length Time
15
- TotalTimeSeconds DistanceMeters
16
- LatitudeDegrees LongitudeDegrees AltitudeMeters BeginPosition EndPosition )
17
-
18
- include REXML::StreamListener
19
-
20
- attr_reader :history, :cvHash, :tagCount
21
-
22
- def initialize
23
- @cvHash = Hash.new("")
24
- @tagCount = 0
25
- @runCount = 0
26
- @lapCount = 0
27
- @trackCount = 0
28
- @trackpoint_count = 0
29
- @currText = "";
30
- @history = History.new
31
- @currRun = nil
32
- @currLap = nil
33
- @currTrack = nil
34
- @currBeginPosition = nil
35
- @currEndPosition = nil
36
- end
37
-
38
- public
39
-
40
- # SAX API method; handles 'Activity', 'Lap', 'Track'.
41
- def tag_start(tagname, attrs)
42
- @tagCount += 1
43
- @currTag = tagname
44
- @cvHash[tagname] = ''
45
-
46
- if detail_tag?(tagname)
47
- @inDetail = true
48
- end
49
-
50
- if is_tag?('Activity', tagname)
51
- @runCount = @runCount + 1
52
- @lapCount = 0
53
- @trackCount = 0
54
- @currRun = Run.new(@runCount)
55
- @history.add_run(@currRun)
56
- @cvHash['Notes'] = ''
57
- return
58
- end
59
-
60
- if is_tag?('Lap', tagname)
61
- @lapCount = @lapCount + 1
62
- @currLap = Lap.new(@lapCount)
63
- # TODO - capture value of 'StartTime' attribute.
64
- return
65
- end
66
-
67
- if is_tag?('Track', tagname)
68
- @trackCount = @trackCount + 1
69
- @currTrack = Track.new(@trackCount)
70
- @trackpoint_count = 0
71
- return
72
- end
73
-
74
- end
75
-
76
- # SAX API method; handles 'Position', 'Trackpoint', 'Track', 'Lap', 'Run'.
77
- def tag_end(tagname)
78
- if @inDetail
79
- @cvHash[tagname] = @currText
80
- else
81
- if is_tag?('Position', tagname)
82
- lat = @cvHash['LatitudeDegrees']
83
- long = @cvHash['LongitudeDegrees']
84
- @currBeginPosition = Position.new(lat.strip, long.strip, '')
85
- @currEndPosition = Position.new(lat.strip, long.strip, '')
86
- end
87
-
88
- if is_tag?('BeginPosition', tagname)
89
- lat = @cvHash['LatitudeDegrees']
90
- long = @cvHash['LongitudeDegrees']
91
- @currBeginPosition = Position.new(lat.strip, long.strip, '')
92
- end
93
-
94
- if is_tag?('EndPosition', tagname)
95
- lat = @cvHash['LatitudeDegrees']
96
- long = @cvHash['LongitudeDegrees']
97
- @currEndPosition = Position.new(lat.strip, long.strip, '')
98
- end
99
-
100
- if is_tag?('Trackpoint', tagname)
101
- @trackpoint_count = @trackpoint_count + 1
102
- lat = @cvHash['LatitudeDegrees']
103
- long = @cvHash['LongitudeDegrees']
104
- alt = @cvHash['AltitudeMeters']
105
- time = @cvHash['Time']
106
- tp = Trackpoint.new(@trackpoint_count, lat, long, alt, time)
107
- @currTrack.add_trackpoint(tp)
108
- end
109
-
110
- if is_tag?('Track', tagname)
111
- if @currRun != nil
112
- @currRun.add_track(@currTrack)
113
- end
114
- end
115
-
116
- if is_tag?('Lap', tagname)
117
- # TotalTimeSeconds DistanceMeters
118
- # TODO - rework tnd of Lap for tcx
119
- # @currLap.startTime = @cvHash['StartTime']
120
- # @currLap.duration = Duration.new(@cvHash['Duration'])
121
- # @currLap.length = @cvHash['Length']
122
- # @currLap.beginPosition = @currBeginPosition
123
- # @currLap.endPosition = @currEndPosition
124
- @currRun.add_lap(@currLap)
125
- end
126
-
127
- if is_tag?('Activity', tagname)
128
- @currRun.notes = @cvHash['Notes']
129
- end
130
- end
131
-
132
- @inDetail = false
133
- @currText = ""
134
- @currTag = ""
135
- end
136
-
137
- # SAX API method.
138
- def text(txt)
139
- if @inDetail
140
- @currText = @currText + txt
141
- end
142
- end
143
-
144
- # Iterate all parsed Run objects and print each with to_s.
145
- def gdump()
146
- @history.runs().each { |run| puts run.to_s }
147
- end
148
-
149
- # Iterate all parsed Run objects and print each with to_s.
150
- def dump()
151
- @history.runs().each { |run| puts run.to_s }
152
- end
153
-
154
- # Iterate all parsed Run objects and print each with put_csv.
155
- def put_run_csv()
156
- @history.runs().each { |run| run.put_csv() }
157
- end
158
-
159
- # Iterate all parsed Run objects and print each with put_tkpt_csv.
160
- def put_all_run_tkpt_csv(with_header_comment)
161
- @history.runs.each { |run|
162
- run.put_tkpt_csv(with_header_comment)
163
- }
164
- end
165
-
166
- private
167
-
168
- def is_tag?(tagname, value)
169
- tagname == value
170
- end
171
-
172
- def detail_tag?(tagname)
173
- DETAIL_TAGS.each { |typ|
174
- if typ == tagname
175
- return true
176
- end
177
- }
178
- return false
179
- end
180
-
181
- end
182
-
183
- end # end of module
@@ -1,109 +0,0 @@
1
- module Gooby
2
-
3
- =begin rdoc
4
- Instances of this class are used to split a large Garmin TrainingCenter
5
- *.tcx file into individual 'activity_' files.
6
- =end
7
-
8
- class TrainingCenterXmlSplitter < GoobyObject
9
-
10
- attr_reader :out_dir, :training_center_files, :out_files_hash
11
-
12
- def initialize(tcx_file, out_dir)
13
- @out_dir = out_dir
14
- @training_center_files = Array.new
15
- @training_center_files << tcx_file
16
- @out_files_hash = Hash.new
17
- end
18
-
19
- def split
20
- @training_center_files.each { |f| process_file(f) }
21
- write_files
22
- end
23
-
24
- private
25
-
26
- def process_file(training_center_tcx_file)
27
- @file_name = training_center_tcx_file
28
- @tcx_lines = read_lines(@file_name, false)
29
- @line_num = 0
30
- @activity_num = 0
31
- @curr_activity_lines = Array.new
32
- @curr_activity_tkpts = 0
33
- @start_line_num = 0
34
- @end_line_num = 0
35
- @activity_start_time = nil
36
-
37
- @tcx_lines.each { |line|
38
- @line_num = @line_num + 1
39
- if (line.match(/<Activity /))
40
- @activity_num = @activity_num + 1
41
- @start_line_num = @line_num
42
- @curr_activity_lines = Array.new
43
- @curr_activity_lines << line
44
- elsif (line.match(/<Id>/)) # <Id>2007-03-03T15:58:57Z</Id> <StartTime>2007-01-13T15:37:06Z</StartTime>
45
- @curr_activity_lines << line
46
- if @activity_start_time == nil
47
- clone = String.new(line)
48
- clone.gsub!(/[<>]/, ' ')
49
- clone.gsub!(/[-:T]/, '_')
50
- clone.gsub!(/[Z]/, '')
51
- tokens = clone.split
52
- @activity_start_time = tokens[1]
53
- end
54
- elsif (line.match(/<Trackpoint>/))
55
- @curr_activity_tkpts = @curr_activity_tkpts + 1
56
- @curr_activity_lines << line
57
- elsif (line.match(/<\/Activity/))
58
- @end_line_num = @line_num
59
- @curr_activity_lines << line
60
- end_run
61
- elsif (@curr_activity_lines.size > 0)
62
- @curr_activity_lines << line
63
- end
64
- }
65
- end
66
-
67
- def end_run
68
- out_file = "#{@out_dir}/activity_#{@activity_start_time}.xml"
69
- comment = "<!-- file: #{out_file} lines: #{@curr_activity_lines.size} (#{@start_line_num} to #{@end_line_num}) tkpts: #{@curr_activity_tkpts} --> \n"
70
- @curr_activity_lines.insert(0, comment)
71
-
72
- prev_entry = @out_files_hash[out_file]
73
- if prev_entry
74
- if (@curr_activity_lines.size >= prev_entry.size)
75
- puts "previous entry overlaid for #{out_file}. curr=#{@curr_activity_lines.size} prev=#{prev_entry.size}"
76
- @out_files_hash[out_file] = @curr_activity_lines
77
- else
78
- puts "previous entry retained for #{out_file}. curr=#{@curr_activity_lines.size} prev=#{prev_entry.size}"
79
- end
80
- else
81
- puts "new entry for #{out_file}. curr=#{@curr_activity_lines.size}"
82
- @out_files_hash[out_file] = @curr_activity_lines
83
- end
84
-
85
- @curr_activity_lines = Array.new
86
- @curr_activity_tkpts = 0
87
- @start_line_num = 0
88
- @end_line_num = 0
89
- @activity_start_time = nil
90
- end
91
-
92
- def write_files
93
- out_names = @out_files_hash.keys.sort
94
- puts "Writing #{out_names.size} extract files..."
95
- out_names.each { |out_name|
96
- lines = @out_files_hash[out_name]
97
- out = File.new out_name, "w+"
98
- lines.each { |line| out.write line }
99
- out.flush
100
- out.close
101
- puts "File written: #{out_name}"
102
- }
103
- puts "output files written."
104
- end
105
-
106
- end
107
-
108
- end # end of module
109
-
@@ -1,26 +0,0 @@
1
- module Gooby
2
-
3
- module Introspect
4
-
5
- # Return a String w/instance variable and method info.
6
- def introspect
7
- c = self.class
8
- s = "Class: #{c} "
9
- iv = self.instance_variables.sort
10
- s << " ivc=#{iv.size}"
11
- iv.each { |v| s << " #{v}" }
12
- meth = self.methods.sort
13
- s << " mc=#{meth.size}"
14
- meth.each { |m| s << " #{m}" }
15
- s << ""
16
- s
17
- end
18
-
19
- # Return 'self.instance_variables'.
20
- def to_yaml_properties
21
- self.instance_variables
22
- end
23
-
24
- end
25
-
26
- end # end of module
data/lib/gooby/mod_io.rb DELETED
@@ -1,58 +0,0 @@
1
- module Gooby
2
-
3
- module GoobyIO
4
-
5
- # Return an Array of lines in file, optionally stripped.
6
- def read_lines(filename, strip=false)
7
-
8
- array = IO.readlines(filename)
9
- if strip
10
- array = strip_lines(array)
11
- end
12
- return array
13
- end
14
-
15
- # Return an Array of lines in file per the given delimeter, optionally stripped.
16
- def read_as_ascii_lines(filename, delim=10, strip=false)
17
-
18
- array = Array.new
19
- file = File.new(filename)
20
- currLine = ''
21
- bytesRead = 0
22
- linesRead = 0
23
-
24
- file.each_byte { |b|
25
- bytesRead = bytesRead + 1
26
- if (b == delim) # delim is 13 for quicken, 10 for address book xml
27
- array << currLine
28
- currLine = ''
29
- linesRead = linesRead + 1
30
- else
31
- if (b < 127)
32
- currLine << "#{b.chr}"
33
- end
34
- end
35
- }
36
-
37
- if currLine.size > 0
38
- array << currLine
39
- end
40
- if strip
41
- array = strip_lines(array)
42
- end
43
- return array
44
- end
45
-
46
- # Strip the lines/Strings; return a new Array.
47
- def strip_lines(array)
48
-
49
- newArray = Array.new
50
- if (array != nil)
51
- array.each { |line| line.strip! ; newArray << line }
52
- end
53
- return newArray
54
- end
55
-
56
- end
57
-
58
- end # end of module
@@ -1,80 +0,0 @@
1
- module Gooby
2
-
3
- =begin rdoc
4
- This module is used to embed information about the Gooby project and
5
- version into the codebase.
6
-
7
- Gooby - Copyright 2007 by Chris Joakim.
8
- Gooby is available under GNU General Public License (GPL) license.
9
- =end
10
-
11
- module GoobyProjectInfo
12
-
13
- # Return a String version number, like '1.0.0'.
14
- def project_version_number
15
- '0.9.4'
16
- end
17
-
18
- # Return a String date, like '2007/02/25'.
19
- def project_date
20
- '2007/03/03'
21
- end
22
-
23
- # Return a String year, like '2007'.
24
- def project_year
25
- project_date[0...4] # start, length
26
- end
27
-
28
- # Return a String containing copyright, year, and author.
29
- def project_copyright
30
- "Copyright (C) #{project_year} #{project_author}"
31
- end
32
-
33
- # Return a String containing GNU/GPL, and the gpl.html URL.
34
- def project_license
35
- 'GNU General Public License (GPL). See http://www.gnu.org/copyleft/gpl.html'
36
- end
37
-
38
- # Return a String containing the project author name.
39
- def project_author
40
- 'Chris Joakim'
41
- end
42
-
43
- def google_maps_api_level
44
- '2'
45
- end
46
-
47
- def some_new_thing
48
- '2'
49
- end
50
-
51
- def tested_files
52
- array = Array.new
53
- array << 'cls_counter_hash.rb'
54
- array << 'cls_delim_line.rb'
55
- array << 'cls_dttm.rb'
56
- array << 'cls_duration.rb'
57
- array << 'cls_forerunner_xml_parser.rb'
58
- array << 'cls_geo_data.rb'
59
- array << 'cls_gooby_object.rb'
60
- array << 'cls_google_map_generator.rb'
61
- array << 'cls_history.rb'
62
- array << 'cls_lap.rb'
63
- array << 'cls_line.rb'
64
- array << 'cls_options.rb'
65
- array << 'cls_position.rb'
66
- array << 'cls_run.rb'
67
- array << 'cls_simple_xml_parser.rb'
68
- array << 'cls_track.rb'
69
- array << 'cls_trackpoint.rb'
70
- array << 'mod_constants.rb'
71
- array << 'mod_introspect.rb'
72
- array << 'mod_io.rb'
73
- array << 'mod_project_info.rb'
74
- array << 'mod_string.rb'
75
- array
76
- end
77
-
78
- end
79
-
80
- end # end of module
@@ -1,19 +0,0 @@
1
- module Gooby
2
-
3
- module GoobyString
4
-
5
- def tokenize(string, delim, strip=false)
6
- if string
7
- tokens = string.split(delim)
8
- if strip
9
- tokens.each { |tok| tok.strip! }
10
- end
11
- tokens
12
- else
13
- Array.new
14
- end
15
- end
16
-
17
- end
18
-
19
- end # end of module
@@ -1,15 +0,0 @@
1
- module Gooby
2
-
3
- module TestHelper
4
-
5
- def setup
6
- puts "test: #{name}"
7
- end
8
-
9
- def teardown
10
- @debug = false
11
- end
12
-
13
- end
14
-
15
- end # end of module