bb_analytics 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +53 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +60 -0
- data/README.md +43 -0
- data/README.rdoc +0 -0
- data/Rakefile +30 -0
- data/bb_analytics.gemspec +26 -0
- data/bb_analytics.rdoc +5 -0
- data/bin/bb_analytics +132 -0
- data/lib/bb_analytics/models/baseball_player.rb +45 -0
- data/lib/bb_analytics/models/data_store.rb +61 -0
- data/lib/bb_analytics/models/importer.rb +58 -0
- data/lib/bb_analytics/models/stats_for_year.rb +218 -0
- data/lib/bb_analytics/version.rb +3 -0
- data/lib/bb_analytics.rb +24 -0
- data/results.html +472 -0
- data/spec/models/baseball_player_spec.rb +44 -0
- data/spec/models/importer_spec.rb +117 -0
- data/spec/models/stats_for_year_spec.rb +258 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/Batting-07-12.csv +1 -0
- data/spec/support/Master-small.csv +1 -0
- metadata +171 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "BaseballPlayer" do
|
4
|
+
describe 'save' do
|
5
|
+
it 'should save a new record' do
|
6
|
+
@db.execute("select * from baseball_players where external_id = 'foo'").length.should == 0
|
7
|
+
|
8
|
+
player = BaseballPlayer.new()
|
9
|
+
player.external_id = "foo"
|
10
|
+
player.save
|
11
|
+
|
12
|
+
@db.execute("select * from baseball_players where external_id = 'foo'").length.should == 1
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should update an existing record' do
|
16
|
+
@db.execute("select * from baseball_players where external_id = 'foo'").length.should == 0
|
17
|
+
|
18
|
+
player = BaseballPlayer.new()
|
19
|
+
player.external_id = "foo"
|
20
|
+
player.first_name = "barney"
|
21
|
+
player.save
|
22
|
+
|
23
|
+
player2 = BaseballPlayer.new()
|
24
|
+
player2.external_id = "foo"
|
25
|
+
player2.last_name = "rubble"
|
26
|
+
player2.save
|
27
|
+
|
28
|
+
player2.reload.first_name.should == "barney"
|
29
|
+
player.reload.last_name.should == "rubble"
|
30
|
+
|
31
|
+
@db.execute("select * from baseball_players where external_id = 'foo'").length.should == 1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'find_by_external_id' do
|
36
|
+
it 'locates and loads the correct baseball player' do
|
37
|
+
player = BaseballPlayer.new()
|
38
|
+
player.external_id = "foo"
|
39
|
+
player.save
|
40
|
+
|
41
|
+
BaseballPlayer.find_by_external_id("foo").external_id.should == "foo"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Importer" do
|
4
|
+
|
5
|
+
describe 'new' do
|
6
|
+
before(:each) do
|
7
|
+
@baseball_master_list = {}
|
8
|
+
CSV.foreach(File.dirname(__FILE__) + '/../support/Master-small.csv', :headers => true, :header_converters => :symbol, :converters => :all) do |row|
|
9
|
+
@baseball_master_list[row.fields[0]] ||= []
|
10
|
+
@baseball_master_list[row.fields[0]] << Hash[row.headers[1..-1].zip(row.fields[1..-1])]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'loads a csv file' do
|
15
|
+
importer = Importer.new(File.dirname(__FILE__) + '/../support/Master-small.csv')
|
16
|
+
importer.csv.should == @baseball_master_list
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "parsing baseball players from master list" do
|
21
|
+
before(:each) do
|
22
|
+
@baseball_master_list = {}
|
23
|
+
CSV.foreach(File.dirname(__FILE__) + '/../support/Master-small.csv', :headers => true, :header_converters => :symbol, :converters => :all) do |row|
|
24
|
+
@baseball_master_list[row.fields[0]] ||= []
|
25
|
+
@baseball_master_list[row.fields[0]] << Hash[row.headers[1..-1].zip(row.fields[1..-1])]
|
26
|
+
end
|
27
|
+
|
28
|
+
@importer = Importer.new
|
29
|
+
@importer.csv = @baseball_master_list
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'parses master csv data into baseball players' do
|
33
|
+
baseball_players = @importer.save_baseball_players
|
34
|
+
@db.execute("select * from baseball_players").length.should == 18124
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "parsing baseball players from statistics list" do
|
40
|
+
before(:each) do
|
41
|
+
@statistics_list = {}
|
42
|
+
CSV.foreach(File.dirname(__FILE__) + '/../support/Batting-07-12.csv', :headers => true, :header_converters => :symbol, :converters => :all) do |row|
|
43
|
+
@statistics_list[row.fields[0]] ||= []
|
44
|
+
@statistics_list[row.fields[0]] << Hash[row.headers[1..-1].zip(row.fields[1..-1])]
|
45
|
+
end
|
46
|
+
|
47
|
+
@importer = Importer.new
|
48
|
+
@importer.csv = @statistics_list
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'parses statistics csv data into baseball players' do
|
52
|
+
baseball_players = @importer.save_baseball_players
|
53
|
+
|
54
|
+
@db.execute("select * from baseball_players").length.should == 2447
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "parsing statistics from players list" do
|
59
|
+
before(:each) do
|
60
|
+
@baseball_master_list = {}
|
61
|
+
CSV.foreach(File.dirname(__FILE__) + '/../support/Master-small.csv', :headers => true, :header_converters => :symbol, :converters => :all) do |row|
|
62
|
+
@baseball_master_list[row.fields[0]] ||= []
|
63
|
+
@baseball_master_list[row.fields[0]] << Hash[row.headers[1..-1].zip(row.fields[1..-1])]
|
64
|
+
end
|
65
|
+
|
66
|
+
@importer = Importer.new
|
67
|
+
@importer.csv = @baseball_master_list
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'has no side effects' do
|
71
|
+
@importer.save_stats_for_year
|
72
|
+
@db.execute("select * from stats_for_years").length.should == 0
|
73
|
+
@db.execute("select * from baseball_players").length.should == 0
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "parsing statistics from statistics list" do
|
78
|
+
before(:each) do
|
79
|
+
@statistics_list = {}
|
80
|
+
CSV.foreach(File.dirname(__FILE__) + '/../support/Batting-07-12.csv', :headers => true, :header_converters => :symbol, :converters => :all) do |row|
|
81
|
+
@statistics_list[row.fields[0]] ||= []
|
82
|
+
@statistics_list[row.fields[0]] << Hash[row.headers[1..-1].zip(row.fields[1..-1])]
|
83
|
+
end
|
84
|
+
@importer = Importer.new
|
85
|
+
@importer.csv = @statistics_list
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'parses statistics csv data into stats for years' do
|
89
|
+
@importer.save_stats_for_year
|
90
|
+
@db.execute("select * from stats_for_years").length.should == 7908
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'calculates batting average' do
|
94
|
+
@importer.save_stats_for_year
|
95
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]).length.should == 1
|
96
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]) do |row|
|
97
|
+
row[13].should == 309
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'calculates slugging percentage' do
|
102
|
+
@importer.save_stats_for_year
|
103
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]).length.should == 1
|
104
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]) do |row|
|
105
|
+
row[14].should == 509
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'calculates fantasy points' do
|
110
|
+
@importer.save_stats_for_year
|
111
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]).length.should == 1
|
112
|
+
@db.execute("select * from stats_for_years where player_external_id = ? and year = ? and team = ?", ["abercre01", 2008, "HOU"]) do |row|
|
113
|
+
row[15].should == 16
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,258 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "StatsForYear" do
|
4
|
+
describe 'save' do
|
5
|
+
it 'should save a new record' do
|
6
|
+
@db.execute("select * from stats_for_years where player_external_id = 'foo'").length.should == 0
|
7
|
+
|
8
|
+
stats = StatsForYear.new()
|
9
|
+
stats.player_external_id = "foo"
|
10
|
+
stats.save
|
11
|
+
|
12
|
+
@db.execute("select * from stats_for_years where player_external_id = 'foo'").length.should == 1
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should update an existing record' do
|
16
|
+
@db.execute("select * from stats_for_years where player_external_id = 'foo'").length.should == 0
|
17
|
+
|
18
|
+
stats = StatsForYear.new()
|
19
|
+
stats.player_external_id = "foo"
|
20
|
+
stats.year = 12
|
21
|
+
stats.team = "OAK"
|
22
|
+
stats.at_bats = 20
|
23
|
+
stats.batting_average = 400
|
24
|
+
stats.save
|
25
|
+
|
26
|
+
stats2 = StatsForYear.new()
|
27
|
+
stats2.player_external_id = "foo"
|
28
|
+
stats2.year = 12
|
29
|
+
stats2.team = "OAK"
|
30
|
+
stats2.games = 30
|
31
|
+
stats2.slugging_percentage = 500
|
32
|
+
stats2.save
|
33
|
+
|
34
|
+
stats2.reload.at_bats.should == 20
|
35
|
+
stats2.reload.batting_average.should == 400
|
36
|
+
stats.reload.slugging_percentage.should == 500
|
37
|
+
stats.reload.games.should == 30
|
38
|
+
|
39
|
+
@db.execute("select * from stats_for_years where player_external_id = 'foo'").length.should == 1
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'find_highest_rbi' do
|
44
|
+
it 'should find the record with the highet rbi for a given year' do
|
45
|
+
stats = StatsForYear.new()
|
46
|
+
stats.player_external_id = "foo"
|
47
|
+
stats.year = 12
|
48
|
+
stats.team = "OAK"
|
49
|
+
stats.at_bats = 20
|
50
|
+
stats.runs_batted_in = 400
|
51
|
+
stats.save
|
52
|
+
|
53
|
+
stats2 = StatsForYear.new()
|
54
|
+
stats2.player_external_id = "bar"
|
55
|
+
stats2.year = 12
|
56
|
+
stats2.team = "OAK"
|
57
|
+
stats2.games = 30
|
58
|
+
stats2.at_bats = 200
|
59
|
+
stats2.runs_batted_in = 500
|
60
|
+
stats2.save
|
61
|
+
|
62
|
+
stats3 = StatsForYear.new()
|
63
|
+
stats3.player_external_id = "zoo"
|
64
|
+
stats3.year = 12
|
65
|
+
stats3.team = "OAK"
|
66
|
+
stats3.games = 30
|
67
|
+
stats3.at_bats = 1
|
68
|
+
stats3.runs_batted_in = 5000
|
69
|
+
stats3.save
|
70
|
+
|
71
|
+
StatsForYear.find_highest_rbi(12, 2).first.player_external_id.should == stats2.reload.player_external_id
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'find_highest_home_runs' do
|
76
|
+
it 'should find the record with the highet home runs for a given year' do
|
77
|
+
stats = StatsForYear.new()
|
78
|
+
stats.player_external_id = "foo"
|
79
|
+
stats.year = 12
|
80
|
+
stats.team = "OAK"
|
81
|
+
stats.at_bats = 20
|
82
|
+
stats.home_runs = 400
|
83
|
+
stats.save
|
84
|
+
|
85
|
+
stats2 = StatsForYear.new()
|
86
|
+
stats2.player_external_id = "bar"
|
87
|
+
stats2.year = 12
|
88
|
+
stats2.team = "OAK"
|
89
|
+
stats2.games = 30
|
90
|
+
stats2.at_bats = 200
|
91
|
+
stats2.home_runs = 500
|
92
|
+
stats2.save
|
93
|
+
|
94
|
+
stats3 = StatsForYear.new()
|
95
|
+
stats3.player_external_id = "zoo"
|
96
|
+
stats3.year = 12
|
97
|
+
stats3.team = "OAK"
|
98
|
+
stats3.games = 30
|
99
|
+
stats3.at_bats = 1
|
100
|
+
stats3.home_runs = 5000
|
101
|
+
stats3.save
|
102
|
+
|
103
|
+
StatsForYear.find_highest_home_runs(12, 2).first.player_external_id.should == stats2.reload.player_external_id
|
104
|
+
StatsForYear.find_highest_home_runs(12, 2).length.should == 1
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe 'find_highest_batting_average' do
|
109
|
+
it 'should find the record with the highet home runs for a given year' do
|
110
|
+
stats = StatsForYear.new()
|
111
|
+
stats.player_external_id = "foo"
|
112
|
+
stats.year = 12
|
113
|
+
stats.team = "OAK"
|
114
|
+
stats.at_bats = 20
|
115
|
+
stats.batting_average = 400
|
116
|
+
stats.save
|
117
|
+
|
118
|
+
stats2 = StatsForYear.new()
|
119
|
+
stats2.player_external_id = "bar"
|
120
|
+
stats2.year = 12
|
121
|
+
stats2.team = "OAK"
|
122
|
+
stats2.games = 30
|
123
|
+
stats2.at_bats = 200
|
124
|
+
stats2.batting_average = 500
|
125
|
+
stats2.save
|
126
|
+
|
127
|
+
stats3 = StatsForYear.new()
|
128
|
+
stats3.player_external_id = "zoo"
|
129
|
+
stats3.year = 12
|
130
|
+
stats3.team = "OAK"
|
131
|
+
stats3.games = 30
|
132
|
+
stats3.at_bats = 1
|
133
|
+
stats3.batting_average = 5000
|
134
|
+
stats3.save
|
135
|
+
|
136
|
+
StatsForYear.find_highest_batting_average(12, 2).first.player_external_id.should == stats2.reload.player_external_id
|
137
|
+
StatsForYear.find_highest_batting_average(12, 2).length.should == 1
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe 'find_triple_crown_winner' do
|
142
|
+
it 'find the winner' do
|
143
|
+
stats = StatsForYear.new()
|
144
|
+
stats.player_external_id = "foo"
|
145
|
+
stats.year = 12
|
146
|
+
stats.team = "OAK"
|
147
|
+
stats.at_bats = 20
|
148
|
+
stats.batting_average = 500
|
149
|
+
stats.home_runs = 1
|
150
|
+
stats.runs_batted_in = 5
|
151
|
+
stats.save
|
152
|
+
|
153
|
+
stats2 = StatsForYear.new()
|
154
|
+
stats2.player_external_id = "bar"
|
155
|
+
stats2.year = 12
|
156
|
+
stats2.team = "OAK"
|
157
|
+
stats2.games = 30
|
158
|
+
stats2.at_bats = 200
|
159
|
+
stats2.batting_average = 500
|
160
|
+
stats2.home_runs = 100
|
161
|
+
stats2.runs_batted_in = 500
|
162
|
+
stats2.save
|
163
|
+
|
164
|
+
stats3 = StatsForYear.new()
|
165
|
+
stats3.player_external_id = "zoo"
|
166
|
+
stats3.year = 12
|
167
|
+
stats3.team = "OAK"
|
168
|
+
stats3.games = 30
|
169
|
+
stats3.at_bats = 1
|
170
|
+
stats3.batting_average = 5000
|
171
|
+
stats.home_runs = 1000
|
172
|
+
stats.runs_batted_in = 50
|
173
|
+
stats3.save
|
174
|
+
|
175
|
+
StatsForYear.find_triple_crown_winner(12, 2).player_external_id.should == stats2.reload.player_external_id
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe 'baseball_player' do
|
180
|
+
it 'loads the associated baseball player' do
|
181
|
+
stats = StatsForYear.new()
|
182
|
+
stats.player_external_id = "foo"
|
183
|
+
stats.save
|
184
|
+
|
185
|
+
player = BaseballPlayer.new()
|
186
|
+
player.external_id = "foo"
|
187
|
+
player.save
|
188
|
+
|
189
|
+
stats.reload.baseball_player.external_id.should == "foo"
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
describe 'most_improved_batting_average' do
|
194
|
+
before(:each) do
|
195
|
+
stats = StatsForYear.new()
|
196
|
+
stats.player_external_id = "foo"
|
197
|
+
stats.batting_average = 500
|
198
|
+
stats.year = 2010
|
199
|
+
stats.save
|
200
|
+
|
201
|
+
stats2 = StatsForYear.new()
|
202
|
+
stats2.player_external_id = "foo"
|
203
|
+
stats2.batting_average = 600
|
204
|
+
stats2.year = 2011
|
205
|
+
stats2.save
|
206
|
+
|
207
|
+
stats3 = StatsForYear.new()
|
208
|
+
stats3.player_external_id = "bar"
|
209
|
+
stats3.batting_average = 500
|
210
|
+
stats3.year = 2010
|
211
|
+
stats3.save
|
212
|
+
|
213
|
+
stats4 = StatsForYear.new()
|
214
|
+
stats4.player_external_id = "bar"
|
215
|
+
stats4.batting_average = 599
|
216
|
+
stats4.year = 2011
|
217
|
+
stats4.save
|
218
|
+
end
|
219
|
+
|
220
|
+
it 'return the external id of the most improved player' do
|
221
|
+
StatsForYear.most_improved_batting_average(2010, 2011).should == ["foo"]
|
222
|
+
end
|
223
|
+
|
224
|
+
end
|
225
|
+
|
226
|
+
describe 'most_improved_fantasy points' do
|
227
|
+
before(:each) do
|
228
|
+
stats = StatsForYear.new()
|
229
|
+
stats.player_external_id = "foo"
|
230
|
+
stats.fantasy_points = 500
|
231
|
+
stats.year = 2010
|
232
|
+
stats.save
|
233
|
+
|
234
|
+
stats2 = StatsForYear.new()
|
235
|
+
stats2.player_external_id = "foo"
|
236
|
+
stats2.fantasy_points = 600
|
237
|
+
stats2.year = 2011
|
238
|
+
stats2.save
|
239
|
+
|
240
|
+
stats3 = StatsForYear.new()
|
241
|
+
stats3.player_external_id = "bar"
|
242
|
+
stats3.fantasy_points = 500
|
243
|
+
stats3.year = 2010
|
244
|
+
stats3.save
|
245
|
+
|
246
|
+
stats4 = StatsForYear.new()
|
247
|
+
stats4.player_external_id = "bar"
|
248
|
+
stats4.fantasy_points = 599
|
249
|
+
stats4.year = 2011
|
250
|
+
stats4.save
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'return the external id of the most improved player' do
|
254
|
+
StatsForYear.most_improved_fantasy_points(2010, 2011).should == ["foo"]
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
|
3
|
+
module SimpleCov::Configuration
|
4
|
+
def clean_filters
|
5
|
+
@filters = []
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
SimpleCov.configure do
|
10
|
+
clean_filters
|
11
|
+
load_adapter 'test_frameworks'
|
12
|
+
end
|
13
|
+
|
14
|
+
ENV["COVERAGE"] && SimpleCov.start do
|
15
|
+
add_filter "/.rvm/"
|
16
|
+
end
|
17
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
18
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
19
|
+
|
20
|
+
require 'rspec'
|
21
|
+
require 'bb_analytics'
|
22
|
+
require 'csv'
|
23
|
+
|
24
|
+
# Requires supporting files with custom matchers and macros, etc,
|
25
|
+
# in ./support/ and its subdirectories.
|
26
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
27
|
+
|
28
|
+
RSpec.configure do |config|
|
29
|
+
|
30
|
+
config.before(:each) do
|
31
|
+
@db = SQLite3::Database.new File.dirname(__FILE__) + '/support/bba.db'
|
32
|
+
DataStore.instance.db = @db
|
33
|
+
end
|
34
|
+
|
35
|
+
config.after(:each) do
|
36
|
+
File.delete("#{File.dirname(__FILE__)}/support/bba.db") rescue nil
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
playerID,yearID,teamID,G,AB,R,H,2B,3B,HR,RBI,SB,CS
|
@@ -0,0 +1 @@
|
|
1
|
+
playerID,birthYear,nameFirst,nameLast
|
metadata
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bb_analytics
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin Beddingfield
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aruba
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: gli
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 2.9.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 2.9.0
|
111
|
+
description: a simple baseball analytics tool
|
112
|
+
email: kevin.beddingfield@gmail.com
|
113
|
+
executables:
|
114
|
+
- bb_analytics
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files:
|
117
|
+
- README.rdoc
|
118
|
+
- bb_analytics.rdoc
|
119
|
+
files:
|
120
|
+
- .gitignore
|
121
|
+
- Gemfile
|
122
|
+
- Gemfile.lock
|
123
|
+
- README.md
|
124
|
+
- README.rdoc
|
125
|
+
- Rakefile
|
126
|
+
- bb_analytics.gemspec
|
127
|
+
- bb_analytics.rdoc
|
128
|
+
- bin/bb_analytics
|
129
|
+
- lib/bb_analytics.rb
|
130
|
+
- lib/bb_analytics/models/baseball_player.rb
|
131
|
+
- lib/bb_analytics/models/data_store.rb
|
132
|
+
- lib/bb_analytics/models/importer.rb
|
133
|
+
- lib/bb_analytics/models/stats_for_year.rb
|
134
|
+
- lib/bb_analytics/version.rb
|
135
|
+
- results.html
|
136
|
+
- spec/models/baseball_player_spec.rb
|
137
|
+
- spec/models/importer_spec.rb
|
138
|
+
- spec/models/stats_for_year_spec.rb
|
139
|
+
- spec/spec_helper.rb
|
140
|
+
- spec/support/Batting-07-12.csv
|
141
|
+
- spec/support/Master-small.csv
|
142
|
+
homepage: http://mambasystems.net
|
143
|
+
licenses: []
|
144
|
+
metadata: {}
|
145
|
+
post_install_message:
|
146
|
+
rdoc_options:
|
147
|
+
- --title
|
148
|
+
- bb_analytics
|
149
|
+
- --main
|
150
|
+
- README.rdoc
|
151
|
+
- -ri
|
152
|
+
require_paths:
|
153
|
+
- lib
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
requirements: []
|
166
|
+
rubyforge_project:
|
167
|
+
rubygems_version: 2.2.2
|
168
|
+
signing_key:
|
169
|
+
specification_version: 4
|
170
|
+
summary: A simple baseball analytics tool
|
171
|
+
test_files: []
|