class Flows::SharedContextPipeline::Track

@api private

Constants

TRACK_ENTRY_ROUTER_DEF

Public Class Methods

new(name) click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 10
def initialize(name)
  @name = name
  @step_list = []
end

Public Instance Methods

add_step(step) click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 19
def add_step(step)
  last_step = @step_list.last
  last_step.next_step = step.name if last_step

  @step_list << step

  self
end
empty?() click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 32
def empty?
  @step_list.empty?
end
first_step_name() click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 28
def first_step_name
  @step_list.first.name
end
initialize_dup(_other) click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 15
def initialize_dup(_other)
  @step_list = @step_list.map(&:dup)
end
to_node_map(method_source) click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 36
def to_node_map(method_source)
  @step_list.each_with_object(@name => make_track_entry_node) do |step, node_map|
    node_map[step.name] = step.to_node(method_source)
  end
end

Private Instance Methods

make_track_entry_node() click to toggle source
# File lib/flows/shared_context_pipeline/track.rb, line 44
def make_track_entry_node
  MutationStep.new(
    name: @name,
    body: proc { true },
    router_def: TRACK_ENTRY_ROUTER_DEF,
    next_step: first_step_name
  ).to_node(nil)
end