lib/trailblazer/activity/present.rb in trailblazer-activity-0.8.3 vs lib/trailblazer/activity/present.rb in trailblazer-activity-0.8.4

- old
+ new

@@ -9,69 +9,54 @@ module_function INDENTATION = " |".freeze STEP_PREFIX = "-- ".freeze - def default_renderer(stack:, level:, input:, name:, **) - [ level, %{#{name}} ] + def default_renderer(task_node:, **) + [ task_node[:level], %{#{task_node[:name]}} ] end def call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options) tree(stack.to_a, level, tree: tree, renderer: renderer, **options) end - def tree(stack, level, tree:, **options) + def tree(stack, level, tree:, renderer:, **options) tree_for(stack, level, options.merge(tree: tree)) - render_tree(tree: tree, level: level) + nodes = tree.each_with_index.map do |task_node, position| + renderer.(task_node: task_node, position: position, tree: tree) + end + + render_tree_for(nodes) end - def render_tree(tree:, level:) - tree.map { |level, step| + def render_tree_for(nodes) + nodes.map { |level, node| indentation = INDENTATION * (level -1) - indentation = indentation[0...-1] + "`" if level == 1 || /End./.match(step) # start or end step - indentation + STEP_PREFIX + step + indentation = indentation[0...-1] + "`" if level == 1 || /End./.match(node) # start or end step + indentation + STEP_PREFIX + node }.join("\n") end - def tree_for(stack, level, tree:, renderer:, **options) + def tree_for(stack, level, tree:, **options) stack.each do |lvl| # always a Stack::Task[input, ..., output] input, output, nested = Trace::Level.input_output_nested_for_level(lvl) task = input.task graph = Introspect::Graph(input.activity) name = (node = graph.find { |node| node[:task] == task }) ? node[:id] : task name ||= task # FIXME: bullshit - tree << renderer.(stack: stack, level: level, input: input, name: name, **options) + tree << { level: level, input: input, output: output, name: name, **options } if nested.any? # nesting - tree_for(nested, level + 1, options.merge(tree: tree, renderer: renderer)) + tree_for(nested, level + 1, options.merge(tree: tree)) end tree end - end - - def color_map - { - Trailblazer::Activity::Start => :blue, - Trailblazer::Activity::End => :pink, - Trailblazer::Activity::Right => :green, - Trailblazer::Activity::Left => :red - } - end - - def color_table - { - red: 31, - green: 32, - yellow: 33, - blue: 34, - pink: 35 - } end end end end end