gooby 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (224) hide show
  1. data/README +242 -0
  2. data/bin/example_usage.rb +38 -0
  3. data/bin/tests_gen.rb +16 -0
  4. data/data/20050305_corporate_cup_hm.csv +251 -0
  5. data/data/20050305_corporate_cup_hm.xml +2208 -0
  6. data/data/20050430_nashville_marathon.csv +1208 -0
  7. data/data/20050430_nashville_marathon.xml +10043 -0
  8. data/data/20051119_dowd_ymca_hm.csv +251 -0
  9. data/data/20051119_dowd_ymca_hm.xml +2210 -0
  10. data/data/20051124_hyatt_turkey_trot_8K.csv +321 -0
  11. data/data/20051124_hyatt_turkey_trot_8K.xml +2651 -0
  12. data/data/2007_03_03.tcx +6207 -0
  13. data/data/forerunner_2007.xml +259014 -0
  14. data/data/geo_data.txt +171 -0
  15. data/data/phx.csv +1280 -0
  16. data/data/phx.xml +10620 -0
  17. data/data/run_2007_01_01_16_38_27.xml +2020 -0
  18. data/data/run_2007_01_06_15_27_31.xml +2020 -0
  19. data/data/run_2007_01_10_12_25_47.xml +820 -0
  20. data/data/run_2007_01_10_22_44_54.csv +112 -0
  21. data/data/run_2007_01_10_22_44_54.xml +908 -0
  22. data/data/run_2007_01_11_10_48_45.xml +1292 -0
  23. data/data/run_2007_01_13_15_37_06.xml +1964 -0
  24. data/data/run_2007_01_14_15_46_02.xml +1368 -0
  25. data/data/run_2007_01_15_14_01_48.xml +1868 -0
  26. data/data/run_2007_01_20_16_22_05.xml +1702 -0
  27. data/data/run_2007_01_27_17_32_13.xml +3626 -0
  28. data/data/run_2007_01_28_19_14_52.xml +2538 -0
  29. data/data/run_2007_02_03_14_30_20.xml +2016 -0
  30. data/data/run_2007_02_04_18_02_30.xml +1476 -0
  31. data/data/run_2007_02_17_16_29_35.xml +1236 -0
  32. data/data/run_2007_02_19_14_44_33.xml +1816 -0
  33. data/data/run_2007_02_23_15_53_55.xml +36 -0
  34. data/data/run_2007_02_23_15_55_20.xml +1296 -0
  35. data/data/run_2007_02_24_15_01_35.csv +484 -0
  36. data/data/run_2007_02_24_15_01_35.xml +3884 -0
  37. data/data/test1.txt +4 -0
  38. data/img/gicons/blank.png +0 -0
  39. data/img/gicons/dd-end.png +0 -0
  40. data/img/gicons/dd-start.png +0 -0
  41. data/img/gicons/marker.png +0 -0
  42. data/img/gicons/marker0.png +0 -0
  43. data/img/gicons/marker00.png +0 -0
  44. data/img/gicons/marker01.png +0 -0
  45. data/img/gicons/marker02.png +0 -0
  46. data/img/gicons/marker03.png +0 -0
  47. data/img/gicons/marker04.png +0 -0
  48. data/img/gicons/marker05.png +0 -0
  49. data/img/gicons/marker06.png +0 -0
  50. data/img/gicons/marker07.png +0 -0
  51. data/img/gicons/marker08.png +0 -0
  52. data/img/gicons/marker09.png +0 -0
  53. data/img/gicons/marker1.png +0 -0
  54. data/img/gicons/marker10.png +0 -0
  55. data/img/gicons/marker11.png +0 -0
  56. data/img/gicons/marker12.png +0 -0
  57. data/img/gicons/marker13.png +0 -0
  58. data/img/gicons/marker14.png +0 -0
  59. data/img/gicons/marker15.png +0 -0
  60. data/img/gicons/marker16.png +0 -0
  61. data/img/gicons/marker17.png +0 -0
  62. data/img/gicons/marker18.png +0 -0
  63. data/img/gicons/marker19.png +0 -0
  64. data/img/gicons/marker2.png +0 -0
  65. data/img/gicons/marker20.png +0 -0
  66. data/img/gicons/marker21.png +0 -0
  67. data/img/gicons/marker22.png +0 -0
  68. data/img/gicons/marker23.png +0 -0
  69. data/img/gicons/marker24.png +0 -0
  70. data/img/gicons/marker25.png +0 -0
  71. data/img/gicons/marker26.png +0 -0
  72. data/img/gicons/marker27.png +0 -0
  73. data/img/gicons/marker28.png +0 -0
  74. data/img/gicons/marker29.png +0 -0
  75. data/img/gicons/marker3.png +0 -0
  76. data/img/gicons/marker30.png +0 -0
  77. data/img/gicons/marker31.png +0 -0
  78. data/img/gicons/marker32.png +0 -0
  79. data/img/gicons/marker33.png +0 -0
  80. data/img/gicons/marker34.png +0 -0
  81. data/img/gicons/marker35.png +0 -0
  82. data/img/gicons/marker36.png +0 -0
  83. data/img/gicons/marker37.png +0 -0
  84. data/img/gicons/marker38.png +0 -0
  85. data/img/gicons/marker39.png +0 -0
  86. data/img/gicons/marker4.png +0 -0
  87. data/img/gicons/marker40.png +0 -0
  88. data/img/gicons/marker41.png +0 -0
  89. data/img/gicons/marker42.png +0 -0
  90. data/img/gicons/marker43.png +0 -0
  91. data/img/gicons/marker44.png +0 -0
  92. data/img/gicons/marker45.png +0 -0
  93. data/img/gicons/marker46.png +0 -0
  94. data/img/gicons/marker47.png +0 -0
  95. data/img/gicons/marker48.png +0 -0
  96. data/img/gicons/marker49.png +0 -0
  97. data/img/gicons/marker5.png +0 -0
  98. data/img/gicons/marker50.png +0 -0
  99. data/img/gicons/marker51.png +0 -0
  100. data/img/gicons/marker52.png +0 -0
  101. data/img/gicons/marker53.png +0 -0
  102. data/img/gicons/marker54.png +0 -0
  103. data/img/gicons/marker55.png +0 -0
  104. data/img/gicons/marker56.png +0 -0
  105. data/img/gicons/marker57.png +0 -0
  106. data/img/gicons/marker58.png +0 -0
  107. data/img/gicons/marker59.png +0 -0
  108. data/img/gicons/marker6.png +0 -0
  109. data/img/gicons/marker60.png +0 -0
  110. data/img/gicons/marker61.png +0 -0
  111. data/img/gicons/marker62.png +0 -0
  112. data/img/gicons/marker63.png +0 -0
  113. data/img/gicons/marker64.png +0 -0
  114. data/img/gicons/marker65.png +0 -0
  115. data/img/gicons/marker66.png +0 -0
  116. data/img/gicons/marker67.png +0 -0
  117. data/img/gicons/marker68.png +0 -0
  118. data/img/gicons/marker69.png +0 -0
  119. data/img/gicons/marker7.png +0 -0
  120. data/img/gicons/marker70.png +0 -0
  121. data/img/gicons/marker71.png +0 -0
  122. data/img/gicons/marker72.png +0 -0
  123. data/img/gicons/marker73.png +0 -0
  124. data/img/gicons/marker74.png +0 -0
  125. data/img/gicons/marker75.png +0 -0
  126. data/img/gicons/marker76.png +0 -0
  127. data/img/gicons/marker77.png +0 -0
  128. data/img/gicons/marker78.png +0 -0
  129. data/img/gicons/marker79.png +0 -0
  130. data/img/gicons/marker8.png +0 -0
  131. data/img/gicons/marker80.png +0 -0
  132. data/img/gicons/marker81.png +0 -0
  133. data/img/gicons/marker82.png +0 -0
  134. data/img/gicons/marker83.png +0 -0
  135. data/img/gicons/marker84.png +0 -0
  136. data/img/gicons/marker85.png +0 -0
  137. data/img/gicons/marker86.png +0 -0
  138. data/img/gicons/marker87.png +0 -0
  139. data/img/gicons/marker88.png +0 -0
  140. data/img/gicons/marker89.png +0 -0
  141. data/img/gicons/marker9.png +0 -0
  142. data/img/gicons/marker90.png +0 -0
  143. data/img/gicons/marker91.png +0 -0
  144. data/img/gicons/marker92.png +0 -0
  145. data/img/gicons/marker93.png +0 -0
  146. data/img/gicons/marker94.png +0 -0
  147. data/img/gicons/marker95.png +0 -0
  148. data/img/gicons/marker96.png +0 -0
  149. data/img/gicons/marker97.png +0 -0
  150. data/img/gicons/marker98.png +0 -0
  151. data/img/gicons/marker99.png +0 -0
  152. data/img/gicons/markerA.png +0 -0
  153. data/img/gicons/markerB.png +0 -0
  154. data/img/gicons/markerC.png +0 -0
  155. data/img/gicons/markerD.png +0 -0
  156. data/img/gicons/markerE.png +0 -0
  157. data/img/gicons/markerF.png +0 -0
  158. data/img/gicons/markerG.png +0 -0
  159. data/img/gicons/markerH.png +0 -0
  160. data/img/gicons/markerI.png +0 -0
  161. data/img/gicons/markerJ.png +0 -0
  162. data/img/gicons/mm_20_red.png +0 -0
  163. data/img/gicons/mm_20_shadow.png +0 -0
  164. data/img/gicons/readme.txt +11 -0
  165. data/img/gicons/shadow50.png +0 -0
  166. data/lib/gooby/cls_counter_hash.rb +78 -0
  167. data/lib/gooby/cls_delim_line.rb +35 -0
  168. data/lib/gooby/cls_dttm.rb +79 -0
  169. data/lib/gooby/cls_duration.rb +79 -0
  170. data/lib/gooby/cls_forerunner_xml_parser.rb +178 -0
  171. data/lib/gooby/cls_forerunner_xml_splitter.rb +109 -0
  172. data/lib/gooby/cls_geo_data.rb +181 -0
  173. data/lib/gooby/cls_gooby_command.rb +35 -0
  174. data/lib/gooby/cls_gooby_object.rb +18 -0
  175. data/lib/gooby/cls_google_map_generator.rb +363 -0
  176. data/lib/gooby/cls_history.rb +33 -0
  177. data/lib/gooby/cls_lap.rb +22 -0
  178. data/lib/gooby/cls_line.rb +75 -0
  179. data/lib/gooby/cls_options.rb +67 -0
  180. data/lib/gooby/cls_position.rb +44 -0
  181. data/lib/gooby/cls_run.rb +194 -0
  182. data/lib/gooby/cls_simple_xml_parser.rb +41 -0
  183. data/lib/gooby/cls_test_regen.rb +182 -0
  184. data/lib/gooby/cls_track.rb +47 -0
  185. data/lib/gooby/cls_trackpoint.rb +200 -0
  186. data/lib/gooby/mod_introspect.rb +26 -0
  187. data/lib/gooby/mod_io.rb +58 -0
  188. data/lib/gooby/mod_project_info.rb +80 -0
  189. data/lib/gooby/mod_string.rb +19 -0
  190. data/lib/gooby/mod_test_helper.rb +15 -0
  191. data/lib/gooby.rb +2265 -0
  192. data/pkg/code_header.txt +21 -0
  193. data/pkg/pkg.rb +236 -0
  194. data/pkg/test_header.txt +19 -0
  195. data/samples/20041113_richmond_marathon.html +532 -0
  196. data/samples/20050305_corporate_cup_hm.html +448 -0
  197. data/samples/20050430_nashville_marathon.html +530 -0
  198. data/samples/gps_point_capture.html +54 -0
  199. data/samples/phoenix_marathon.html +542 -0
  200. data/samples/run_2007_01_10_22_44_54.html +201 -0
  201. data/samples/run_2007_02_24_15_01_35.html +298 -0
  202. data/tests/tc_cls_counter_hash.rb +107 -0
  203. data/tests/tc_cls_delim_line.rb +74 -0
  204. data/tests/tc_cls_dttm.rb +131 -0
  205. data/tests/tc_cls_duration.rb +51 -0
  206. data/tests/tc_cls_forerunner_xml_parser.rb +70 -0
  207. data/tests/tc_cls_geo_data.xxx +71 -0
  208. data/tests/tc_cls_gooby_object.rb +26 -0
  209. data/tests/tc_cls_google_map_generator.rb +109 -0
  210. data/tests/tc_cls_history.rb +46 -0
  211. data/tests/tc_cls_lap.rb +38 -0
  212. data/tests/tc_cls_line.rb +110 -0
  213. data/tests/tc_cls_options.rb +79 -0
  214. data/tests/tc_cls_position.rb +66 -0
  215. data/tests/tc_cls_run.rb +142 -0
  216. data/tests/tc_cls_simple_xml_parser.rb +50 -0
  217. data/tests/tc_cls_track.rb +70 -0
  218. data/tests/tc_cls_trackpoint.rb +145 -0
  219. data/tests/tc_mod_introspect.rb +32 -0
  220. data/tests/tc_mod_io.rb +53 -0
  221. data/tests/tc_mod_project_info.rb +79 -0
  222. data/tests/tc_mod_string.rb +58 -0
  223. data/tests/ts_gooby.rb +1237 -0
  224. metadata +270 -0
