class OGTraf::Journey

Attributes

arrival[R]
connections[R]
departure[R]
from[R]
real_arrival[R]
real_departure[R]
to[R]

Public Class Methods

new(datablock) click to toggle source
# File lib/ogtraf/journey.rb, line 10
def initialize(datablock)
  @real_departure = Time.parse(datablock[:Departure])
  @real_arrival = Time.parse(datablock[:Arrival])

  @from = Stop.new datablock[:UsedStartPlace]
  @to = Stop.new datablock[:UsedEndPlace]

  @connections = datablock[:Routelinks].map { |r| Connection.new r }

  @departure = @connections.first.departure
  arrival_point = @connections.find { |c| c.to == @to }
  @arrival = @real_arrival
  @arrival = arrival_point.arrival unless arrival_point.nil?
end

Public Instance Methods

on_time?(side = :arr, allowed_drift = 60) click to toggle source
# File lib/ogtraf/journey.rb, line 25
def on_time?(side = :arr, allowed_drift = 60)
  raise ArgumentError unless
    %i[both dep departure arr arrival].include? side

  if side == :both
    return (@departure - @real_departure).abs < allowed_drift &&
           (@arrival - @real_arrival).abs < allowed_drift
  end

  case side
  when :dep, :departure
    (@departure - @real_departure).abs < allowed_drift
  when :arr, :arrival
    (@arrival - @real_arrival).abs < allowed_drift
  end
end