baseball 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/baseball.rb +17 -0
- data/lib/baseball/batting.rb +17 -5
- data/lib/baseball/fielding.rb +0 -1
- data/lib/baseball/pitching.rb +13 -3
- data/lib/baseball/player.rb +19 -0
- data/lib/baseball/running.rb +5 -0
- data/lib/baseball/version.rb +1 -1
- metadata +2 -3
- data/lib/baseball/helper.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89ba7861f9a4ff6ab8eb9e593ce96fd98d6ad93ff6fecf95d18ef755bfeeac51
|
4
|
+
data.tar.gz: e397f50bca09a4954b1eca3b7111dd5d0445712d37608633a92240e80f3b7cc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebaaad7c2bf243d2fb2a0fed2cceb220ce6f89ca778b0c2d49b481f979c8ffbc2d429005cbfba187eb16fd4fcb14a923ad6d205667af62c6d1d1a5e49a546f85
|
7
|
+
data.tar.gz: aafd95eee82921c51f340a03191b74b19e7441c0d8c71d3564ffe5365fc5020b0cf8e96fd48e3a7f891ecdf33d59d31ae7ea543afd3514736f75015cc2769aa8
|
data/README.md
CHANGED
@@ -73,6 +73,9 @@ Baseball.ops(your_player_hash)
|
|
73
73
|
|
74
74
|
All values are returned as a string
|
75
75
|
|
76
|
+
Libary includes pitching, fielding, running, and batting stats. See tests for full hash key-values needed.
|
77
|
+
(More detailed documentation will be added shortly)
|
78
|
+
|
76
79
|
## Development
|
77
80
|
|
78
81
|
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/baseball.rb
CHANGED
@@ -11,6 +11,7 @@ module Baseball
|
|
11
11
|
#batter stats
|
12
12
|
#pitcher stats
|
13
13
|
# fielder stats
|
14
|
+
# runner stats
|
14
15
|
|
15
16
|
def self.version_number
|
16
17
|
Baseball::VERSION
|
@@ -43,6 +44,7 @@ module Baseball
|
|
43
44
|
end
|
44
45
|
|
45
46
|
#pitcher stats
|
47
|
+
|
46
48
|
def self.era(pitcher_hash)
|
47
49
|
include Pitching
|
48
50
|
pitcher = Pitcher.new(pitcher_hash)
|
@@ -55,17 +57,32 @@ module Baseball
|
|
55
57
|
pitcher.whip
|
56
58
|
end
|
57
59
|
|
60
|
+
def self.k_per_nine(pitcher_hash)
|
61
|
+
include Pitching
|
62
|
+
pitcher = Pitcher.new(pitcher_hash)
|
63
|
+
pitcher.k_per_nine
|
64
|
+
end
|
65
|
+
|
58
66
|
#fielder stats
|
67
|
+
|
59
68
|
def self.fielding_percentage(fielder_hash)
|
60
69
|
include Fielding
|
61
70
|
fielder = Fielder.new(fielder_hash)
|
62
71
|
fielder.fielding_percentage
|
63
72
|
end
|
64
73
|
|
74
|
+
# runner stats
|
75
|
+
|
65
76
|
def self.stolen_base_percentage(runner_hash)
|
66
77
|
include Running
|
67
78
|
runner = Runner.new(runner_hash)
|
68
79
|
runner.stolen_base_percentage
|
69
80
|
end
|
70
81
|
|
82
|
+
def self.stolen_base_runs(runner_hash)
|
83
|
+
include Running
|
84
|
+
runner = Runner.new(runner_hash)
|
85
|
+
runner.stolen_base_runs
|
86
|
+
end
|
87
|
+
|
71
88
|
end
|
data/lib/baseball/batting.rb
CHANGED
@@ -21,10 +21,7 @@ module Batting
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def slugging_percentage
|
24
|
-
|
25
|
-
player_triples = @player[:triples] * 3
|
26
|
-
player_hr = @player[:hr] * 4
|
27
|
-
total_bases = @player[:singles] + player_doubles + player_triples + player_hr
|
24
|
+
total_bases = @player[:singles] + (@player[:doubles] * 2) + (@player[:triples] * 3) + @player[:hr] * 4
|
28
25
|
slg = total_bases.to_f / @player[:at_bats].to_f
|
29
26
|
slg = slg.round(3)
|
30
27
|
slg_string = slg.to_s.sub!("0", "")
|
@@ -34,7 +31,22 @@ module Batting
|
|
34
31
|
def ops
|
35
32
|
player_ops = self.obp.to_f + self.slugging_percentage.to_f
|
36
33
|
player_ops_string = player_ops.round(3)
|
37
|
-
player_ops_string.to_s
|
34
|
+
player_ops_string = player_ops_string.to_s
|
35
|
+
if player_ops_string[0] === "0"
|
36
|
+
player_ops_string.to_s.sub!("0", "")
|
37
|
+
else
|
38
|
+
return player_ops_string
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def base_runs
|
43
|
+
# a = hits + walks - hr
|
44
|
+
# b = (1.4 * totalbases - .6 * hits - 3 * HR + .1 * BB) * 1.02
|
45
|
+
# c = AB - Hits
|
46
|
+
# D = HR
|
47
|
+
|
48
|
+
# x = (A * B) / (B + C)
|
49
|
+
# x + D
|
38
50
|
end
|
39
51
|
|
40
52
|
end
|
data/lib/baseball/fielding.rb
CHANGED
@@ -9,7 +9,6 @@ module Fielding
|
|
9
9
|
plays_plus_errors = plays + @player[:errors]
|
10
10
|
player_avg = plays.to_f / plays_plus_errors.to_f
|
11
11
|
avg = player_avg.round(3)
|
12
|
-
# code smell - make this a several function called somewhere since this is used over multiple stats
|
13
12
|
fielding_percentage = avg.to_s.sub!("0", "")
|
14
13
|
figure_trailing_zeroes(fielding_percentage)
|
15
14
|
end
|
data/lib/baseball/pitching.rb
CHANGED
@@ -8,14 +8,24 @@ module Pitching
|
|
8
8
|
earned_runs = @player[:er] * 9
|
9
9
|
avg = earned_runs / @player[:ip].to_f
|
10
10
|
earned_run_average = avg.round(2)
|
11
|
+
earned_run_average.to_s
|
11
12
|
end
|
12
13
|
|
13
14
|
def whip
|
15
|
+
corrected_innings = third_inning_handler(@player[:ip]).to_f
|
14
16
|
walks_plus_hits = @player[:walks] + @player[:hits]
|
15
|
-
|
16
|
-
|
17
|
+
figured_whip = walks_plus_hits / corrected_innings
|
18
|
+
figured_whip = figured_whip.round(3)
|
19
|
+
figured_whip.to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def k_per_nine
|
23
|
+
full_games = @player[:ip] / 9
|
24
|
+
so9 = @player[:so] / full_games.to_f
|
25
|
+
so9_final = so9.round(1)
|
26
|
+
so9_final.to_s
|
17
27
|
end
|
18
|
-
end
|
19
28
|
|
29
|
+
end
|
20
30
|
|
21
31
|
end
|
data/lib/baseball/player.rb
CHANGED
@@ -8,6 +8,7 @@ module Player
|
|
8
8
|
|
9
9
|
def figure_trailing_zeroes(arg)
|
10
10
|
revised_number = arg
|
11
|
+
|
11
12
|
if revised_number.length === 3
|
12
13
|
revised_number = "#{revised_number}0"
|
13
14
|
elsif revised_number.length === 2
|
@@ -17,6 +18,24 @@ module Player
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
def third_inning_handler(innings)
|
22
|
+
innings_string = innings.to_s
|
23
|
+
final_fig = innings_string[0..(innings_string.length - 2)]
|
24
|
+
final_num = innings_string[(innings_string.length - 2)..innings_string.length].to_f
|
25
|
+
|
26
|
+
if final_num == 0.1
|
27
|
+
returnable_innings = final_fig.to_f
|
28
|
+
returnable_innings += 0.33
|
29
|
+
returnable_innings.to_s
|
30
|
+
elsif final_num == 0.2
|
31
|
+
returnable_innings = final_fig.to_f
|
32
|
+
returnable_innings += 0.66
|
33
|
+
returnable_innings.to_s
|
34
|
+
else
|
35
|
+
return innings
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
20
39
|
end
|
21
40
|
|
22
41
|
end
|
data/lib/baseball/running.rb
CHANGED
@@ -12,6 +12,11 @@ module Running
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def stolen_base_runs
|
15
|
+
stolen_base_adjustment = @player[:stolen_bases].to_f * 0.3
|
16
|
+
caught_stealing_adjustment = @player[:caught_stealing].to_f * 0.6
|
17
|
+
adjusted_stolen_base_runs = stolen_base_adjustment - caught_stealing_adjustment
|
18
|
+
base_runs = adjusted_stolen_base_runs.round(3)
|
19
|
+
return base_runs.to_s
|
15
20
|
#Created by Total baseball
|
16
21
|
# (.3 x stolen bases) - (.6 x caught stealing)
|
17
22
|
end
|
data/lib/baseball/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baseball
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brent Busby
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -57,7 +57,6 @@ files:
|
|
57
57
|
- lib/baseball.rb
|
58
58
|
- lib/baseball/batting.rb
|
59
59
|
- lib/baseball/fielding.rb
|
60
|
-
- lib/baseball/helper.rb
|
61
60
|
- lib/baseball/pitching.rb
|
62
61
|
- lib/baseball/player.rb
|
63
62
|
- lib/baseball/running.rb
|
data/lib/baseball/helper.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
module Helper
|
2
|
-
|
3
|
-
def figure_trailing_zeroes(arg)
|
4
|
-
revised_number = arg
|
5
|
-
if revised_number.length === 3
|
6
|
-
revised_number = "#{revised_number}0"
|
7
|
-
elsif revised_number.length === 2
|
8
|
-
revised_number = "#{revised_number}00"
|
9
|
-
else
|
10
|
-
return revised_number
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|