sports_data_api 0.11.3 → 0.11.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sports_data_api/mlb.rb +1 -0
- data/lib/sports_data_api/mlb/scoring.rb +27 -0
- data/lib/sports_data_api/mlb/team.rb +8 -4
- data/lib/sports_data_api/version.rb +1 -1
- data/spec/lib/sports_data_api/mlb/scoring_spec.rb +62 -0
- data/spec/lib/sports_data_api/mlb/team_spec.rb +2 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1573bfabde4846e7900508165cdf0ab809c9bd1b
|
4
|
+
data.tar.gz: 463c8b2301292be250d5534c231812c061da9413
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10fe3f991743a639118a3c2cccc2b1ccd1c8df486b7bf7bb554f46d70616bb1341e7a1b6cc83b97dbe9c2bbae82af366754b84a8c91f65da5b095c9b2ec07d22
|
7
|
+
data.tar.gz: 8b2836362ed1e771a44365d4e5e18aebce07ba08316431176b0fc4947b595a6d55149e58db23508494e44a2bff2f621606aecb6b1614ba4c5e2195f4a72ac3e4
|
data/lib/sports_data_api/mlb.rb
CHANGED
@@ -15,6 +15,7 @@ module SportsDataApi
|
|
15
15
|
autoload :League, File.join(DIR, 'league')
|
16
16
|
autoload :MergedStats, File.join(DIR, 'merged_stats')
|
17
17
|
autoload :Player, File.join(DIR, 'player')
|
18
|
+
autoload :Scoring, File.join(DIR, 'scoring')
|
18
19
|
autoload :Statistics, File.join(DIR, 'statistics')
|
19
20
|
autoload :Team, File.join(DIR, 'team')
|
20
21
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module SportsDataApi
|
2
|
+
module Mlb
|
3
|
+
class Scoring
|
4
|
+
attr_reader :scoring
|
5
|
+
|
6
|
+
def initialize(scoring)
|
7
|
+
@scoring = scoring
|
8
|
+
end
|
9
|
+
|
10
|
+
def inning
|
11
|
+
@inning ||= last_inning ? last_inning['number'] : nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def inning_half
|
15
|
+
return unless last_inning
|
16
|
+
|
17
|
+
@inning_half ||= last_inning['runs'] == 'X' ? 'top' : 'bot'
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def last_inning
|
23
|
+
@last_inning ||= (scoring || []).sort_by { |i| i['number'] }.last
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -14,11 +14,15 @@ module SportsDataApi
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def starting_pitcher
|
17
|
-
@starting_pitcher ||=
|
17
|
+
@starting_pitcher ||= populate_model :starting_pitcher, Player
|
18
18
|
end
|
19
19
|
|
20
20
|
def probable_pitcher
|
21
|
-
@probable_pitcher ||=
|
21
|
+
@probable_pitcher ||= populate_model :probable_pitcher, Player
|
22
|
+
end
|
23
|
+
|
24
|
+
def scoring
|
25
|
+
@scoring ||= populate_model :scoring, Scoring
|
22
26
|
end
|
23
27
|
|
24
28
|
private
|
@@ -29,8 +33,8 @@ module SportsDataApi
|
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
32
|
-
def
|
33
|
-
|
36
|
+
def populate_model(key, klass)
|
37
|
+
klass.new(team[key]) if team.has_key?(key)
|
34
38
|
end
|
35
39
|
end
|
36
40
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SportsDataApi::Mlb::Scoring do
|
4
|
+
context 'when no scoring array' do
|
5
|
+
subject { SportsDataApi::Mlb::Scoring.new(nil) }
|
6
|
+
|
7
|
+
its(:inning) { should be_nil }
|
8
|
+
its(:inning_half) { should be_nil }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'when empty scoring' do
|
12
|
+
subject { SportsDataApi::Mlb::Scoring.new([]) }
|
13
|
+
|
14
|
+
its(:inning) { should be_nil }
|
15
|
+
its(:inning_half) { should be_nil }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when 9 innings and scores' do
|
19
|
+
it 'returns the innings and no half inning' do
|
20
|
+
data = (1..9).to_a.each_with_object([]) do |num, arr|
|
21
|
+
arr.push({
|
22
|
+
'number' => num, 'sequence' => num,
|
23
|
+
'runs' => 0, 'type' => 'inning'
|
24
|
+
})
|
25
|
+
end
|
26
|
+
subject = SportsDataApi::Mlb::Scoring.new(data)
|
27
|
+
|
28
|
+
expect(subject.inning).to eq 9
|
29
|
+
expect(subject.inning_half).to eq 'bot'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when top 7 innings and scores' do
|
34
|
+
it 'returns the innings and no half inning' do
|
35
|
+
data = (1..7).to_a.each_with_object([]) do |num, arr|
|
36
|
+
arr.push({
|
37
|
+
'number' => num, 'sequence' => num,
|
38
|
+
'runs' => (num == 7 ? 'X' : 0), 'type' => 'inning'
|
39
|
+
})
|
40
|
+
end
|
41
|
+
subject = SportsDataApi::Mlb::Scoring.new(data)
|
42
|
+
|
43
|
+
expect(subject.inning).to eq 7
|
44
|
+
expect(subject.inning_half).to eq 'top'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when bottom 6 innings and scores' do
|
49
|
+
it 'returns the innings and no half inning' do
|
50
|
+
data = (1..6).to_a.each_with_object([]) do |num, arr|
|
51
|
+
arr.push({
|
52
|
+
'number' => num, 'sequence' => num,
|
53
|
+
'runs' => 0, 'type' => 'inning'
|
54
|
+
})
|
55
|
+
end
|
56
|
+
subject = SportsDataApi::Mlb::Scoring.new(data)
|
57
|
+
|
58
|
+
expect(subject.inning).to eq 6
|
59
|
+
expect(subject.inning_half).to eq 'bot'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -17,6 +17,7 @@ describe SportsDataApi::Mlb::Team, vcr: {
|
|
17
17
|
its(:starting_pitcher) { should be_nil }
|
18
18
|
its(:probable_pitcher) { should be_nil }
|
19
19
|
its(:expected_players) { should be_empty }
|
20
|
+
its(:scoring) { should be_nil }
|
20
21
|
|
21
22
|
it 'sets the id' do
|
22
23
|
expect(subject[:id]).to eq '575c19b7-4052-41c2-9f0a-1c5813d02f99'
|
@@ -39,6 +40,7 @@ describe SportsDataApi::Mlb::Team, vcr: {
|
|
39
40
|
end
|
40
41
|
|
41
42
|
it { should be_an_instance_of(SportsDataApi::Mlb::Team) }
|
43
|
+
its(:scoring) { should be_instance_of(SportsDataApi::Mlb::Scoring) }
|
42
44
|
|
43
45
|
its(:expected_players) { should be_empty }
|
44
46
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sports_data_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Lovelett
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-03-
|
12
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -298,6 +298,7 @@ files:
|
|
298
298
|
- lib/sports_data_api/mlb/league.rb
|
299
299
|
- lib/sports_data_api/mlb/merged_stats.rb
|
300
300
|
- lib/sports_data_api/mlb/player.rb
|
301
|
+
- lib/sports_data_api/mlb/scoring.rb
|
301
302
|
- lib/sports_data_api/mlb/statistics.rb
|
302
303
|
- lib/sports_data_api/mlb/team.rb
|
303
304
|
- lib/sports_data_api/nba.rb
|
@@ -472,6 +473,7 @@ files:
|
|
472
473
|
- spec/lib/sports_data_api/mlb/league_spec.rb
|
473
474
|
- spec/lib/sports_data_api/mlb/merged_stats_spec.rb
|
474
475
|
- spec/lib/sports_data_api/mlb/player_spec.rb
|
476
|
+
- spec/lib/sports_data_api/mlb/scoring_spec.rb
|
475
477
|
- spec/lib/sports_data_api/mlb/season_schedule_spec.rb
|
476
478
|
- spec/lib/sports_data_api/mlb/statistics_spec.rb
|
477
479
|
- spec/lib/sports_data_api/mlb/team_spec.rb
|
@@ -653,6 +655,7 @@ test_files:
|
|
653
655
|
- spec/lib/sports_data_api/mlb/league_spec.rb
|
654
656
|
- spec/lib/sports_data_api/mlb/merged_stats_spec.rb
|
655
657
|
- spec/lib/sports_data_api/mlb/player_spec.rb
|
658
|
+
- spec/lib/sports_data_api/mlb/scoring_spec.rb
|
656
659
|
- spec/lib/sports_data_api/mlb/season_schedule_spec.rb
|
657
660
|
- spec/lib/sports_data_api/mlb/statistics_spec.rb
|
658
661
|
- spec/lib/sports_data_api/mlb/team_spec.rb
|