Module: Jumbotron::Adapters::Espn::NflHelpers::Progress
- Defined in:
- app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb
Constant Summary collapse
- NIL_LIFECYCLES =
%w[scheduled postponed cancelled].freeze
- INTERMISSION_PATTERN =
/halftime/i
Class Method Summary collapse
- .build(state:, kind:, number:, clock:) ⇒ Object
- .call(status, lifecycle:) ⇒ Object
- .clock_for(status) ⇒ Object
- .intermission?(status) ⇒ Boolean
- .quarter_intermission ⇒ Object
Class Method Details
.build(state:, kind:, number:, clock:) ⇒ Object
43 44 45 46 47 48 49 |
# File 'app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb', line 43 def build(state:, kind:, number:, clock:) Canonical::GameProgress.new( state: state, segment: Canonical::GameSegment.new(kind: kind, number: number), clock: clock ) end |
.call(status, lifecycle:) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb', line 13 def call(status, lifecycle:) return if NIL_LIFECYCLES.include?(lifecycle.to_s) return quarter_intermission if intermission?(status) period = status.period return if period.nil? || period < 1 kind = period <= 4 ? "quarter" : "overtime" number = period <= 4 ? period : period - 4 build(state: "active", kind: kind, number: number, clock: clock_for(status)) end |
.clock_for(status) ⇒ Object
35 36 37 38 39 40 41 |
# File 'app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb', line 35 def clock_for(status) seconds = status.clock.is_a?(Integer) ? status.clock : nil display = status.display_clock.presence return if seconds.nil? && display.nil? Canonical::GameClock.new(mode: "remaining", seconds: seconds, display: display) end |
.intermission?(status) ⇒ Boolean
25 26 27 28 29 |
# File 'app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb', line 25 def intermission?(status) [status.type_name, status.type_description, status.type_detail, status.type_short_detail] .compact .any? { |value| INTERMISSION_PATTERN.match?(value) } end |
.quarter_intermission ⇒ Object
31 32 33 |
# File 'app/adapters/jumbotron/adapters/espn/nfl_helpers/progress.rb', line 31 def quarter_intermission build(state: "intermission", kind: "quarter", number: 2, clock: nil) end |