ahl_scraper 0.3.5 → 0.3.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3e4430a39581a934ebf5d3513e007736adb1b24b384468fe21a2db916ec44c8
4
- data.tar.gz: 2a8ed5d74db57a07651f18e456c6f275d41801512f5c5a632e0630030af62d4f
3
+ metadata.gz: 19ac0b14d0b335af57c72d9a95ddbe1ed7c674990f56a52962e01ecd6112d4f5
4
+ data.tar.gz: 27eb465a69a64ee0c5171edbed58bea880901c5b9953dc91f6aacd75d01141b5
5
5
  SHA512:
6
- metadata.gz: b02c8b0d834ea69ceaad08077e2d84a7fbe75ad327987a77ccce96500ae4f4b8f6a7ec9215e89e1221788ba0c0441c23200febb526cfd9bc6297ea7b71b5b9da
7
- data.tar.gz: a773e783e8df81e10e2ce323cc3d53ca6e94a0f11fe1bc8d58d16b669fe701d1e32baf7be2e9f6cff80dc258a4005f15200c78f37b3199d6134dbc10d2391c2d
6
+ metadata.gz: 81e272f8523db112eabe3c4f1127b83e83593f8685eb567d851941f7f1d81411d5ffabd270a6afc86573af6426d247c83292dbd09e1e71f241d4d93ca3edfcff
7
+ data.tar.gz: '084d82bd3ca33d37aab4af2fd15a37508af4a67422069a5bed32466ee14bd9b28a194ec8e40dd39c37e42029bb5e55a6f6ba5aa4bf9e00c14eeb5881cc46209d'
@@ -0,0 +1,31 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+
6
+ # GitHub recommends pinning actions to a commit SHA.
7
+ # To get a newer version, you will need to update the SHA.
8
+ # You can also reference a tag or branch, but the action may change without warning.
9
+
10
+ name: Tests
11
+
12
+ on:
13
+ push:
14
+ branches: [ main ]
15
+ pull_request:
16
+ branches: [ '*' ]
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - uses: actions/checkout@v3
24
+ - name: Set up Ruby
25
+ uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
26
+ with:
27
+ ruby-version: '2.7.3'
28
+ - name: Install dependencies
29
+ run: bundle install
30
+ - name: Run tests
31
+ run: bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.3.7
4
+
5
+ ### PlayoffBrackets::Series
6
+
7
+ - Add playoff season `80` to series wins needed dictionary
8
+ - Add default wins needed to dictionary and use for future seasons
9
+
10
+ ## 0.3.6
11
+
12
+ ### Game
13
+ - Add `suspended` game status
14
+
15
+ ### PlayoffBrackets::Round
16
+
17
+ - Add `started?` for when round has started (even if it is finished)
18
+ - Add `active?` for when round has active series
19
+ - Add `finished?` for when round has started and has no active series
20
+
21
+ ### PlayoffBrackets::Series
22
+
23
+ - Fix `active?` to properly assess `active: "1"` meaning has started but not necessarily currently active
24
+ - Added `started?` which now uses `active: "1"` to determine if the series has started
25
+ - Set round one series win count needed to `2` for season `76`
26
+
3
27
  ## 0.3.5
4
28
 
5
29
  ### Developer
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ahl_scraper (0.3.3)
4
+ ahl_scraper (0.3.7)
5
5
  json (~> 2.5.1)
6
6
  nokogiri (~> 1.12.4)
7
7
  rake (~> 13.0.0)
@@ -118,4 +118,4 @@ DEPENDENCIES
118
118
  webmock (>= 3.8.0)
119
119
 
120
120
  BUNDLED WITH
121
- 2.3.12
121
+ 2.3.20
@@ -344,7 +344,12 @@ module AhlScraper
344
344
  irregular_game_status = IRREGULAR_GAMES.dig(game_id.to_s, :status)
345
345
  return irregular_game_status if irregular_game_status
346
346
 
347
- return "postponed" if @raw_data.dig(:details, :status) == "Postponed"
347
+ game_status = @raw_data.dig(:details, :status)
348
+
349
+ return "suspended" unless game_status.match(/Suspended/).nil?
350
+
351
+ return "postponed" if game_status == "Postponed"
352
+
348
353
  # return "forfeited" if game is a forfeit, need to figure this out if it happens
349
354
 
350
355
  return "finished" if @raw_data.dig(:details, :final) == "1"
@@ -23,13 +23,23 @@ module AhlScraper
23
23
  @round_type_name ||= @raw_data[:round_type_name]
24
24
  end
25
25
 
26
+ def series
27
+ @series ||= @raw_data[:matchups].map { |series| Series.new(series, { bracket_data: @opts[:bracket_data] }) }
28
+ end
29
+
30
+ def started?
31
+ @started = active? || finished? if @started.nil?
32
+ @started
33
+ end
34
+
26
35
  def active?
