greenmonster 0.3.1 → 0.3.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.
Files changed (55) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG.markdown +6 -0
  3. data/README.markdown +37 -2
  4. data/doc/Athlete.html +254 -0
  5. data/doc/Gemfile.html +20 -0
  6. data/doc/Greenmonster/Generators/InstallGenerator.html +253 -0
  7. data/doc/Greenmonster/Generators.html +147 -0
  8. data/doc/Greenmonster/Parser.html +263 -0
  9. data/doc/Greenmonster/Player.html +236 -0
  10. data/doc/Greenmonster/Spider.html +169 -21
  11. data/doc/Greenmonster.html +139 -2
  12. data/doc/GreenmonsterPlayerTest.html +199 -0
  13. data/doc/GreenmonsterSpiderTest.html +57 -4
  14. data/doc/GreenmonsterTest.html +20 -0
  15. data/doc/GreenmonsterTraversalTest.html +376 -0
  16. data/doc/InstallGreenmonster.html +260 -0
  17. data/doc/Rakefile.html +20 -0
  18. data/doc/TestCreatePlayersFromGamedayXMLGame.html +266 -0
  19. data/doc/TestParsePlayersFromGamedayXMLFiles.html +307 -0
  20. data/doc/created.rid +18 -9
  21. data/doc/index.html +20 -0
  22. data/doc/js/search_index.js +1 -1
  23. data/doc/table_of_contents.html +93 -1
  24. data/greenmonster.gemspec +4 -2
  25. data/lib/generators/greenmonster/install_mlb_games_generator.rb +20 -0
  26. data/lib/generators/greenmonster/install_players_generator.rb +20 -0
  27. data/lib/generators/templates/install_greenmonster_mlb_games_migration.rb +54 -0
  28. data/lib/generators/templates/install_greenmonster_players_migration.rb +37 -0
  29. data/lib/greenmonster/model_extensions/mlb_game.rb +106 -0
  30. data/lib/greenmonster/model_extensions/mlb_probable_pitcher.rb +11 -0
  31. data/lib/greenmonster/model_extensions/player.rb +16 -0
  32. data/lib/greenmonster/parser.rb +27 -0
  33. data/lib/greenmonster/spider.rb +7 -6
  34. data/lib/greenmonster/version.rb +1 -1
  35. data/lib/greenmonster.rb +46 -0
  36. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/boxscore.xml +5 -0
  37. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/eventLog.xml +1 -0
  38. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/inning/inning_all.xml +1 -0
  39. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/inning/inning_hit.xml +1 -0
  40. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/linescore.xml +117 -0
  41. data/test/games/mlb/year_2011/month_07/day_04/gid_2011_07_04_tormlb_bosmlb_1/players.xml +56 -0
  42. data/test/games/mlb/year_2012/month_03/day_27/gid_2012_03_27_aaamlb_aabmlb_1/blank.txt +0 -0
  43. data/test/games/tst/year_2012/month_03/day_27/gid_2012_03_27_aaamlb_aabmlb_1/blank.txt +0 -0
  44. data/test/test_create_mlb_game_from_gameday_xml_game.rb +12 -0
  45. data/test/test_create_players_from_gameday_xml_game.rb +8 -0
  46. data/test/test_greenmonster.rb +3 -6
  47. data/test/test_greenmonster_player.rb +7 -0
  48. data/test/test_greenmonster_spider.rb +24 -18
  49. data/test/test_greenmonster_traversal.rb +31 -0
  50. data/test/test_helper.rb +78 -0
  51. data/test/test_line_score.rb +12 -0
  52. data/test/test_parse_mlb_probable_pitchers_from_linescore_data.rb +14 -0
  53. data/test/test_parse_players_from_gameday_xml_files.rb +21 -0
  54. data/test/test_update_mlb_game_with_linescore_data.rb +23 -0
  55. metadata +103 -7
@@ -47,6 +47,7 @@
47
47
  <nav id="file-list-section" class="section">
48
48
  <h3 class="section-header">Defined In</h3>
49
49
  <ul>
