class Sports::Match
Attributes
comments[R]
conf1[R]
conf2[R]
country1[R]
country2[R]
date[R]
goals[RW]
group[R]
league[R]
leg[R]
round[R]
score1[R]
score1agg[R]
score1et[R]
score1i[R]
score1p[R]
score2[R]
score2agg[R]
score2et[R]
score2i[R]
score2p[R]
stage[R]
status[R]
team1[R]
team2[R]
time[R]
winner[R]
Public Class Methods
new( **kwargs )
click to toggle source
# File lib/sportdb/structs/structs/match.rb, line 29 def initialize( **kwargs ) @score1 = @score2 = nil ## full time @score1i = @score2i = nil ## half time (first (i) part) @score1et = @score2et = nil ## extra time @score1p = @score2p = nil ## penalty @score1agg = @score2agg = nil ## full time (all legs) aggregated update( kwargs ) unless kwargs.empty? end
parse_csv( txt, headers: nil, filters: nil, converters: nil, sep: nil )
click to toggle source
# File lib/sportdb/structs.rb, line 94 def self.parse_csv( txt, headers: nil, filters: nil, converters: nil, sep: nil ) SportDb::CsvMatchParser.parse( txt, headers: headers, filters: filters, converters: converters, sep: sep ) end
read_csv( path, headers: nil, filters: nil, converters: nil, sep: nil )
click to toggle source
# File lib/sportdb/structs.rb, line 86 def self.read_csv( path, headers: nil, filters: nil, converters: nil, sep: nil ) SportDb::CsvMatchParser.read( path, headers: headers, filters: filters, converters: converters, sep: sep ) end
Public Instance Methods
complete?()
click to toggle source
# File lib/sportdb/structs/structs/match.rb, line 156 def complete?() true; end
over?()
click to toggle source
# File lib/sportdb/structs/structs/match.rb, line 155 def over?() true; end
score()
click to toggle source
# File lib/sportdb/structs/structs/match.rb, line 159 def score Score.new( @score1i, @score2i, ## half time (first (i) part) @score1, @score2, ## full time @score1et, @score2et, ## extra time @score1p, @score2p ) ## penalty end
update( **kwargs )
click to toggle source
# File lib/sportdb/structs/structs/match.rb, line 40 def update( **kwargs ) ## note: check with has_key? because value might be nil!!! @date = kwargs[:date] if kwargs.has_key? :date @time = kwargs[:time] if kwargs.has_key? :time ## todo/fix: use team1_name, team2_name or similar - for compat with db activerecord version? why? why not? @team1 = kwargs[:team1] if kwargs.has_key? :team1 @team2 = kwargs[:team2] if kwargs.has_key? :team2 @conf1 = kwargs[:conf1] if kwargs.has_key? :conf1 @conf2 = kwargs[:conf2] if kwargs.has_key? :conf2 @country1 = kwargs[:country1] if kwargs.has_key? :country1 @country2 = kwargs[:country2] if kwargs.has_key? :country2 ## note: round is a string!!! e.g. '1', '2' for matchday or 'Final', 'Semi-final', etc. ## todo: use to_s - why? why not? @round = kwargs[:round] if kwargs.has_key? :round @stage = kwargs[:stage] if kwargs.has_key? :stage @leg = kwargs[:leg] if kwargs.has_key? :leg @group = kwargs[:group] if kwargs.has_key? :group @status = kwargs[:status] if kwargs.has_key? :status @comments = kwargs[:comments] if kwargs.has_key? :comments @league = kwargs[:league] if kwargs.has_key? :league if kwargs.has_key?( :score ) ## check all-in-one score struct for convenience!!! score = kwargs[:score] if score.nil? ## reset all score attribs to nil!! @score1 = nil @score1i = nil @score1et = nil @score1p = nil ## @score1agg = nil @score2 = nil @score2i = nil @score2et = nil @score2p = nil ## @score2agg = nil else @score1 = score.score1 @score1i = score.score1i @score1et = score.score1et @score1p = score.score1p ## @score1agg = score.score1agg @score2 = score.score2 @score2i = score.score2i @score2et = score.score2et @score2p = score.score2p ## @score2agg = score.score2agg end else @score1 = kwargs[:score1] if kwargs.has_key? :score1 @score1i = kwargs[:score1i] if kwargs.has_key? :score1i @score1et = kwargs[:score1et] if kwargs.has_key? :score1et @score1p = kwargs[:score1p] if kwargs.has_key? :score1p @score1agg = kwargs[:score1agg] if kwargs.has_key? :score1agg @score2 = kwargs[:score2] if kwargs.has_key? :score2 @score2i = kwargs[:score2i] if kwargs.has_key? :score2i @score2et = kwargs[:score2et] if kwargs.has_key? :score2et @score2p = kwargs[:score2p] if kwargs.has_key? :score2p @score2agg = kwargs[:score2agg] if kwargs.has_key? :score2agg ## note: (always) (auto-)convert scores to integers @score1 = @score1.to_i if @score1 @score1i = @score1i.to_i if @score1i @score1et = @score1et.to_i if @score1et @score1p = @score1p.to_i if @score1p @score1agg = @score1agg.to_i if @score1agg @score2 = @score2.to_i if @score2 @score2i = @score2i.to_i if @score2i @score2et = @score2et.to_i if @score2et @score2p = @score2p.to_i if @score2p @score2agg = @score2agg.to_i if @score2agg end ## todo/fix: ## gr-greece/2014-15/G1.csv: ## G1,10/05/15,Niki Volos,OFI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ## ## for now score1 and score2 must be present ## if @score1.nil? || @score2.nil? ## puts "** WARN: missing scores for match:" ## pp kwargs ## ## exit 1 ## end ## todo/fix: auto-calculate winner # return 1,2,0 1 => team1, 2 => team2, 0 => draw/tie ### calculate winner - use 1,2,0 ## ## move winner calc to score class - why? why not? if @score1 && @score2 if @score1 > @score2 @winner = 1 elsif @score2 > @score1 @winner = 2 elsif @score1 == @score2 @winner = 0 else end else @winner = nil # unknown / undefined end self ## note - MUST return self for chaining end