hopsoft/ellington

View on GitHub
lib/ellington/route_info.rb

Summary

Maintainability
A
20 mins
Test Coverage
require "delegate"

module Ellington
  class RouteInfo < SimpleDelegator
    attr_reader :route, :line_info

    def initialize(route, line_info)
      @route = route
      @line_info = line_info
      super line_info
    end

    def route_completed_message
      message = []
      message << "[ROUTE COMPLETED]"
      message << "[#{route.state(passenger)}]"
      message << "[#{route.name}]"
      message.concat passenger_message
      message.join " "
    end

    def passenger_message
      route.passenger_attrs_to_log.reduce([]) do |memo, attr|
        value = passenger.send(attr) rescue nil
        memo << "[#{attr}:#{value}]" unless value.nil?
        memo
      end
    end
  end
end