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