50
+ <li>lib/greenmonster/greenmonster.rb
50
51
  <li>lib/greenmonster/spider.rb
51
52
  </ul>
52
53
  </nav>
@@ -82,6 +83,12 @@
82
83
 
83
84
  <ul class="link-list">
84
85
 
86
+ <li><a href="#method-c-copyGameDayXML">::copyGameDayXML</a>
87
+
88
+ <li><a href="#method-c-format_date_as_folder">::format_date_as_folder</a>
89
+
90
+ <li><a href="#method-c-pull">::pull</a>
91
+
85
92
  <li><a href="#method-c-pull_day">::pull_day</a>
86
93
 
87
94
  <li><a href="#method-c-pull_days">::pull_days</a>
@@ -113,12 +120,32 @@
113
120
 
114
121
  <li><a href="../Greenmonster.html">Greenmonster</a>
115
122
 
123
+ <li><a href="../Greenmonster/Generators.html">Greenmonster::Generators</a>
124
+
125
+ <li><a href="../Greenmonster/Generators/InstallGenerator.html">Greenmonster::Generators::InstallGenerator</a>
126
+
127
+ <li><a href="../Greenmonster/Parser.html">Greenmonster::Parser</a>
128
+
129
+ <li><a href="../Greenmonster/Player.html">Greenmonster::Player</a>
130
+
116
131
  <li><a href="../Greenmonster/Spider.html">Greenmonster::Spider</a>
117
132
 
133
+ <li><a href="../Athlete.html">Athlete</a>
134
+
135
+ <li><a href="../GreenmonsterPlayerTest.html">GreenmonsterPlayerTest</a>
136
+
118
137
  <li><a href="../GreenmonsterSpiderTest.html">GreenmonsterSpiderTest</a>
119
138
 
120
139
  <li><a href="../GreenmonsterTest.html">GreenmonsterTest</a>
121
140
 
141
+ <li><a href="../GreenmonsterTraversalTest.html">GreenmonsterTraversalTest</a>
142
+
143
+ <li><a href="../InstallGreenmonster.html">InstallGreenmonster</a>
144
+
145
+ <li><a href="../TestCreatePlayersFromGamedayXMLGame.html">TestCreatePlayersFromGamedayXMLGame</a>
146
+
147
+ <li><a href="../TestParsePlayersFromGamedayXMLFiles.html">TestParsePlayersFromGamedayXMLFiles</a>
148
+
122
149
  </ul>
123
150
  </nav>
124
151
 
@@ -152,6 +179,139 @@
152
179
  <h3 class="section-header">Public Class Methods</h3>
153
180
 
154
181
 
