Module: Trailblazer::Developer::Trace::Present
- Defined in:
- lib/trailblazer/developer/trace/present.rb
Constant Summary collapse
- INDENTATION =
" |".freeze
- STEP_PREFIX =
"-- ".freeze
Class Method Summary collapse
- .call(stack, level: 1, tree: [], renderer: method(:default_renderer), **options) ⇒ Object
- .default_renderer(task_node:) ⇒ Object
- .render_tree_for(nodes) ⇒ 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
15 16 17 |
# File 'lib/trailblazer/developer/trace/present.rb', line 15 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
11 12 13 |
# File 'lib/trailblazer/developer/trace/present.rb', line 11 def default_renderer(task_node:, **) [ task_node[:level], %{#{task_node[:name]}} ] end |
.render_tree_for(nodes) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/trailblazer/developer/trace/present.rb', line 29 def render_tree_for(nodes) nodes.map { |level, node| indentation = INDENTATION * (level -1) indentation = indentation[0...-1] + "`" if level == 1 || /End./.match(node) # start or end step indentation + STEP_PREFIX + node }.join("\n") end |
.tree(stack, level, tree:, renderer:, **options) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/trailblazer/developer/trace/present.rb', line 19 def tree(stack, level, tree:, renderer:, **) tree_for(stack, level, .merge(tree: tree)) 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 |
.tree_for(stack, level, tree:, **options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/trailblazer/developer/trace/present.rb', line 37 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) task = input.task graph = Trailblazer::Activity::Introspect::Graph(input.activity) name = (node = graph.find { |node| node[:task] == task }) ? node[:id] : task name ||= task # FIXME: bullshit tree << { level: level, input: input, output: output, name: name, ** } if nested.any? # nesting tree_for(nested, level + 1, .merge(tree: tree)) end tree end end |