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