gooby 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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