182
+ <div id="method-c-copyGameDayXML" class="method-detail ">
183
+
184
+ <div class="method-heading">
185
+ <span class="method-name">copyGameDayXML</span><span
186
+ class="method-args">(file_name,location,paths)</span>
187
+ <span class="method-click-advice">click to toggle source</span>
188
+ </div>
189
+
190
+
191
+ <div class="method-description">
192
+
193
+
194
+
195
+
196
+
197
+ <div class="method-source-code" id="copyGameDayXML-source">
198
+ <pre><span class="ruby-comment"># File lib/greenmonster/greenmonster.rb, line 8</span>
199
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">copyGameDayXML</span> (<span class="ruby-identifier">file_name</span>,<span class="ruby-identifier">location</span>,<span class="ruby-identifier">paths</span>)
200
+ <span class="ruby-identifier">open</span>(<span class="ruby-identifier">paths</span>[<span class="ruby-value">:localGameFolder</span>] <span class="ruby-operator">+</span> <span class="ruby-node">&quot;#{file_name =~ /inning/ ? 'inning/' : ''}&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">file_name</span>, <span class="ruby-string">'w'</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
201
+ <span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">paths</span>[<span class="ruby-value">:mlbGameFolder</span>] <span class="ruby-operator">+</span> <span class="ruby-node">&quot;#{file_name =~ /inning/ ? 'inning/' : ''}&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">file_name</span>).<span class="ruby-identifier">body</span>)
202
+ <span class="ruby-keyword">end</span>
203
+ <span class="ruby-keyword">end</span></pre>
204
+ </div><!-- copyGameDayXML-source -->
205
+
206
+ </div>
207
+
208
+
209
+
210
+
211
+ </div><!-- copyGameDayXML-method -->
212
+
213
+
214
+ <div id="method-c-format_date_as_folder" class="method-detail ">
215
+
216
+ <div class="method-heading">
217
+ <span class="method-name">format_date_as_folder</span><span
218
+ class="method-args">(date)</span>
219
+ <span class="method-click-advice">click to toggle source</span>
220
+ </div>
221
+
222
+
223
+ <div class="method-description">
224
+
225
+
226
+
227
+
228
+
229
+ <div class="method-source-code" id="format_date_as_folder-source">
230
+ <pre><span class="ruby-comment"># File lib/greenmonster/greenmonster.rb, line 14</span>
231
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_date_as_folder</span>(<span class="ruby-identifier">date</span>)
232
+ <span class="ruby-identifier">date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;year_%Y/month_%m/day_%d&quot;</span>)
233
+ <span class="ruby-keyword">end</span></pre>
234
+ </div><!-- format_date_as_folder-source -->
235
+
236
+ </div>
237
+
238
+
239
+
240
+
241
+ </div><!-- format_date_as_folder-method -->
242
+
243
+
244
+ <div id="method-c-pull" class="method-detail ">
245
+
246
+ <div class="method-heading">
247
+ <span class="method-name">pull</span><span
248
+ class="method-args">(date = Date.today,args = {})</span>
249
+ <span class="method-click-advice">click to toggle source</span>
250
+ </div>
251
+
252
+
253
+ <div class="method-description">
254
+
255
+
256
+
257
+
258
+
259
+ <div class="method-source-code" id="pull-source">
260
+ <pre><span class="ruby-comment"># File lib/greenmonster/greenmonster.rb, line 18</span>
261
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">pull</span>(<span class="ruby-identifier">date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>,<span class="ruby-identifier">args</span> = {})
262
+ <span class="ruby-identifier">game_day_url_for_date</span> = <span class="ruby-node">&quot;http://gd2.mlb.com/components/game/#{args[:league] || 'mlb'}/#{format_date_as_folder(date)}&quot;</span>
263
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Finding games in #{game_day_url_for_date}&quot;</span>
264
+
265
+ <span class="ruby-comment"># Iterate through every hyperlink on the page.</span>
266
+ <span class="ruby-comment"># These links represent the individual game folders</span>
267
+ <span class="ruby-comment"># for each date.</span>
268
+ (<span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">game_day_url_for_date</span>))<span class="ruby-operator">/</span><span class="ruby-string">&quot;a&quot;</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
269
+
270
+ <span class="ruby-comment"># See if the link is to a game, otherwise ignore it</span>
271
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">'href'</span>).<span class="ruby-identifier">value</span>[<span class="ruby-value">0</span>,<span class="ruby-value">3</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&quot;gid&quot;</span>
272
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">'href'</span>).<span class="ruby-identifier">value</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">'/'</span>,<span class="ruby-string">''</span>)
273
+
274
+ <span class="ruby-identifier">paths</span> = {
275
+ <span class="ruby-value">:localGameFolder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{MlbGame::GAMES_LOCATION}/#{args[:league] || 'mlb'}/#{format_date_as_folder(date)}/#{e.attribute('href').value}&quot;</span>,
276
+ <span class="ruby-value">:mlbGameFolder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{game_day_url_for_date}/#{e.attribute('href').value}&quot;</span>
277
+ }
278
+
279
+ <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-identifier">paths</span>[<span class="ruby-value">:localGameFolder</span>] <span class="ruby-operator">+</span> <span class="ruby-string">'inning'</span>
280
+
281
+ <span class="ruby-keyword">begin</span>
282
+ <span class="ruby-identifier">copyGameDayXML</span>(<span class="ruby-string">'linescore.xml'</span>,<span class="ruby-string">'base'</span>,<span class="ruby-identifier">paths</span>)
283
+
284
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">2007</span>
285
+ <span class="ruby-identifier">copyGameDayXML</span>(<span class="ruby-string">'inning_all.xml'</span>,<span class="ruby-string">'inning'</span>,<span class="ruby-identifier">paths</span>)
286
+ <span class="ruby-identifier">copyGameDayXML</span>(<span class="ruby-string">'inning_hit.xml'</span>,<span class="ruby-string">'inning'</span>,<span class="ruby-identifier">paths</span>)
287
+ <span class="ruby-keyword">else</span>
288
+ <span class="ruby-comment"># Iterate through the inning files, but skip inning </span>
289
+ <span class="ruby-comment"># files numbered 0 (some bad spring training data)</span>
290
+ (<span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">get</span>(<span class="ruby-node">&quot;#{paths[:mlbGameFolder]}/inning/&quot;</span>).<span class="ruby-identifier">body</span>).<span class="ruby-identifier">search</span>(<span class="ruby-string">'a'</span>)).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ic</span><span class="ruby-operator">|</span>
291
+ <span class="ruby-identifier">copyGameDayXML</span>(<span class="ruby-identifier">ic</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">'href'</span>),<span class="ruby-string">'inning'</span>,<span class="ruby-identifier">paths</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">ic</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">'href'</span>).<span class="ruby-identifier">value</span>[<span class="ruby-value">-3</span>,<span class="ruby-value">3</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&quot;xml&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">ic</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-string">'href'</span>).<span class="ruby-identifier">value</span>[<span class="ruby-value">-6</span>,<span class="ruby-value">6</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&quot;_0.xml&quot;</span>
292
+ <span class="ruby-keyword">end</span>
293
+ <span class="ruby-keyword">end</span>
294
+
295
+ <span class="ruby-comment"># Copy base data files </span>
296
+ <span class="ruby-comment"># (if inning data wasn't there, this gets skipped)</span>
297
+ [<span class="ruby-string">'boxscore.xml'</span>,<span class="ruby-string">'eventLog.xml'</span>,<span class="ruby-string">'players.xml'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
298
+ <span class="ruby-identifier">copyGameDayXML</span>(<span class="ruby-identifier">file</span>,<span class="ruby-string">'base'</span>,<span class="ruby-identifier">paths</span>)
299
+ <span class="ruby-keyword">end</span>
300
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">OpenURI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">bang</span>
301
+ <span class="ruby-keyword">end</span>
302
+ <span class="ruby-keyword">end</span>
303
+ <span class="ruby-keyword">end</span>
304
+ <span class="ruby-keyword">end</span></pre>
305
+ </div><!-- pull-source -->
306
+
307
+ </div>
308
+
309
+
310
+
311
+
312
+ </div><!-- pull-method -->
313
+
314
+
155
315
  <div id="method-c-pull_day" class="method-detail ">
156
316
 
157
317
  <div class="method-heading">
@@ -192,7 +352,7 @@ date.</p>
192
352
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:all_sport_codes</span>]
193
353
  <span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_codes</span>] = <span class="ruby-node">%w(aaa aax afa afx asx bbc fps hsb ind int jml nae naf nas nat naw oly rok win)</span>
194
354
  <span class="ruby-keyword">else</span>
195
- <span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_codes</span>] = [<span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_code</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'mlb'</span>]
355
+ <span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_codes</span>] = [<span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_code</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'mlb'</span>].<span class="ruby-identifier">flatten</span>
196
356
  <span class="ruby-keyword">end</span>