27
- @active = series.filter(&:active?).any? if @active.nil?
36
+ @active = series.map(&:active?).any?(true) if @active.nil?
28
37
  @active
29
38
  end
30
39
 
31
- def series
32
- @series ||= @raw_data[:matchups].map { |series| Series.new(series, { bracket_data: @opts[:bracket_data] }) }
40
+ def finished?
41
+ @finished = series.map(&:finished?).none?(false) && !active? if @finished.nil?
42
+ @finished
33
43
  end
34
44
  end
35
45
  end
@@ -13,7 +13,9 @@ module AhlScraper
13
13
  "7" => { "1" => 4 },
14
14
  "69" => { "1" => 4 },
15
15
  "72" => { "1" => 1, "2" => 1, "3" => 2, "4" => 2 },
16
- "76" => { "1" => 3, "2" => 3, "3" => 4, "4" => 4, "5" => 4 },
16
+ "76" => { "1" => 2, "2" => 3, "3" => 4, "4" => 4, "5" => 4 },
17
+ "80" => { "1" => 2, "2" => 3, "3" => 3, "4" => 4, "5" => 4 },
18
+ "default" => { "1" => 2, "2" => 3, "3" => 3, "4" => 4, "5" => 4 },
17
19
  }.freeze
18
20
 
19
21
  def id
@@ -24,6 +26,10 @@ module AhlScraper
24
26
  @name ||= @raw_data[:series_name]
25
27
  end
26
28
 
29
+ def season_id
30
+ @season_id ||= find_season_id
31
+ end
32
+
27
33
  def logo_url
28
34
  @logo_url ||= @raw_data[:series_logo]
29
35
  end
@@ -32,8 +38,14 @@ module AhlScraper
32
38
  @round ||= @raw_data[:round].to_i
33
39
  end
34
40
 
41
+ def started?
42
+ @started = @raw_data[:active] == "1" if @started.nil?
43
+ @started
44
+ end
45
+
35
46
  def active?
36
- @active ||= @raw_data[:active] == "1" && team_ids_present? && team1_wins < wins_needed && team2_wins < wins_needed
47
+ @active ||= team_ids_present? && team1_wins < wins_needed && team2_wins < wins_needed if @active.nil?
48
+ @active
37
49
  end
38
50
 
39
51
  def home_feeder_series
@@ -75,11 +87,32 @@ module AhlScraper
75
87
  end
76
88
 
77
89
  def wins_needed
78
- @wins_needed ||= OVERRIDE_WINS_NEEDED.dig(season_id, round.to_s) || (round == 1 ? 3 : 4)
90
+ @wins_needed ||= find_wins_needed
91
+ end
92
+
93
+ def finished?
94
+ @finished = winning_team_id.present? if @finished.nil?
95
+ @finished
79
96
  end
80
97
 
81
98
  private
82
99
 
100
+ def find_wins_needed
101
+ return OVERRIDE_WINS_NEEDED.dig(season_id.to_s, round.to_s) unless OVERRIDE_WINS_NEEDED.dig(season_id.to_s, round.to_s).nil?
102
+
103
+ return (round == 1 ? 3 : 4) if season_id.to_i < OVERRIDE_WINS_NEEDED.keys.map(&:to_i).max
104
+
105
+ OVERRIDE_WINS_NEEDED.dig("default", round.to_s)
106
+ end
107
+
108
+ def find_season_id
109
+ dig_season_id = @opts.dig(:bracket_data, :rounds, round - 1, :season_id)
110
+
111
+ return if dig_season_id.nil? || dig_season_id.empty?
112
+
113
+ dig_season_id.to_i
114
+ end
115
+
83
116
  def first_game
84
117
  @first_game ||= @raw_data.dig(:games, 0)
85
118
  end
@@ -92,10 +125,6 @@ module AhlScraper
92
125
  nil
93
126
  end
94
127
 
95
- def season_id
96
- @opts.dig(:bracket_data, :rounds, round - 1, :season_id)
97
- end
98
-
99
128
  def team1
100
129
  @team1 ||= @raw_data[:team1].to_i.zero? ? nil : @raw_data[:team1].to_i
101
130
  end
@@ -105,7 +134,7 @@ module AhlScraper
105
134
  end
106
135
 
107
136
  def team_ids_present?
108
- team1 && team2
137
+ !team1.nil? && !team2.nil?
109
138
  end
110
139
 
111
140
  def team1_wins
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AhlScraper
4
- VERSION = "0.3.5"
4
+ VERSION = "0.3.7"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ahl_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - jefftcraig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-23 00:00:00.000000000 Z
11
+ date: 2023-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -185,6 +185,7 @@ executables: []
185
185
  extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
+ - ".github/workflows/ci.yml"
188
189
  - ".gitignore"
189
190
  - ".rspec"
190
191
  - ".rubocop.yml"