class Sports::TeamUsage

Public Class Methods

new( opts={} ) click to toggle source
# File lib/sportdb/structs/structs/team_usage.rb, line 24
def initialize( opts={} )
  @lines = {}   # StandingsLines cached by team name/key
end

Public Instance Methods

to_a() click to toggle source
# File lib/sportdb/structs/structs/team_usage.rb, line 37
def to_a
  ## return lines; sort

  # build array from hash
  ary = []
  @lines.each do |k,v|
    ary << v
  end

  ## for now sort just by name (a-z)
  ary.sort! do |l,r|
    ## note: reverse order (thus, change l,r to r,l)
    l.team <=> r.team
  end

  ary
end
update( matches, season: '?', level: nil ) click to toggle source
# File lib/sportdb/structs/structs/team_usage.rb, line 29
def update( matches, season: '?', level: nil )
  ## convenience - update all matches at once
  matches.each_with_index do |match,i| # note: index(i) starts w/ zero (0)
    update_match( match, season: season, level: level )
  end
  self  # note: return self to allow chaining
end

Private Instance Methods

update_match( m, season: '?', level: nil ) click to toggle source
# File lib/sportdb/structs/structs/team_usage.rb, line 57
def update_match( m, season: '?', level: nil )   ## add a match

  line1 = @lines[ m.team1 ] ||= TeamUsageLine.new( m.team1 )
  line2 = @lines[ m.team2 ] ||= TeamUsageLine.new( m.team2 )

  line1.matches +=1
  line2.matches +=1

  ## include season if not seen before (allow season in multiple files!!!)
  line1.seasons << season    unless line1.seasons.include?( season )
  line2.seasons << season    unless line2.seasons.include?( season )

  if level
    line1_level = line1.levels[ level ] ||= TeamUsageLine.new( m.team1 )
    line2_level = line2.levels[ level ] ||= TeamUsageLine.new( m.team2 )

    line1_level.matches +=1
    line2_level.matches +=1

    line1_level.seasons << season    unless line1_level.seasons.include?( season )
    line2_level.seasons << season    unless line2_level.seasons.include?( season )
  end
end