Module: Trailblazer::Developer::Trace::Present
- Defined in:
- lib/trailblazer/developer/trace/present.rb
Defined Under Namespace
Modules: TreeNodes
Class Method Summary collapse
- .call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options) ⇒ Object
- .default_renderer(task_node:) ⇒ Object
- .tree(stack, level, tree:, renderer:, **options) ⇒ Object
- .tree_for(stack, level, tree:, **options) ⇒ Object
Class Method Details
.call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options) ⇒ Object
12 13 14 |
# File 'lib/trailblazer/developer/trace/present.rb', line 12 def call(stack, level: 1, tree: [], renderer: method(:default_renderer), **) tree(stack.to_a, level, tree: tree, renderer: renderer, **) end |
.default_renderer(task_node:) ⇒ Object
8 9 10 |
# 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) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/trailblazer/developer/trace/present.rb', line 16 def tree(stack, level, tree:, renderer:, **) opts = .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) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/trailblazer/developer/trace/present.rb', line 27 def tree_for(stack, level, tree:, **) 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, **.merge(input: input, output: output))) if nested.any? # nesting opts = .merge(tree: tree) tree_for(nested, level + 1, **opts) end tree end end |