class Umwelt::History::Trace
Public Class Methods
new()
click to toggle source
# File lib/umwelt/history/trace.rb, line 7 def initialize @queue = Queue.new # for phases @phases_index = {} @continuity = [] @timeline = {} end
Public Instance Methods
call(history, phase_id)
click to toggle source
# File lib/umwelt/history/trace.rb, line 14 def call(history, phase_id) to_index(history.phases) @queue.push from_index(phase_id) loop do break if @queue.empty? process(@queue.pop) end @continuity = @timeline.values end
enqueue(phase)
click to toggle source
# File lib/umwelt/history/trace.rb, line 33 def enqueue(phase) @queue.push from_index(phase.merge_id) unless phase.merge_id.nil? @queue.push from_index(phase.parent_id) unless phase.parent_id.nil? end
from_index(phase_id)
click to toggle source
# File lib/umwelt/history/trace.rb, line 38 def from_index(phase_id) phase = @phases_index[phase_id] phase || error!("Phase with ID #{phase_id} not exist, but referenced") end
process(phase)
click to toggle source
# File lib/umwelt/history/trace.rb, line 28 def process(phase) @timeline[phase[:id]] = phase enqueue(phase) end
to_index(phases)
click to toggle source
# File lib/umwelt/history/trace.rb, line 43 def to_index(phases) phases.each do |phase| @phases_index[phase[:id]] = phase end end