197
357
 
198
358
  <span class="ruby-comment"># Iterate through every hyperlink on the page.</span>
@@ -223,33 +383,21 @@ date.</p>
223
383
 
224
384
  <div class="method-heading">
225
385
  <span class="method-name">pull_days</span><span
226
- class="method-args">(range,args = {})</span>
386
+ class="method-args">(range = [Date.today],args = {})</span>
227
387
  <span class="method-click-advice">click to toggle source</span>
228
388
  </div>
229
389
 
230
390
 
231
391
  <div class="method-description">
232
392
 
233
- <p>Pull Gameday XML files for a range of dates. The args hash passes arguments
234
- like games_folder location on to Spider.pull.</p>
235
-
236
- <p>Example:</p>
237
-
238
- <pre class="ruby"><span class="ruby-comment"># Pull all games in MLB in July 2011</span>
239
- <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-constant">Gameday</span><span class="ruby-operator">::</span><span class="ruby-constant">Spider</span>.<span class="ruby-identifier">pull_days</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2011</span>,<span class="ruby-value">7</span>,<span class="ruby-value">1</span>)<span class="ruby-operator">..</span><span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2011</span>,<span class="ruby-value">7</span>,<span class="ruby-value">31</span>), {:<span class="ruby-identifier">games_folder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">'/Users/geoff/games'</span>})
240
- </pre>
241
-
242
- <p>Arguments:</p>
243
-
244
- <pre>range: (Range)
245
- args: (Hash)</pre>
393
+
246
394
 