@@ -0,0 +1,21 @@
1
+ =begin
2
+
3
+ This file contains the classes and modules for the Gooby project.
4
+ Gooby = Google APIs + Ruby
5
+
6
+ See file 'tests/ts_gooby.rb' for the regression test suite.
7
+
8
+ Gooby - Copyright 2007 by Chris Joakim.
9
+ Gooby is available under GNU General Public License (GPL) license.
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'find'
15
+ require 'rbconfig'
16
+ require 'rexml/document'
17
+ require 'rexml/streamlistener'
18
+ require 'time'
19
+ require 'yaml'
20
+
21
+ module Gooby
data/pkg/pkg.rb ADDED
@@ -0,0 +1,236 @@
1
+ =begin rdoc
2
+
3
+ This class is used to merge/bundle the source code and test code for a ruby
4
+ project to enable it to packaged as a "simplified" gem with few *.rb files
5
+ and no LOAD_PATH subdirectory dependencies.
6
+
7
+ One source code file, 'lib/[project_name].rb' will be created from the
8
+ concatinated contents of the 'cls_*.rb' and 'mod_*.rb' files in the
9
+ 'lib/[project_name]' directory beneath your project root directory.
10
+ The contents of file 'pkg/code_header.txt' will be prepended to this merged
11
+ code content.
12
+
13
+ Likewise, one source code file, 'tests/ts_[project_name].rb' will be created
14
+ from the concatinated contents of the 'tc_*.rb' files in the 'tests'
15
+ directory beneath your project root directory. The contents of file
16
+ 'pkg/test_header.txt' will be prepended to this merged test content.
17
+
18
+ Credit to DHH and others who popularized the concept of "convention over
19
+ configuration".
20
+
21
+ Command line:
22
+ > ruby pkg/pkg.rb [project_name]
23
+
24
+ [project_name] is an optional arg, as the current implementation deduces the
25
+ project name by identifying the first directory not named 'CVS' beneath the
26
+ 'lib' directory.
27
+
28
+ Gooby - Copyright 2007 by Chris Joakim.
29
+ Gooby is available under GNU General Public License (GPL) license.
30
+
31
+ =end
32
+
33
+ module Gooby
34
+
35
+ class Pkg
36
+
37
+ def initialize
38
+
39
+ if ARGV.size > 0
40
+ @proj_name = ARGV[0]
41
+ else
42
+ @proj_name = deduce_proj_name
43
+ end
44
+ puts "project name is: #{@proj_name}"
45
+
46
+ @code_lines = IO.readlines('pkg/code_header.txt')
47
+ puts "code_header.txt lines = #{@code_lines.size}"
48
+ @code_files = code_files_list
49
+ puts "code file count: #{@code_files.size}"
50
+ @code_files.each do |name|
51
+ file_lines = read_file("lib/#{@proj_name}/#{name}")
52
+ @code_lines << file_lines
53
+ end
54
+ @code_lines << "end # end of module"
55
+
56
+ @test_lines = IO.readlines('pkg/test_header.txt')
57
+ @test_files = test_files_list
58
+ puts "test file count: #{@test_files.size}"
59
+ @test_files.each do |name|
60
+ file_lines = read_file("tests/#{name}")
61
+ @test_lines << file_lines
62
+ end
63
+
64
+ write_file("lib/#{@proj_name}.rb", @code_lines)
65
+ write_file("tests/ts_#{@proj_name}.rb", @test_lines)
66
+ end
67
+
68
+ private
69
+
70
+ def deduce_proj_name
71
+ list = Dir.glob("lib/*")
72
+ list.each do |name|
73
+ if name =~ /CVS/
74
+ elsif
75
+ name =~ /\./
76
+ else
77
+ name.gsub!('/', ' ')
78
+ tokens = name.split
79
+ return tokens[-1]
80
+ end
81
+ end
82
+ return 'unable_to_deduce_project_name'
83
+ end
84
+
85
+ def list_files(dir_name, type)
86
+ subset = Array.new
87
+ list = Dir.glob(dir_name)
88
+ list.each do |name|
89
+ matched = false
90
+ matched = true if ((type == 'code') && (name =~ /\/cls_/) && (name =~ /.rb$/))
91
+ matched = true if ((type == 'code') && (name =~ /\/mod_/) && (name =~ /.rb$/))
92
+ matched = true if ((type == 'test') && (name =~ /\/tc_/) && (name =~ /.rb$/))
93
+ #puts "#{name} #{matched}"
94
+ if matched
95
+ name.gsub!('/', ' ')
96
+ tokens = name.split
97
+ subset << tokens[-1]
98
+ end
99
+ end
100
+ subset
101
+ end
102
+
103
+ def read_file(filename)
104
+ raw_array = IO.readlines(filename)
105
+ filtered_array = Array.new
106
+ in_zone = false
107
+ raw_array.each { |line|
108
+ if line =~ /^end # end of module/
109
+ in_zone = false
110
+ end
111
+ if line =~ /^end # end of class/
112
+ in_zone = false
113
+ end
114
+ if in_zone
115
+ filtered_array << line
116
+ end
117
+ if line =~ /^module Gooby/
118
+ in_zone = true
119
+ end
120
+ if line =~ /Test::Unit::TestCase/
121
+ filtered_array << "\n"
122
+ filtered_array << line
123
+ in_zone = true
124
+ end
125
+
126
+ }
127
+ filtered_array
128
+ end
129
+
130
+ def write_file(name, lines)
131
+ out = File.new name, "w+"
132
+ out.write "# Packaged on #{Time.now} \n\n"
133
+ lines.each { |line| out.write line }
134
+ out.flush
135
+ out.close
136
+ puts "File written: #{name}"
137
+ end
138
+
139
+ def code_files_list
140
+ %w(
141
+ mod_project_info.rb
142
+ mod_constants.rb
143
+ mod_introspect.rb
144
+ mod_io.rb
145
+ mod_string.rb
146
+ mod_test_helper.rb
147
+
148
+ cls_gooby_object.rb
149
+ cls_counter_hash.rb
150
+ cls_delim_line.rb
151
+ cls_dttm.rb
152
+ cls_duration.rb
153
+ cls_forerunner_xml_parser.rb
154
+ cls_forerunner_xml_splitter.rb
155
+ cls_geo_data.rb
156
+ cls_google_map_generator.rb
157
+ cls_history.rb
158
+ cls_lap.rb
159
+ cls_line.rb
160
+ cls_options.rb
161
+ cls_position.rb
162
+ cls_run.rb
163
+ cls_simple_xml_parser.rb
164
+ cls_test_regen.rb
165
+ cls_track.rb
166
+ cls_trackpoint.rb
167
+ cls_gooby_command.rb
168
+ )
169
+ end
170
+
171
+ def test_files_list
172
+
173
+ %w(
174
+ tc_mod_constants.rb
175
+ tc_mod_introspect.rb
176
+ tc_mod_project_info.rb
177
+ tc_mod_string.rb
178
+ tc_mod_io.rb
179
+
180
+ tc_cls_counter_hash.rb
181
+ tc_cls_delim_line.rb
182
+ tc_cls_dttm.rb
183
+
184
+ tc_cls_duration.rb
185
+ tc_cls_forerunner_xml_parser.rb
186
+ tc_cls_gooby_object.rb
187
+
188
+ tc_cls_history.rb
189
+ tc_cls_lap.rb
190
+ tc_cls_line.rb
191
+
192
+ tc_cls_position.rb
193
+ tc_cls_run.rb
194
+ tc_cls_simple_xml_parser.rb
195
+ tc_cls_track.rb
196
+ tc_cls_trackpoint.rb
197
+ )
198
+ end
199
+
200
+
201
+ def test_files_list_old
202
+
203
+ %w(
204
+ tc_mod_constants.rb
205
+ tc_mod_introspect.rb
206
+
207
+ tc_mod_project_info.rb
208
+ tc_mod_string.rb
209
+
210
+ tc_cls_counter_hash.rb
211
+ tc_cls_delim_line.rb
212
+ tc_cls_dttm.rb
213
+
214
+ tc_cls_duration.rb
215
+ tc_cls_forerunner_xml_parser.rb
216
+ tc_cls_gooby_object.rb
217
+
218
+ tc_cls_google_map_generator.rb
219
+
220
+ tc_cls_history.rb
221
+ tc_cls_lap.rb
222
+ tc_cls_line.rb
223
+
224
+ tc_cls_options.rb
225
+ tc_cls_position.rb
226
+ tc_cls_run.rb
227
+ tc_cls_simple_xml_parser.rb
228
+ tc_cls_track.rb
229
+ tc_cls_trackpoint.rb
230
+ )
231
+ end
232
+
233
+ end
234
+ end
235
+
236
+ merger = Gooby::Pkg.new
@@ -0,0 +1,19 @@
1
+ =begin
2
+
3
+ This contains the regression test suite for the Gooby project.
4
+
5
+ See file 'lib/gooby.rb' which is the subject of this test suite.
6
+
7
+ Gooby - Copyright 2007 by Chris Joakim.
8
+ Gooby is available under GNU General Public License (GPL) license.
9
+
10
+ =end
11
+
12
+ # The following prefixes ../lib to the active ruby load path
13
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
14
+ puts '$LOAD_PATH is now:'
15
+ puts $LOAD_PATH
16
+
17
+ require 'gooby'
18
+ require 'test/unit'
19
+