class KartRace::Race
Attributes
file[R]
race[R]
result[R]
Public Class Methods
new(file: nil, race: nil)
click to toggle source
# File lib/kartrace/race.rb, line 7 def initialize(file: nil, race: nil) @file = file @race = race end
Public Instance Methods
average_race_speed()
click to toggle source
# File lib/kartrace/race.rb, line 21 def average_race_speed end
best_lap()
click to toggle source
# File lib/kartrace/race.rb, line 17 def best_lap race.flat_map(&:laps).min_by(&:time) end
call()
click to toggle source
# File lib/kartrace/race.rb, line 12 def call parse_race poleposition end
poleposition()
click to toggle source
# File lib/kartrace/race.rb, line 24 def poleposition winner = race.find { |r| r.laps.map(&:number).max_by && r.laps.map(&:number).min } winner.racer end
Private Instance Methods
parse_race()
click to toggle source
# File lib/kartrace/race.rb, line 31 def parse_race race = File.readlines(file) .map { |line| KartRace::Services::Assign.call(line) } .inject({}) do |hash, i| racer = i[:racer] hash[racer] ||= Array.new hash[racer] << Lap.new(time: i[:time], number: i[:lap_number], lap_time: i[:lap_time]) hash end @race = race.map { |racer, laps| Aftermath.new(racer: racer, laps: laps) }.compact end