247
395
 
248
396
 
249
397
  <div class="method-source-code" id="pull_days-source">
250
- <pre><span class="ruby-comment"># File lib/greenmonster/spider.rb, line 119</span>
251
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">pull_days</span>(<span class="ruby-identifier">range</span>,<span class="ruby-identifier">args</span> = {})
252
- <span class="ruby-identifier">range</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">pull_day</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:date</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">day</span>}))}
398
+ <pre><span class="ruby-comment"># File lib/greenmonster/greenmonster.rb, line 63</span>
399
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">pull_days</span>(<span class="ruby-identifier">range</span> = [<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>],<span class="ruby-identifier">args</span> = {})
400
+ <span class="ruby-identifier">range</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">pull</span>(<span class="ruby-identifier">day</span>,<span class="ruby-identifier">args</span>)}
253
401
  <span class="ruby-keyword">end</span></pre>
254
402
  </div><!-- pull_days-source -->
255
403
 
@@ -293,12 +441,12 @@ scheduled date values in the game ID.</p>
293
441
  <span class="ruby-value">:print_games</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">true</span>,
294
442
  <span class="ruby-value">:games_folder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Greenmonster</span>.<span class="ruby-identifier">games_folder</span>
295
443
  }.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">args</span>)
444
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Games folder location required.&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>].<span class="ruby-identifier">nil?</span>
445
+
296
446
  <span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>] = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>])
297
447
 
298
448
  <span class="ruby-identifier">puts</span> <span class="ruby-identifier">game_id</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:print_games</span>]
299
-
300
- <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Games folder location required.&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>].<span class="ruby-identifier">nil?</span>
301
-
449
+
302
450
  <span class="ruby-identifier">paths</span> = {
303
451
  <span class="ruby-value">:localGameFolder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_code</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">format_date_as_folder</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">:date</span>]) <span class="ruby-operator">+</span> <span class="ruby-identifier">game_id</span>,
304
452
  <span class="ruby-value">:mlbGameFolder</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{gameday_league_and_date_url(args)}/#{game_id}/&quot;</span>
@@ -47,6 +47,10 @@
47
47
  <nav id="file-list-section" class="section">
48
48
  <h3 class="section-header">Defined In</h3>
49
49
  <ul>
50
+ <li>lib/generators/greenmonster/install_generator.rb
51
+ <li>lib/greenmonster/greenmonster.rb
52
+ <li>lib/greenmonster/model_extensions/player.rb
53
+ <li>lib/greenmonster/parser.rb
50
54
  <li>lib/greenmonster/version.rb
51
55
  <li>lib/greenmonster.rb
52
56
  </ul>
@@ -65,10 +69,16 @@
65
69
 
66
70
  <ul class="link-list">
67
71
 
72
+ <li><a href="#method-c-format_date_as_folder">::format_date_as_folder</a>
73
+
68
74
  <li><a href="#method-c-games_folder">::games_folder</a>
69
75
 
70
76
  <li><a href="#method-c-set_games_folder">::set_games_folder</a>
71
77
 
78
+ <li><a href="#method-c-traverse_dates">::traverse_dates</a>
79
+
80
+ <li><a href="#method-c-traverse_folders_for_date">::traverse_folders_for_date</a>
81
+
72
82
  </ul>
73
83
  </nav>
