class ZionData::Parser::Sniffers

Class for parsing Zion sniffers data

Attributes

node_times[R]
routes[R]
sequences[R]

Public Class Methods

new(routes:, node_times:, sequences:) click to toggle source
# File lib/zion_data/parser/sniffers.rb, line 9
def initialize(routes:, node_times:, sequences:)
  @routes = parse_csv(routes)
  @node_times = parse_csv(node_times)
  @sequences = parse_csv(sequences)
end

Public Instance Methods

parse() click to toggle source
# File lib/zion_data/parser/sniffers.rb, line 15
def parse
  sequences.each_with_object([]) do |sequence, result|
    route = find_route(sequence['route_id'])
    node_time = find_node_time(sequence['node_time_id'])
    next unless route && node_time

    result << payload(node_time['start_node'], node_time['end_node'],
                      route['time'], end_time(route['time'], node_time))
  end
end

Private Instance Methods

end_time(time_string, node_time) click to toggle source
# File lib/zion_data/parser/sniffers.rb, line 28
def end_time(time_string, node_time)
  start_time = DateTime.parse(time_string).to_time.utc
  end_time = start_time + node_time['duration_in_milliseconds'] / 1000
  end_time.to_s
end
find_node_time(node_time_id) click to toggle source
# File lib/zion_data/parser/sniffers.rb, line 38
def find_node_time(node_time_id)
  node_times.find { |r| r['node_time_id'] == node_time_id }
end
find_route(route_id) click to toggle source
# File lib/zion_data/parser/sniffers.rb, line 34
def find_route(route_id)
  routes.find { |r| r['route_id'] == route_id }
end