Class: Sports::GoalEvent
- Inherits:
-
Object
- Object
- Sports::GoalEvent
- Defined in:
- lib/sportdb/quick/csv/goal.rb
Overview
“free-standing” goal event - for import/export in separate event / goal datafiles
returned by CsvGoalParser and others
Instance Attribute Summary collapse
-
#date ⇒ Object
readonly
match id.
-
#minute ⇒ Object
readonly
main attributes.
-
#notes ⇒ Object
readonly
main attributes.
-
#offset ⇒ Object
readonly
main attributes.
-
#owngoal ⇒ Object
readonly
main attributes.
-
#penalty ⇒ Object
readonly
main attributes.
-
#player ⇒ Object
readonly
main attributes.
-
#round ⇒ Object
readonly
match id.
-
#score1 ⇒ Object
readonly
main attributes.
-
#score2 ⇒ Object
readonly
main attributes.
-
#team1 ⇒ Object
readonly
match id.
-
#team2 ⇒ Object
readonly
match id.
Class Method Summary collapse
-
.build(row) ⇒ Object
rename to parse or such - why? why not?.
Instance Method Summary collapse
-
#initialize(team1:, team2:, round: nil, date: nil, score1:, score2:, player:, minute:, offset: nil, owngoal: false, penalty: false, notes: nil) ⇒ GoalEvent
constructor
A new instance of GoalEvent.
-
#match_id ⇒ Object
todo/check: or just use match.hash or such if match mapping known - why? why not?.
- #owngoal? ⇒ Boolean
- #penalty? ⇒ Boolean
-
#update(**kwargs) ⇒ Object
note: lets you use normalize teams or such acts like a Match struct.
Constructor Details
#initialize(team1:, team2:, round: nil, date: nil, score1:, score2:, player:, minute:, offset: nil, owngoal: false, penalty: false, notes: nil) ⇒ GoalEvent
Returns a new instance of GoalEvent.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/sportdb/quick/csv/goal.rb', line 105 def initialize( team1:, team2:, round: nil, date: nil, score1:, score2:, player:, minute:, offset: nil, owngoal: false, penalty: false, notes: nil ) @team1 = team1 @team2 = team2 @round = round @date = date @score1 = score1 @score2 = score2 @player = player @minute = minute @offset = offset @owngoal = owngoal @penalty = penalty @notes = notes end |
Instance Attribute Details
#date ⇒ Object (readonly)
match id
76 77 78 |
# File 'lib/sportdb/quick/csv/goal.rb', line 76 def date @date end |
#minute ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def minute @minute end |
#notes ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def notes @notes end |
#offset ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def offset @offset end |
#owngoal ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def owngoal @owngoal end |
#penalty ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def penalty @penalty end |
#player ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def player @player end |
#round ⇒ Object (readonly)
match id
76 77 78 |
# File 'lib/sportdb/quick/csv/goal.rb', line 76 def round @round end |
#score1 ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def score1 @score1 end |
#score2 ⇒ Object (readonly)
main attributes
82 83 84 |
# File 'lib/sportdb/quick/csv/goal.rb', line 82 def score2 @score2 end |
#team1 ⇒ Object (readonly)
match id
76 77 78 |
# File 'lib/sportdb/quick/csv/goal.rb', line 76 def team1 @team1 end |
#team2 ⇒ Object (readonly)
match id
76 77 78 |
# File 'lib/sportdb/quick/csv/goal.rb', line 76 def team2 @team2 end |
Class Method Details
.build(row) ⇒ Object
rename to parse or such - why? why not?
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/sportdb/quick/csv/goal.rb', line 8 def self.build( row ) ## rename to parse or such - why? why not? ## split match_id team_str, more_str = row['Match'].split( '|' ) team1_str, team2_str = team_str.split( ' - ' ) more_str = more_str.strip team1_str = team1_str.strip team2_str = team2_str.strip # check if more_str is a date otherwise assume round date_fmt = if more_str =~ /^[A-Z]{3} [0-9]{1,2}$/i ## Apr 4 '%b %d' elsif more_str =~ /^[A-Z]{3} [0-9]{1,2} [0-9]{4}$/i ## Apr 4 2019 '%b %d %Y' else nil end if date_fmt date = Date.strptime( more_str, date_fmt ) round = nil else date = nil round = more_str end values = row['Score'].split('-') values = values.map { |value| value.strip } score1 = values[0].to_i score2 = values[1].to_i minute = nil offset = nil if m=%r{([0-9]+) (?:[ ]+ \+([0-9]+) )? ['.] $}x.match( row['Minute']) minute = m[1].to_i offset = m[2] ? m[2].to_i : nil else puts "!! ERROR - unsupported minute (goal) format >#{row['Minute']}<" exit 1 end attributes = { team1: team1_str, team2: team2_str, date: date, round: round, score1: score1, score2: score2, minute: minute, offset: offset, player: row['Player'], owngoal: ['(og)', '(o.g.)'].include?( row['Extra']), penalty: ['(pen)', '(pen.)'].include?( row['Extra']), notes: (row['Notes'].nil? || row['Notes'].empty?) ? nil : row['Notes'] } new( **attributes ) end |
Instance Method Details
#match_id ⇒ Object
todo/check: or just use match.hash or such if match mapping known - why? why not?
93 94 95 96 97 98 99 |
# File 'lib/sportdb/quick/csv/goal.rb', line 93 def match_id if round "#{@team1} - #{@team2} | #{@round}" else "#{@team1} - #{@team2} | #{@date}" end end |
#owngoal? ⇒ Boolean
102 |
# File 'lib/sportdb/quick/csv/goal.rb', line 102 def owngoal?() @owngoal==true; end |
#penalty? ⇒ Boolean
103 |
# File 'lib/sportdb/quick/csv/goal.rb', line 103 def penalty?() @penalty==true; end |
#update(**kwargs) ⇒ Object
note: lets you use normalize teams or such acts like a Match struct
135 136 137 138 139 |
# File 'lib/sportdb/quick/csv/goal.rb', line 135 def update( **kwargs ) ## 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 end |