74
84
 
@@ -94,12 +104,32 @@
94
104
 
95
105
  <li><a href="./Greenmonster.html">Greenmonster</a>
96
106
 
107
+ <li><a href="./Greenmonster/Generators.html">Greenmonster::Generators</a>
108
+
109
+ <li><a href="./Greenmonster/Generators/InstallGenerator.html">Greenmonster::Generators::InstallGenerator</a>
110
+
111
+ <li><a href="./Greenmonster/Parser.html">Greenmonster::Parser</a>
112
+
113
+ <li><a href="./Greenmonster/Player.html">Greenmonster::Player</a>
114
+
97
115
  <li><a href="./Greenmonster/Spider.html">Greenmonster::Spider</a>
98
116
 
117
+ <li><a href="./Athlete.html">Athlete</a>
118
+
119
+ <li><a href="./GreenmonsterPlayerTest.html">GreenmonsterPlayerTest</a>
120
+
99
121
  <li><a href="./GreenmonsterSpiderTest.html">GreenmonsterSpiderTest</a>
100
122
 
101
123
  <li><a href="./GreenmonsterTest.html">GreenmonsterTest</a>
102
124
 
125
+ <li><a href="./GreenmonsterTraversalTest.html">GreenmonsterTraversalTest</a>
126
+
127
+ <li><a href="./InstallGreenmonster.html">InstallGreenmonster</a>
128
+
129
+ <li><a href="./TestCreatePlayersFromGamedayXMLGame.html">TestCreatePlayersFromGamedayXMLGame</a>
130
+
131
+ <li><a href="./TestParsePlayersFromGamedayXMLFiles.html">TestParsePlayersFromGamedayXMLFiles</a>
132
+
103
133
  </ul>
104
134
  </nav>
105
135
 
@@ -144,6 +174,36 @@
144
174
  <h3 class="section-header">Public Class Methods</h3>
145
175
 
146
176
 
177
+ <div id="method-c-format_date_as_folder" class="method-detail ">
178
+
179
+ <div class="method-heading">
180
+ <span class="method-name">format_date_as_folder</span><span
181
+ class="method-args">(date)</span>
182
+ <span class="method-click-advice">click to toggle source</span>
183
+ </div>
184
+
185
+
186
+ <div class="method-description">
187
+
188
+
189
+
190
+
191
+
192
+ <div class="method-source-code" id="format_date_as_folder-source">
193
+ <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 41</span>
194
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_date_as_folder</span>(<span class="ruby-identifier">date</span>)
195
+ <span class="ruby-identifier">date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;year_%Y/month_%m/day_%d&quot;</span>)
196
+ <span class="ruby-keyword">end</span></pre>
197
+ </div><!-- format_date_as_folder-source -->
198
+
199
+ </div>
200
+
201
+
202
+
203
+
204
+ </div><!-- format_date_as_folder-method -->
205
+
206
+
147
207
  <div id="method-c-games_folder" class="method-detail ">
148
208
 
149
209
  <div class="method-heading">
@@ -167,7 +227,7 @@
167
227
 
168
228
 
169
229
  <div class="method-source-code" id="games_folder-source">
170
- <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 36</span>
230
+ <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 37</span>
171
231
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">games_folder</span>
172
232
  <span class="ruby-identifier">@@games_folder</span>
173
233
  <span class="ruby-keyword">end</span></pre>
@@ -207,7 +267,7 @@ the server.</p>
207
267
 
208
268
 
209
269
  <div class="method-source-code" id="set_games_folder-source">
210
- <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 24</span>
270
+ <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 25</span>
211
271
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">set_games_folder</span>(<span class="ruby-identifier">location</span>)
212
272
  <span class="ruby-identifier">@@games_folder</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>)
213
273
  <span class="ruby-keyword">end</span></pre>
@@ -221,6 +281,83 @@ the server.</p>
221
281
  </div><!-- set_games_folder-method -->
222
282
 
223
283
 
