module Trailblazer::Developer::Trace::Present
Public Instance Methods
call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options)
click to toggle source
# File lib/trailblazer/developer/trace/present.rb, line 12 def call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options) tree(stack.to_a, level, tree: tree, renderer: renderer, **options) end
default_renderer(task_node:, **)
click to toggle source
# File lib/trailblazer/developer/trace/present.rb, line 8 def default_renderer(task_node:, **) [ task_node.level, %{#{task_node.value}} ] end
tree(stack, level, tree:, renderer:, **options)
click to toggle source
# File lib/trailblazer/developer/trace/present.rb, line 16 def tree(stack, level, tree:, renderer:, **options) opts = options.merge(tree: tree) tree_for(stack, level, **opts) nodes = tree.each_with_index.map do |task_node, position| renderer.(task_node: task_node, position: position, tree: tree) end Hirb::Console.format_output(nodes, class: :tree, type: :directory, multi_line_nodes: true) end
tree_for(stack, level, tree:, **options)
click to toggle source
# File lib/trailblazer/developer/trace/present.rb, line 27 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) tree.push(*TreeNodes.for(level, **options.merge(input: input, output: output))) if nested.any? # nesting opts = options.merge(tree: tree) tree_for(nested, level + 1, **opts) end tree end end