sports_data_api 0.11.3 → 0.11.5
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 +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
|