Class: Dogfood::DSL::ExplainRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/dogfood/dsl/explain_renderer.rb

Overview

Renders the compiled AST into a human-readable stage/decision tree. Does NOT resolve randomness or evaluate expressions. See SPEC.md 5.

Instance Method Summary collapse

Constructor Details

#initialize(ast) ⇒ ExplainRenderer

Returns a new instance of ExplainRenderer.



8
9
10
# File 'lib/dogfood/dsl/explain_renderer.rb', line 8

def initialize(ast)
  @ast = ast
end

Instance Method Details

#renderObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/dogfood/dsl/explain_renderer.rb', line 12

def render
  lines = []
  lines << "Scenario: #{@ast[:name]}"
  lines << "Title: #{@ast[:title]}"
  lines << "Stages: #{@ast[:stages].map { |s| s[:stage] }.join('')}"
  lines << ""

  @ast[:stages].each do |stage|
    lines << "┌─ #{stage[:stage]}"
    lines.concat(render_stage(stage))
    lines << ""
  end

  lines << "Resumes: #{render_resume}"
  lines << "Delays: #{(@ast[:delays] || []).join(', ')}"

  lines.join("\n")
end