284
+ <div id="method-c-traverse_dates" class="method-detail ">
285
+
286
+ <div class="method-heading">
287
+ <span class="method-name">traverse_dates</span><span
288
+ class="method-args">(range = (Date.today..Date.today), args = {}) { |day,args| ... }</span>
289
+ <span class="method-click-advice">click to toggle source</span>
290
+ </div>
291
+
292
+
293
+ <div class="method-description">
294
+
295
+ <p>Walk the dates in a range of dates, and execute whatever methods on the
296
+ date and argument set specified. Used when processing games and players.</p>
297
+
298
+
299
+
300
+ <div class="method-source-code" id="traverse_dates-source">
301
+ <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 52</span>
302
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">traverse_dates</span>(<span class="ruby-identifier">range</span> = (<span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span><span class="ruby-operator">..</span><span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>), <span class="ruby-identifier">args</span> = {})
303
+ <span class="ruby-identifier">range</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
304
+ <span class="ruby-keyword">yield</span> <span class="ruby-identifier">day</span>,<span class="ruby-identifier">args</span>
305
+ <span class="ruby-keyword">end</span>
306
+ <span class="ruby-keyword">end</span></pre>
307
+ </div><!-- traverse_dates-source -->
308
+
309
+ </div>
310
+
311
+
312
+
313
+
314
+ </div><!-- traverse_dates-method -->
315
+
316
+
317
+ <div id="method-c-traverse_folders_for_date" class="method-detail ">
318
+
319
+ <div class="method-heading">
320
+ <span class="method-name">traverse_folders_for_date</span><span
321
+ class="method-args">(day,args = {}) { |gdir, args| ... }</span>
322
+ <span class="method-click-advice">click to toggle source</span>
323
+ </div>
324
+
325
+
326
+ <div class="method-description">
327
+
328
+ <p>Walk the game folders in a range of dates, and execute whatever methods on
329
+ the game folder and argument set specified. Used when processing games and
330
+ players.</p>
331
+
332
+
333
+
334
+ <div class="method-source-code" id="traverse_folders_for_date-source">
335
+ <pre><span class="ruby-comment"># File lib/greenmonster.rb, line 65</span>
336
+ <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">traverse_folders_for_date</span>(<span class="ruby-identifier">day</span>,<span class="ruby-identifier">args</span> = {})
337
+ <span class="ruby-keyword">begin</span>
338
+ <span class="ruby-identifier">folders</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">entries</span>(<span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">:games_folder</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">@@games_folder</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">args</span>[<span class="ruby-value">:sport_code</span>] <span class="ruby-operator">||</span> <span class="ruby-string">'mlb'</span>) <span class="ruby-operator">+</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_date_as_folder</span>(<span class="ruby-identifier">day</span>))
339
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">StandardError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">boom</span>
340
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;No files for #{day.to_s}.&quot;</span>
341
+ <span class="ruby-keyword">end</span>
342
+
343
+ <span class="ruby-keyword">unless</span> <span class="ruby-identifier">folders</span>.<span class="ruby-identifier">nil?</span>
344
+ <span class="ruby-identifier">folders</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">gdir</span><span class="ruby-operator">|</span>
345
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">gdir</span>[<span class="ruby-value">0</span>,<span class="ruby-value">3</span>] <span class="ruby-operator">==</span> <span class="ruby-string">'gid'</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">gdir</span>[<span class="ruby-value">-4</span>,<span class="ruby-value">4</span>] <span class="ruby-operator">!=</span> <span class="ruby-string">&quot;_bak&quot;</span>
346
+ <span class="ruby-keyword">yield</span> <span class="ruby-identifier">gdir</span>, <span class="ruby-identifier">args</span>
347
+ <span class="ruby-keyword">end</span>
348
+ <span class="ruby-keyword">end</span>
349
+ <span class="ruby-keyword">end</span>
350
+ <span class="ruby-keyword">end</span></pre>
351
+ </div><!-- traverse_folders_for_date-source -->
352
+
353
+ </div>
354
+
355
+
356
+
357
+
358
+ </div><!-- traverse_folders_for_date-method -->
359
+
360
+
224
361
  </section><!-- public-class-method-details -->
225
362
 
226
363
  </section><!-- 5Buntitled-5D -->