greenmonster 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["greenmonster","spider","greenmonsterspidertest","greenmonstertest","games_folder()","pull_day()","pull_days()","pull_game()","set_games_folder()","setup()","setup()","teardown()","teardown()","test_copy_gameday_xml()","test_format_date_as_folder()","test_local_file_not_created_if_remote_file_does_not_exist()","test_no_exception_raised_if_game_data_not_available()","test_pull_all_sport_codes_for_day()","test_pull_day()","test_pull_day_with_default_folder_location()","test_pull_days()","test_pull_games_prior_to_2008()","test_pull_non_mlb_sport_code_games()","test_pull_single_game_by_game_id()","test_set_games_folder_location()","gemfile","rakefile"],"longSearchIndex":["greenmonster","greenmonster::spider","greenmonsterspidertest","greenmonstertest","greenmonster::games_folder()","greenmonster::spider::pull_day()","greenmonster::spider::pull_days()","greenmonster::spider::pull_game()","greenmonster::set_games_folder()","greenmonsterspidertest#setup()","greenmonstertest#setup()","greenmonsterspidertest#teardown()","greenmonstertest#teardown()","greenmonsterspidertest#test_copy_gameday_xml()","greenmonsterspidertest#test_format_date_as_folder()","greenmonsterspidertest#test_local_file_not_created_if_remote_file_does_not_exist()","greenmonsterspidertest#test_no_exception_raised_if_game_data_not_available()","greenmonsterspidertest#test_pull_all_sport_codes_for_day()","greenmonsterspidertest#test_pull_day()","greenmonsterspidertest#test_pull_day_with_default_folder_location()","greenmonsterspidertest#test_pull_days()","greenmonsterspidertest#test_pull_games_prior_to_2008()","greenmonsterspidertest#test_pull_non_mlb_sport_code_games()","greenmonsterspidertest#test_pull_single_game_by_game_id()","greenmonstertest#test_set_games_folder_location()","",""],"info":[["Greenmonster","","Greenmonster.html","",""],["Greenmonster::Spider","","Greenmonster/Spider.html","","<p>The Gameday XML Spider utility\n"],["GreenmonsterSpiderTest","","GreenmonsterSpiderTest.html","",""],["GreenmonsterTest","","GreenmonsterTest.html","",""],["games_folder","Greenmonster","Greenmonster.html#method-c-games_folder","()","<p>Return the default games folder location\n<p>Example:\n\n<pre>&gt;&gt; Greenmonster.set_games_folder(&quot;/Users/geoff/game_data&quot;) ...</pre>\n"],["pull_day","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_day","(args = {})","<p>Pull Gameday XML files for a given date. Default options for the spider\nare to pull games with sport_code …\n"],["pull_days","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_days","(range,args = {})","<p>Pull Gameday XML files for a range of dates. The args hash passes arguments\nlike games_folder location …\n"],["pull_game","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_game","(game_id,args = {})","<p>Pull Gameday XML files for a given game, specified by the game ID. If date\nand sport code are not specified …\n"],["set_games_folder","Greenmonster","Greenmonster.html#method-c-set_games_folder","(location)","<p>Set the default folder to which games are saved after being downloaded from\nthe server.\n<p>Example:\n\n<pre class=\"ruby\">=<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-constant\">Greenmonster</span>.<span class=\"ruby-identifier\">set_games_folder</span>(<span class=\"ruby-string\">&quot;/Users/geoff/game_data&quot;</span>)\n</pre>\n"],["setup","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-setup","()",""],["setup","GreenmonsterTest","GreenmonsterTest.html#method-i-setup","()",""],["teardown","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-teardown","()",""],["teardown","GreenmonsterTest","GreenmonsterTest.html#method-i-teardown","()",""],["test_copy_gameday_xml","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_copy_gameday_xml","()",""],["test_format_date_as_folder","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_format_date_as_folder","()",""],["test_local_file_not_created_if_remote_file_does_not_exist","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_local_file_not_created_if_remote_file_does_not_exist","()",""],["test_no_exception_raised_if_game_data_not_available","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_no_exception_raised_if_game_data_not_available","()",""],["test_pull_all_sport_codes_for_day","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_all_sport_codes_for_day","()",""],["test_pull_day","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_day","()",""],["test_pull_day_with_default_folder_location","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_day_with_default_folder_location","()",""],["test_pull_days","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_days","()",""],["test_pull_games_prior_to_2008","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_games_prior_to_2008","()",""],["test_pull_non_mlb_sport_code_games","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_non_mlb_sport_code_games","()",""],["test_pull_single_game_by_game_id","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_single_game_by_game_id","()",""],["test_set_games_folder_location","GreenmonsterTest","GreenmonsterTest.html#method-i-test_set_games_folder_location","()",""],["Gemfile","","Gemfile.html","","<p>source “rubygems.org”\n<p># Specify your gem’s dependencies in greenmonster.gemspec gemspec\n"],["Rakefile","","Rakefile.html","","<p>require “bundler/gem_tasks” require ‘rake/testtask’\n<p>Rake::TestTask.new do |t|\n\n<pre>t.libs &lt;&lt; 'test'</pre>\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["athlete","greenmonster","generators","installgenerator","parser","player","spider","greenmonsterplayertest","greenmonsterspidertest","greenmonstertest","greenmonstertraversaltest","installgreenmonster","testcreateplayersfromgamedayxmlgame","testparseplayersfromgamedayxmlfiles","copygamedayxml()","create_migration_file()","date_from_game_id()","down()","extract_players_from_game()","find_or_initialize_by_id()","format_date_as_folder()","format_date_as_folder()","game_path()","games_folder()","included()","next_migration_number()","pull()","pull_day()","pull_days()","pull_game()","set_games_folder()","setup()","setup()","setup()","setup()","setup()","teardown()","teardown()","teardown()","teardown()","teardown()","test_copy_gameday_xml()","test_create_players_from_gameday_xml_game()","test_format_date_as_folder()","test_local_file_not_created_if_remote_file_does_not_exist()","test_no_exception_raised_if_game_data_not_available()","test_parse_players_from_game()","test_player_ids_stored_as_integers()","test_pull_all_sport_codes_for_day()","test_pull_day()","test_pull_day_with_default_folder_location()","test_pull_days()","test_pull_games_prior_to_2008()","test_pull_non_mlb_sport_code_games()","test_pull_single_game_by_game_id()","test_set_games_folder_location()","test_sport_code_argument_as_array()","test_to_s()","test_traverse_dates_across_range()","test_traverse_dates_with_no_range()","test_traverse_folders_for_date()","test_traverse_folders_for_non_mlb_sport_code()","to_s()","traverse_dates()","traverse_folders_for_date()","up()","gemfile","rakefile"],"longSearchIndex":["athlete","greenmonster","greenmonster::generators","greenmonster::generators::installgenerator","greenmonster::parser","greenmonster::player","greenmonster::spider","greenmonsterplayertest","greenmonsterspidertest","greenmonstertest","greenmonstertraversaltest","installgreenmonster","testcreateplayersfromgamedayxmlgame","testparseplayersfromgamedayxmlfiles","greenmonster::spider::copygamedayxml()","greenmonster::generators::installgenerator#create_migration_file()","greenmonster::parser::date_from_game_id()","installgreenmonster::down()","greenmonster::parser::extract_players_from_game()","athlete::find_or_initialize_by_id()","greenmonster::format_date_as_folder()","greenmonster::spider::format_date_as_folder()","greenmonster::parser::game_path()","greenmonster::games_folder()","greenmonster::player::included()","greenmonster::generators::installgenerator::next_migration_number()","greenmonster::spider::pull()","greenmonster::spider::pull_day()","greenmonster::spider::pull_days()","greenmonster::spider::pull_game()","greenmonster::set_games_folder()","greenmonsterspidertest#setup()","greenmonstertest#setup()","greenmonstertraversaltest#setup()","testcreateplayersfromgamedayxmlgame#setup()","testparseplayersfromgamedayxmlfiles#setup()","greenmonsterspidertest#teardown()","greenmonstertest#teardown()","greenmonstertraversaltest#teardown()","testcreateplayersfromgamedayxmlgame#teardown()","testparseplayersfromgamedayxmlfiles#teardown()","greenmonsterspidertest#test_copy_gameday_xml()","testcreateplayersfromgamedayxmlgame#test_create_players_from_gameday_xml_game()","greenmonsterspidertest#test_format_date_as_folder()","greenmonsterspidertest#test_local_file_not_created_if_remote_file_does_not_exist()","greenmonsterspidertest#test_no_exception_raised_if_game_data_not_available()","testparseplayersfromgamedayxmlfiles#test_parse_players_from_game()","testparseplayersfromgamedayxmlfiles#test_player_ids_stored_as_integers()","greenmonsterspidertest#test_pull_all_sport_codes_for_day()","greenmonsterspidertest#test_pull_day()","greenmonsterspidertest#test_pull_day_with_default_folder_location()","greenmonsterspidertest#test_pull_days()","greenmonsterspidertest#test_pull_games_prior_to_2008()","greenmonsterspidertest#test_pull_non_mlb_sport_code_games()","greenmonsterspidertest#test_pull_single_game_by_game_id()","greenmonstertest#test_set_games_folder_location()","greenmonsterspidertest#test_sport_code_argument_as_array()","greenmonsterplayertest#test_to_s()","greenmonstertraversaltest#test_traverse_dates_across_range()","greenmonstertraversaltest#test_traverse_dates_with_no_range()","greenmonstertraversaltest#test_traverse_folders_for_date()","greenmonstertraversaltest#test_traverse_folders_for_non_mlb_sport_code()","greenmonster::player#to_s()","greenmonster::traverse_dates()","greenmonster::traverse_folders_for_date()","installgreenmonster::up()","",""],"info":[["Athlete","","Athlete.html","",""],["Greenmonster","","Greenmonster.html","",""],["Greenmonster::Generators","","Greenmonster/Generators.html","",""],["Greenmonster::Generators::InstallGenerator","","Greenmonster/Generators/InstallGenerator.html","",""],["Greenmonster::Parser","","Greenmonster/Parser.html","",""],["Greenmonster::Player","","Greenmonster/Player.html","",""],["Greenmonster::Spider","","Greenmonster/Spider.html","","<p>The Gameday XML Spider utility\n"],["GreenmonsterPlayerTest","","GreenmonsterPlayerTest.html","",""],["GreenmonsterSpiderTest","","GreenmonsterSpiderTest.html","",""],["GreenmonsterTest","","GreenmonsterTest.html","",""],["GreenmonsterTraversalTest","","GreenmonsterTraversalTest.html","",""],["InstallGreenmonster","","InstallGreenmonster.html","",""],["TestCreatePlayersFromGamedayXMLGame","","TestCreatePlayersFromGamedayXMLGame.html","",""],["TestParsePlayersFromGamedayXMLFiles","","TestParsePlayersFromGamedayXMLFiles.html","",""],["copyGameDayXML","Greenmonster::Spider","Greenmonster/Spider.html#method-c-copyGameDayXML","(file_name,location,paths)",""],["create_migration_file","Greenmonster::Generators::InstallGenerator","Greenmonster/Generators/InstallGenerator.html#method-i-create_migration_file","()",""],["date_from_game_id","Greenmonster::Parser","Greenmonster/Parser.html#method-c-date_from_game_id","(gid)",""],["down","InstallGreenmonster","InstallGreenmonster.html#method-c-down","()",""],["extract_players_from_game","Greenmonster::Parser","Greenmonster/Parser.html#method-c-extract_players_from_game","(gid, args = {})",""],["find_or_initialize_by_id","Athlete","Athlete.html#method-c-find_or_initialize_by_id","(id_number)",""],["format_date_as_folder","Greenmonster","Greenmonster.html#method-c-format_date_as_folder","(date)",""],["format_date_as_folder","Greenmonster::Spider","Greenmonster/Spider.html#method-c-format_date_as_folder","(date)",""],["game_path","Greenmonster::Parser","Greenmonster/Parser.html#method-c-game_path","(gid,args)",""],["games_folder","Greenmonster","Greenmonster.html#method-c-games_folder","()","<p>Return the default games folder location\n<p>Example:\n\n<pre>&gt;&gt; Greenmonster.set_games_folder(&quot;/Users/geoff/game_data&quot;) ...</pre>\n"],["included","Greenmonster::Player","Greenmonster/Player.html#method-c-included","(k)",""],["next_migration_number","Greenmonster::Generators::InstallGenerator","Greenmonster/Generators/InstallGenerator.html#method-c-next_migration_number","(dirname)",""],["pull","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull","(date = Date.today,args = {})",""],["pull_day","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_day","(args = {})","<p>Pull Gameday XML files for a given date. Default options for the spider\nare to pull games with sport_code …\n"],["pull_days","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_days","(range = [Date.today],args = {})",""],["pull_game","Greenmonster::Spider","Greenmonster/Spider.html#method-c-pull_game","(game_id,args = {})","<p>Pull Gameday XML files for a given game, specified by the game ID. If date\nand sport code are not specified …\n"],["set_games_folder","Greenmonster","Greenmonster.html#method-c-set_games_folder","(location)","<p>Set the default folder to which games are saved after being downloaded from\nthe server.\n<p>Example:\n\n<pre class=\"ruby\">=<span class=\"ruby-operator\">&gt;</span> <span class=\"ruby-constant\">Greenmonster</span>.<span class=\"ruby-identifier\">set_games_folder</span>(<span class=\"ruby-string\">&quot;/Users/geoff/game_data&quot;</span>)\n</pre>\n"],["setup","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-setup","()",""],["setup","GreenmonsterTest","GreenmonsterTest.html#method-i-setup","()",""],["setup","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-setup","()",""],["setup","TestCreatePlayersFromGamedayXMLGame","TestCreatePlayersFromGamedayXMLGame.html#method-i-setup","()",""],["setup","TestParsePlayersFromGamedayXMLFiles","TestParsePlayersFromGamedayXMLFiles.html#method-i-setup","()",""],["teardown","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-teardown","()",""],["teardown","GreenmonsterTest","GreenmonsterTest.html#method-i-teardown","()",""],["teardown","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-teardown","()",""],["teardown","TestCreatePlayersFromGamedayXMLGame","TestCreatePlayersFromGamedayXMLGame.html#method-i-teardown","()",""],["teardown","TestParsePlayersFromGamedayXMLFiles","TestParsePlayersFromGamedayXMLFiles.html#method-i-teardown","()",""],["test_copy_gameday_xml","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_copy_gameday_xml","()",""],["test_create_players_from_gameday_xml_game","TestCreatePlayersFromGamedayXMLGame","TestCreatePlayersFromGamedayXMLGame.html#method-i-test_create_players_from_gameday_xml_game","()",""],["test_format_date_as_folder","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_format_date_as_folder","()",""],["test_local_file_not_created_if_remote_file_does_not_exist","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_local_file_not_created_if_remote_file_does_not_exist","()",""],["test_no_exception_raised_if_game_data_not_available","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_no_exception_raised_if_game_data_not_available","()",""],["test_parse_players_from_game","TestParsePlayersFromGamedayXMLFiles","TestParsePlayersFromGamedayXMLFiles.html#method-i-test_parse_players_from_game","()",""],["test_player_ids_stored_as_integers","TestParsePlayersFromGamedayXMLFiles","TestParsePlayersFromGamedayXMLFiles.html#method-i-test_player_ids_stored_as_integers","()",""],["test_pull_all_sport_codes_for_day","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_all_sport_codes_for_day","()",""],["test_pull_day","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_day","()",""],["test_pull_day_with_default_folder_location","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_day_with_default_folder_location","()",""],["test_pull_days","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_days","()",""],["test_pull_games_prior_to_2008","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_games_prior_to_2008","()",""],["test_pull_non_mlb_sport_code_games","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_non_mlb_sport_code_games","()",""],["test_pull_single_game_by_game_id","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_pull_single_game_by_game_id","()",""],["test_set_games_folder_location","GreenmonsterTest","GreenmonsterTest.html#method-i-test_set_games_folder_location","()",""],["test_sport_code_argument_as_array","GreenmonsterSpiderTest","GreenmonsterSpiderTest.html#method-i-test_sport_code_argument_as_array","()",""],["test_to_s","GreenmonsterPlayerTest","GreenmonsterPlayerTest.html#method-i-test_to_s","()",""],["test_traverse_dates_across_range","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-test_traverse_dates_across_range","()",""],["test_traverse_dates_with_no_range","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-test_traverse_dates_with_no_range","()",""],["test_traverse_folders_for_date","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-test_traverse_folders_for_date","()",""],["test_traverse_folders_for_non_mlb_sport_code","GreenmonsterTraversalTest","GreenmonsterTraversalTest.html#method-i-test_traverse_folders_for_non_mlb_sport_code","()",""],["to_s","Greenmonster::Player","Greenmonster/Player.html#method-i-to_s","()",""],["traverse_dates","Greenmonster","Greenmonster.html#method-c-traverse_dates","(range = (Date.today..Date.today), args = {})","<p>Walk the dates in a range of dates, and execute whatever methods on the\ndate and argument set specified. …\n"],["traverse_folders_for_date","Greenmonster","Greenmonster.html#method-c-traverse_folders_for_date","(day,args = {})","<p>Walk the game folders in a range of dates, and execute whatever methods on\nthe game folder and argument …\n"],["up","InstallGreenmonster","InstallGreenmonster.html#method-c-up","()",""],["Gemfile","","Gemfile.html","","<p>source “rubygems.org”\n<p># Specify your gem’s dependencies in greenmonster.gemspec gemspec\n"],["Rakefile","","Rakefile.html","","<p>require “bundler/gem_tasks” require ‘rake/testtask’\n<p>Rake::TestTask.new do |t|\n\n<pre>t.libs &lt;&lt; 'test'</pre>\n"]]}}
@@ -38,9 +38,27 @@
38
38
  <ul>
39
39
  <li class="module">
40
40
  <a href="Greenmonster.html">Greenmonster</a>
41
+ </li>
42
+ <li class="module">
43
+ <a href="Greenmonster/Generators.html">Greenmonster::Generators</a>
44
+ </li>
45
+ <li class="class">
46
+ <a href="Greenmonster/Generators/InstallGenerator.html">Greenmonster::Generators::InstallGenerator</a>
47
+ </li>
48
+ <li class="module">
49
+ <a href="Greenmonster/Parser.html">Greenmonster::Parser</a>
50
+ </li>
51
+ <li class="module">
52
+ <a href="Greenmonster/Player.html">Greenmonster::Player</a>
41
53
  </li>
42
54
  <li class="class">
43
55
  <a href="Greenmonster/Spider.html">Greenmonster::Spider</a>
56
+ </li>
57
+ <li class="class">
58
+ <a href="Athlete.html">Athlete</a>
59
+ </li>
60
+ <li class="class">
61
+ <a href="GreenmonsterPlayerTest.html">GreenmonsterPlayerTest</a>
44
62
  </li>
45
63
  <li class="class">
46
64
  <a href="GreenmonsterSpiderTest.html">GreenmonsterSpiderTest</a>
@@ -48,14 +66,48 @@
48
66
  <li class="class">
49
67
  <a href="GreenmonsterTest.html">GreenmonsterTest</a>
50
68
  </li>
69
+ <li class="class">
70
+ <a href="GreenmonsterTraversalTest.html">GreenmonsterTraversalTest</a>
71
+ </li>
72
+ <li class="class">
73
+ <a href="InstallGreenmonster.html">InstallGreenmonster</a>
74
+ </li>
75
+ <li class="class">
76
+ <a href="TestCreatePlayersFromGamedayXMLGame.html">TestCreatePlayersFromGamedayXMLGame</a>
77
+ </li>
78
+ <li class="class">
79
+ <a href="TestParsePlayersFromGamedayXMLFiles.html">TestParsePlayersFromGamedayXMLFiles</a>
80
+ </li>
51
81
 
52
82
  </ul>
53
83
 
54
84
  <h2 id="methods">Methods</h2>
55
85
  <ul>
56
86
 
87
+ <li class="method"><a href="Greenmonster/Spider.html#method-c-copyGameDayXML">::copyGameDayXML &mdash; Greenmonster::Spider</a>
88
+
89
+ <li class="method"><a href="Greenmonster/Parser.html#method-c-date_from_game_id">::date_from_game_id &mdash; Greenmonster::Parser</a>
90
+
91
+ <li class="method"><a href="InstallGreenmonster.html#method-c-down">::down &mdash; InstallGreenmonster</a>
92
+
93
+ <li class="method"><a href="Greenmonster/Parser.html#method-c-extract_players_from_game">::extract_players_from_game &mdash; Greenmonster::Parser</a>
94
+
95
+ <li class="method"><a href="Athlete.html#method-c-find_or_initialize_by_id">::find_or_initialize_by_id &mdash; Athlete</a>
96
+
97
+ <li class="method"><a href="Greenmonster/Spider.html#method-c-format_date_as_folder">::format_date_as_folder &mdash; Greenmonster::Spider</a>
98
+
99
+ <li class="method"><a href="Greenmonster.html#method-c-format_date_as_folder">::format_date_as_folder &mdash; Greenmonster</a>
100
+
101
+ <li class="method"><a href="Greenmonster/Parser.html#method-c-game_path">::game_path &mdash; Greenmonster::Parser</a>
102
+
57
103
  <li class="method"><a href="Greenmonster.html#method-c-games_folder">::games_folder &mdash; Greenmonster</a>
58
104
 
105
+ <li class="method"><a href="Greenmonster/Player.html#method-c-included">::included &mdash; Greenmonster::Player</a>
106
+
107
+ <li class="method"><a href="Greenmonster/Generators/InstallGenerator.html#method-c-next_migration_number">::next_migration_number &mdash; Greenmonster::Generators::InstallGenerator</a>
108
+
109
+ <li class="method"><a href="Greenmonster/Spider.html#method-c-pull">::pull &mdash; Greenmonster::Spider</a>
110
+
59
111
  <li class="method"><a href="Greenmonster/Spider.html#method-c-pull_day">::pull_day &mdash; Greenmonster::Spider</a>
60
112
 
61
113
  <li class="method"><a href="Greenmonster/Spider.html#method-c-pull_days">::pull_days &mdash; Greenmonster::Spider</a>
@@ -64,22 +116,48 @@
64
116
 
65
117
  <li class="method"><a href="Greenmonster.html#method-c-set_games_folder">::set_games_folder &mdash; Greenmonster</a>
66
118
 
67
- <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-setup">#setup &mdash; GreenmonsterSpiderTest</a>
119
+ <li class="method"><a href="Greenmonster.html#method-c-traverse_dates">::traverse_dates &mdash; Greenmonster</a>
120
+
121
+ <li class="method"><a href="Greenmonster.html#method-c-traverse_folders_for_date">::traverse_folders_for_date &mdash; Greenmonster</a>
122
+
123
+ <li class="method"><a href="InstallGreenmonster.html#method-c-up">::up &mdash; InstallGreenmonster</a>
124
+
125
+ <li class="method"><a href="Greenmonster/Generators/InstallGenerator.html#method-i-create_migration_file">#create_migration_file &mdash; Greenmonster::Generators::InstallGenerator</a>
126
+
127
+ <li class="method"><a href="TestParsePlayersFromGamedayXMLFiles.html#method-i-setup">#setup &mdash; TestParsePlayersFromGamedayXMLFiles</a>
68
128
 
69
129
  <li class="method"><a href="GreenmonsterTest.html#method-i-setup">#setup &mdash; GreenmonsterTest</a>
70
130
 
131
+ <li class="method"><a href="TestCreatePlayersFromGamedayXMLGame.html#method-i-setup">#setup &mdash; TestCreatePlayersFromGamedayXMLGame</a>
132
+
133
+ <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-setup">#setup &mdash; GreenmonsterSpiderTest</a>
134
+
135
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-setup">#setup &mdash; GreenmonsterTraversalTest</a>
136
+
71
137
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-teardown">#teardown &mdash; GreenmonsterSpiderTest</a>
72
138
 
73
139
  <li class="method"><a href="GreenmonsterTest.html#method-i-teardown">#teardown &mdash; GreenmonsterTest</a>
74
140
 
141
+ <li class="method"><a href="TestParsePlayersFromGamedayXMLFiles.html#method-i-teardown">#teardown &mdash; TestParsePlayersFromGamedayXMLFiles</a>
142
+
143
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-teardown">#teardown &mdash; GreenmonsterTraversalTest</a>
144
+
145
+ <li class="method"><a href="TestCreatePlayersFromGamedayXMLGame.html#method-i-teardown">#teardown &mdash; TestCreatePlayersFromGamedayXMLGame</a>
146
+
75
147
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_copy_gameday_xml">#test_copy_gameday_xml &mdash; GreenmonsterSpiderTest</a>
76
148
 
149
+ <li class="method"><a href="TestCreatePlayersFromGamedayXMLGame.html#method-i-test_create_players_from_gameday_xml_game">#test_create_players_from_gameday_xml_game &mdash; TestCreatePlayersFromGamedayXMLGame</a>
150
+
77
151
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_format_date_as_folder">#test_format_date_as_folder &mdash; GreenmonsterSpiderTest</a>
78
152
 
79
153
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_local_file_not_created_if_remote_file_does_not_exist">#test_local_file_not_created_if_remote_file_does_not_exist &mdash; GreenmonsterSpiderTest</a>
80
154
 
81
155
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_no_exception_raised_if_game_data_not_available">#test_no_exception_raised_if_game_data_not_available &mdash; GreenmonsterSpiderTest</a>
82
156
 
157
+ <li class="method"><a href="TestParsePlayersFromGamedayXMLFiles.html#method-i-test_parse_players_from_game">#test_parse_players_from_game &mdash; TestParsePlayersFromGamedayXMLFiles</a>
158
+
159
+ <li class="method"><a href="TestParsePlayersFromGamedayXMLFiles.html#method-i-test_player_ids_stored_as_integers">#test_player_ids_stored_as_integers &mdash; TestParsePlayersFromGamedayXMLFiles</a>
160
+
83
161
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_pull_all_sport_codes_for_day">#test_pull_all_sport_codes_for_day &mdash; GreenmonsterSpiderTest</a>
84
162
 
85
163
  <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_pull_day">#test_pull_day &mdash; GreenmonsterSpiderTest</a>
@@ -96,6 +174,20 @@
96
174
 
97
175
  <li class="method"><a href="GreenmonsterTest.html#method-i-test_set_games_folder_location">#test_set_games_folder_location &mdash; GreenmonsterTest</a>
98
176
 
177
+ <li class="method"><a href="GreenmonsterSpiderTest.html#method-i-test_sport_code_argument_as_array">#test_sport_code_argument_as_array &mdash; GreenmonsterSpiderTest</a>
178
+
179
+ <li class="method"><a href="GreenmonsterPlayerTest.html#method-i-test_to_s">#test_to_s &mdash; GreenmonsterPlayerTest</a>
180
+
181
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-test_traverse_dates_across_range">#test_traverse_dates_across_range &mdash; GreenmonsterTraversalTest</a>
182
+
183
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-test_traverse_dates_with_no_range">#test_traverse_dates_with_no_range &mdash; GreenmonsterTraversalTest</a>
184
+
185
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-test_traverse_folders_for_date">#test_traverse_folders_for_date &mdash; GreenmonsterTraversalTest</a>
186
+
187
+ <li class="method"><a href="GreenmonsterTraversalTest.html#method-i-test_traverse_folders_for_non_mlb_sport_code">#test_traverse_folders_for_non_mlb_sport_code &mdash; GreenmonsterTraversalTest</a>
188
+
189
+ <li class="method"><a href="Greenmonster/Player.html#method-i-to_s">#to_s &mdash; Greenmonster::Player</a>
190
+
99
191
  </ul>
100
192
 
101
193
 
data/greenmonster.gemspec CHANGED
@@ -11,8 +11,6 @@ Gem::Specification.new do |s|
11
11
  s.summary = %q{A utility for working with MLB Gameday XML data.}
12
12
  s.description = %q{A utility for working with MLB Gameday XML data.}
13
13
 
14
- s.rubyforge_project = "greenmonster"
15
-
16
14
  s.files = `git ls-files`.split("\n")
17
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -20,4 +18,8 @@ Gem::Specification.new do |s|
20
18
 
21
19
  s.add_dependency "nokogiri"
22
20
  s.add_dependency "httparty"
21
+ s.add_dependency "activerecord"
22
+ s.add_development_dependency "minitest", "~> 2.12"
23
+ s.add_development_dependency "supermodel"
24
+ s.add_development_dependency "sqlite3-ruby"
23
25
  end
@@ -0,0 +1,20 @@
1
+ module Greenmonster
2
+ module Generators
3
+ class InstallMlbGamesGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+ source_root File.expand_path('../../templates', __FILE__)
6
+
7
+ def self.next_migration_number(dirname)
8
+ if ActiveRecord::Base.timestamped_migrations
9
+ Time.new.utc.strftime("%Y%m%d%H%M%S")
10
+ else
11
+ "%.3d" % (current_migration_number(dirname) + 1)
12
+ end
13
+ end
14
+
15
+ def create_migration_file
16
+ migration_template 'install_greenmonster_mlb_games_migration.rb', 'db/migrate/install_greenmonster_mlb_games.rb'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Greenmonster
2
+ module Generators
3
+ class InstallPlayersGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+ source_root File.expand_path('../../templates', __FILE__)
6
+
7
+ def self.next_migration_number(dirname)
8
+ if ActiveRecord::Base.timestamped_migrations
9
+ Time.new.utc.strftime("%Y%m%d%H%M%S")
10
+ else
11
+ "%.3d" % (current_migration_number(dirname) + 1)
12
+ end
13
+ end
14
+
15
+ def create_migration_file
16
+ migration_template 'install_greenmonster_players_migration.rb', 'db/migrate/install_greenmonster_players.rb'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,54 @@
1
+ class InstallGreenmonsterMlbGames < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "mlb_games", :force => true do |t|
4
+ t.date "date"
5
+ t.datetime "created_at"
6
+ t.datetime "updated_at"
7
+ t.string "away_division"
8
+ t.string "home_division"
9
+ t.string "game_id"
10
+ t.string "game_location"
11
+ t.integer "game_num"
12
+ t.integer "game_pk"
13
+ t.string "game_status", :limit => 2
14
+ t.datetime "game_time"
15
+ t.boolean "game_time_is_tbd"
16
+ t.integer "game_time_offset_eastern"
17
+ t.integer "game_time_offset_local"
18
+ t.string "game_type", :limit => 1
19
+ t.string "game_venue"
20
+ t.boolean "is_suspension_resumption"
21
+ t.boolean "mlbtv"
22
+ t.string "preview"
23
+ t.integer "resumptionTime", :limit => 8
24
+ t.datetime "scheduledTime"
25
+ t.string "sport_code", :limit => 3
26
+ t.integer "venue_id"
27
+ t.string "video_uri"
28
+ t.string "wrapup"
29
+ t.boolean "game_dh"
30
+ t.integer "away_team_id"
31
+ t.integer "home_team_id"
32
+ t.integer "away_league_id"
33
+ t.integer "home_league_id"
34
+ t.string "away_sport_code"
35
+ t.string "home_sport_code"
36
+ t.integer "last_event_processed"
37
+ end
38
+
39
+ add_index "mlb_games", ["away_league_id"], :name => "mlb_games-away_league_id"
40
+ add_index "mlb_games", ["away_team_id"], :name => "mlb_games-away_team_id"
41
+ add_index "mlb_games", ["date"], :name => "mlb_games-date"
42
+ add_index "mlb_games", ["game_id", "game_type"], :name => "mlb_games-game_id-game_type"
43
+ add_index "mlb_games", ["game_id"], :name => "mlb_games-game_id"
44
+ add_index "mlb_games", ["game_pk"], :name => "mlb_games-game_pk", :unique => true
45
+ add_index "mlb_games", ["home_division"], :name => "mlb_games-division_id"
46
+ add_index "mlb_games", ["home_league_id"], :name => "mlb_games-home_league_id"
47
+ add_index "mlb_games", ["home_team_id"], :name => "mlb_games-home_team_id"
48
+ add_index "mlb_games", ["venue_id"], :name => "mlb_games-venue_id"
49
+ end
50
+
51
+ def self.down
52
+ drop_table :mlb_games
53
+ end
54
+ end
@@ -0,0 +1,37 @@
1
+ class InstallGreenmonsterPlayers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "players", :force => true do |t|
4
+ t.string "first"
5
+ t.string "last"
6
+ t.integer "bis_id"
7
+ t.string "retrosheet_id"
8
+ t.integer "baseball_db_id"
9
+ t.string "baseball_prospectus_id"
10
+ t.string "baseball_reference_id"
11
+ t.string "lahman_id"
12
+ t.integer "westbay_id"
13
+ t.integer "korea_kbo_id"
14
+ t.integer "japan_npb_id"
15
+ t.string "uuid", :limit => 150
16
+ t.boolean "current"
17
+ t.boolean "duplicate"
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ end
21
+
22
+ add_index "players", ["baseball_db_id"], :name => "players-baseball_db_id"
23
+ add_index "players", ["baseball_prospectus_id"], :name => "players-baseball_prospectus_id"
24
+ add_index "players", ["baseball_reference_id"], :name => "players-baseball_reference_id"
25
+ add_index "players", ["bis_id"], :name => "players-bis_id"
26
+ add_index "players", ["japan_npb_id"], :name => "players-japan_npb_id"
27
+ add_index "players", ["korea_kbo_id"], :name => "players-korea_kbo_id"
28
+ add_index "players", ["lahman_id"], :name => "players-lahman_id"
29
+ add_index "players", ["retrosheet_id"], :name => "players-retrosheet_id"
30
+ add_index "players", ["uuid"], :name => "players-uuid"
31
+ add_index "players", ["westbay_id"], :name => "players-westbay_id"
32
+ end
33
+
34
+ def self.down
35
+ drop_table :players
36
+ end
37
+ end
@@ -0,0 +1,106 @@
1
+ module Greenmonster
2
+ module MlbGame
3
+ def to_s
4
+ "Game #{self.game_pk}: #{self.game_id[15,6]} @ #{self.game_id[22,6]}"
5
+ rescue
6
+ "Game #{self.game_pk}: (Game ID not valid.)"
7
+ end
8
+
9
+ def update_with_line_score_data(line_score)
10
+ # Set Game Primary Key
11
+ self.game_pk = line_score.attributes['game_pk'].value.to_i
12
+ self.game_id = if line_score.has_attribute?('gameday_link')
13
+ line_score.attribute('gameday_link').value.gsub('_','')
14
+ elsif line_score.has_attribute?('id')
15
+ line_score.attribute('id').value.gsub('/','').gsub('-','')
16
+ else
17
+ raise "Unknown game_id, need new method for game."
18
+ end
19
+
20
+ self.game_num = self.game_id[20].to_i
21
+
22
+ # Set date
23
+ self.date = case
24
+ when line_score.attributes['id']
25
+ Date.new(
26
+ line_score.attributes['id'].value[0,4].to_i,
27
+ line_score.attributes['id'].value[5,2].to_i,
28
+ line_score.attributes['id'].value[8,2].to_i
29
+ )
30
+ when line_score.attributes['gameday_link']
31
+ Date.new(
32
+ line_score.attributes['gameday_link'].value[0,4].to_i,
33
+ line_score.attributes['gameday_link'].value[5,2].to_i,
34
+ line_score.attributes['gameday_link'].value[8,2].to_i
35
+ )
36
+ else
37
+ Date.new(0000,00,00)
38
+ end
39
+
40
+ # Set start time
41
+ if line_score.attributes['time'] and line_score.attributes['time'].value.include?(':')
42
+ self.game_time = Time.parse("#{self.date} #{line_score.attributes['time'].value} #{line_score.attributes['ampm']}")
43
+ else
44
+ self.game_time = Time.new(self.date.year,self.date.month,self.date.day,19,30)
45
+ end
46
+
47
+ # Set game status and type
48
+ self.game_status = line_score.attributes['ind'].value if line_score.attributes['ind']
49
+ self.game_type = line_score.attributes['game_type'].value if line_score.attributes['game_type']
50
+
51
+ # Set venue information
52
+ if line_score and line_score.attributes["venue"] and line_score.attributes["venue"].value and line_score.attributes['venue_id']
53
+ self.venue_id = line_score.attributes['venue_id'].value.to_i
54
+ self.game_venue = line_score.attributes['venue'].value
55
+ end
56
+
57
+ # Set leagues
58
+ self.home_league_id = line_score.attributes["home_league_id"].value.to_i if line_score.attributes["home_league_id"]
59
+ self.away_league_id = line_score.attributes["away_league_id"].value.to_i if line_score.attributes["away_league_id"]
60
+
61
+ # Set divisions
62
+ self.home_division = line_score.attributes["home_division"].value if line_score.attributes["home_division"]
63
+ self.away_division = line_score.attributes["away_division"].value if line_score.attributes["away_division"]
64
+
65
+ # Set sport codes
66
+ self.home_sport_code = line_score.attributes["home_sport_code"].value if line_score.attributes["home_sport_code"]
67
+ self.away_sport_code = line_score.attributes["away_sport_code"].value if line_score.attributes["away_sport_code"]
68
+ self.sport_code = self.home_sport_code
69
+
70
+ # Set teams
71
+ self.home_team_id = line_score.attributes["home_team_id"].value.to_i if line_score.attributes["home_team_id"]
72
+ self.away_team_id = line_score.attributes["away_team_id"].value.to_i if line_score.attributes["away_team_id"]
73
+
74
+ possible_duplicate = self.class.where(:id => self.game_pk, :game_status => ["F","FR"]).where("date <= '#{self.date}'").first
75
+
76
+ raise "Gotcha" if possible_duplicate
77
+
78
+ begin
79
+ puts "PD: #{possible_duplicate}"
80
+ puts "PD_id: #{self.game_id}"
81
+ rescue
82
+ puts "rescued"
83
+ end
84
+
85
+ return false if possible_duplicate and possible_duplicate.game_id != self.game_id
86
+
87
+ return self.save
88
+ end
89
+
90
+
91
+ def self.included(k)
92
+ def k.create_from_gameday_xml_game(gid, args = {})
93
+ line_score = Greenmonster::Parser.load_line_score(gid, args)
94
+
95
+ if line_score
96
+ game = self.find_or_initialize_by_id(line_score.attributes["game_pk"].value.to_i)
97
+
98
+ game.save!
99
+ return game
100
+ else
101
+ return false
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,11 @@
1
+ module Greenmonster
2
+ module MlbProbablePitcher
3
+
4
+ def self.included(k)
5
+ def k.create_from_gameday_xml(node)
6
+
7
+
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Greenmonster
2
+ module Player
3
+ def to_s
4
+ "#{self.first} #{self.last}"
5
+ end
6
+
7
+ def self.included(k)
8
+ def k.create_from_gameday_xml_game(gid, args = {})
9
+ Greenmonster::Parser.extract_players_from_game(gid, args = {}) do |p|
10
+ player = self.find_or_initialize_by_id(p[:id])
11
+ player.update_attributes!(p) if player.new_record?
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ module Greenmonster
2
+ module Parser
3
+ def self.load_line_score(gid, args = {})
4
+ Nokogiri::XML(File.open(game_path(gid, args) + 'linescore.xml')).search("game").first
5
+ rescue
6
+ false
7
+ end
8
+
9
+ def self.extract_players_from_game(gid, args = {})
10
+ Nokogiri::XML(open(game_path(gid,args) + 'players.xml')).search('player').each do |p|
11
+ hash = {:id => p.attribute('id').value.to_i, :first => p.attribute('first').value, :last => p.attribute('last').value}
12
+ yield hash
13
+ end
14
+ end
15
+
16
+ def self.game_path(gid,args)
17
+ game_path = Pathname.new(args[:games_folder] || Greenmonster.games_folder)
18
+ game_path += args[:sport_code] || gid[25,3]
19
+ game_path += Greenmonster.format_date_as_folder(date_from_game_id(gid))
20
+ game_path += gid
21
+ end
22
+
23
+ def self.date_from_game_id(gid)
24
+ Date.new(gid[4,4].to_i, gid[9,2].to_i, gid[12,2].to_i)
25
+ end
26
+ end
27
+ end
@@ -1,5 +1,5 @@
1
1
  # The Gameday XML Spider utility
2
- class Greenmonster::Spider
2
+ module Greenmonster::Spider
3
3
  include HTTParty
4
4
 
5
5
  ##
@@ -38,8 +38,9 @@ class Greenmonster::Spider
38
38
  copy_gameday_xml('linescore.xml',paths)
39
39
 
40
40
  if args[:date].year > 2007
41
- copy_gameday_xml('inning_all.xml',paths)
42
- copy_gameday_xml('inning_hit.xml',paths)
41
+ ['inning_all.xml', 'inning_hit.xml'].each do |file|
42
+ copy_gameday_xml(file,paths)
43
+ end
43
44
  else
44
45
  # Iterate through the inning files, but skip inning
45
46
  # files numbered 0 (some bad spring training data).
@@ -150,7 +151,7 @@ class Greenmonster::Spider
150
151
  # paths: (Hash)
151
152
 
152
153
  def self.copy_gameday_xml (file_name,paths)
153
- download = self.get(paths[:mlbGameFolder] + "#{file_name =~ /inning/ ? 'inning/' : ''}" + file_name).body
154
+ download = self.get(paths[:mlbGameFolder] + "#{file_name =~ /inning/ ? 'inning/' : ''}" + file_name).body.force_encoding("ISO-8859-1").encode("UTF-8")
154
155
  unless download.include?('404 Not Found')
155
156
  open(paths[:localGameFolder] + (file_name =~ /inning/ ? 'inning/' : '') + file_name, 'w') do |file|
156
157
  file.write(download)
@@ -169,6 +170,6 @@ class Greenmonster::Spider
169
170
  # date: (Date)
170
171
 
171
172
  def self.format_date_as_folder(date)
172
- date.strftime("year_%Y/month_%m/day_%d")
173
+ Greenmonster.format_date_as_folder(date)
173
174
  end
174
- end
175
+ end
@@ -1,3 +1,3 @@
1
1
  module Greenmonster
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/greenmonster.rb CHANGED
@@ -5,6 +5,8 @@ require 'httparty'
5
5
  require 'nokogiri'
6
6
  require 'pathname'
7
7
  require 'fileutils'
8
+ require 'active_record'
9
+ require 'date'
8
10
 
9
11
  module Greenmonster
10
12
  @@games_folder = nil
@@ -36,6 +38,50 @@ module Greenmonster
36
38
  def self.games_folder
37
39
  @@games_folder
38
40
  end
41
+
42
+ def self.format_date_as_folder(date)
43
+ date.strftime("year_%Y/month_%m/day_%d")
44
+ end
45
+
46
+ ##
47
+ # Walk the dates in a range of dates, and execute whatever
48
+ # methods on the date and argument set specified. Used when
49
+ # processing games and players.
50
+ #
51
+ #
52
+
53
+ def self.traverse_dates(range = (Date.today..Date.today), args = {})
54
+ range.each do |day|
55
+ yield day,args
56
+ end
57
+ end
58
+
59
+ ##
60
+ # Walk the game folders in a range of dates, and execute whatever
61
+ # methods on the game folder and argument set specified. Used when
62
+ # processing games and players.
63
+ #
64
+ #
65
+
66
+ def self.traverse_folders_for_date(day,args = {})
67
+ begin
68
+ folders = Dir.entries(Pathname.new(args[:games_folder] || @@games_folder) + (args[:sport_code] || 'mlb') + self.format_date_as_folder(day))
69
+ rescue StandardError => boom
70
+ puts "No files for #{day.to_s}."
71
+ end
72
+
73
+ unless folders.nil?
74
+ folders.sort.each do |gdir|
75
+ if gdir[0,3] == 'gid' and gdir[-4,4] != "_bak"
76
+ yield gdir, args
77
+ end
78
+ end
79
+ end
80
+ end
39
81
  end
40
82
 
41
83
  require 'greenmonster/spider'
84
+ require 'greenmonster/model_extensions/player'
85
+ require 'greenmonster/model_extensions/mlb_game'
86
+ require 'greenmonster/model_extensions/mlb_probable_pitcher'
87
+ require 'greenmonster/parser'