class Sportradar::Nhl::Models::Event

Constants

EVENT_TYPES
PENALTY_TYPES
PLAY_TYPES
SCORING_PLAY_TYPES
STOPPAGE_TYPES

Public Class Methods

new(period:, attributes:) click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 12
def initialize(period:, attributes:)
  @period = period
  @attributes = attributes
  build_statistics
end

Public Instance Methods

clock() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 79
def clock
  @attributes['clock'] || '0'
end
clock_secs() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 83
def clock_secs
  begin
    if clock && clock.include?(':')
      mins, secs = clock.split(':').map(&:to_i)
      Time.parse("00:#{mins}:#{secs}").
         seconds_since_midnight.to_i
    end
  rescue => e
    return 0
  end
end
Also aliased as: period_seconds
coordinate_x() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 116
def coordinate_x
  coordinates['coord_x']
end
coordinate_y() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 120
def coordinate_y
  coordinates['coord_y']
end
coordinates() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 108
def coordinates
  @attributes['location'] || {}
end
coordinates?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 112
def coordinates?
  @attributes['location'].present?
end
description() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 100
def description
  @attributes['description'] || 0
end
event_type() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 104
def event_type
  @attributes['event_type']
end
game_id() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 30
def game_id
  period.game_id
end
has_team?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 46
def has_team?
  !team_id.nil?
end
id() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 26
def id
  @attributes['id']
end
official() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 124
def official
  @attributes['official']
end
penalty?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 156
def penalty?
  PENALTY_TYPES.include?(event_type)
end
period() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 50
def period
  @period
end
period_abbreviation() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 58
def period_abbreviation
  @period.abbreviation
end
period_id() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 54
def period_id
  @period.id
end
period_number() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 62
def period_number
  @period.number
end
period_seconds()
Alias for: clock_secs
period_sequence() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 66
def period_sequence
  @period.sequence
end
period_type() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 70
def period_type
  @period.type
end
play?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 160
def play?
  PLAY_TYPES.include?(event_type)
end
play_player_stats() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 148
def play_player_stats
  @play_player_stats ||= []
end
scoring_play?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 164
def scoring_play?
  SCORING_PLAY_TYPES.include?(event_type)
end
scoring_players() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 152
def scoring_players
  @scoring_players ||= []
end
statistics() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 144
def statistics
  @attributes['statistics'] || []
end
stoppage?() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 168
def stoppage?
  STOPPAGE_TYPES.include?(event_type)
end
strength() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 128
def strength
  @attributes['strength']
end
team() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 34
def team
  @attributes['attribution'] || {}
end
team_goal_side() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 42
def team_goal_side
  team.dig('team_goal')
end
team_id() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 38
def team_id
  team.dig('id')
end
time_code() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 74
def time_code
  min, sec = clock.split(':').map(&:to_i)
  "PT#{min}M#{sec}S"
end
to_s() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 18
def to_s
  if coordinates?
    "#{period_abbreviation} - #{clock} - #{event_type}: #{description} [#{coordinate_x}, #{coordinate_y}]"
  else
    "#{period_abbreviation} - #{clock} - #{event_type}: #{description}"
  end
end
updated_at() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 140
def updated_at
  @attributes['updated']
end
wall_clock() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 132
def wall_clock
  @attributes['wall_clock']
end
zone() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 136
def zone
  @attributes['zone']
end

Private Instance Methods

build_statistics() click to toggle source
# File lib/sportradar/nhl/models/event.rb, line 174
def build_statistics
  statistics.each do |statistic|
    play_player_stats << Models::PlayPlayerStat.new(event: self, attributes: statistic)
    scoring_players << Models::ScoringPlayer.new(event: self, attributes: statistic) if scoring_play?
  end
end