Class: Dogfood::DSL::ExplainRenderer
- Inherits:
-
Object
- Object
- Dogfood::DSL::ExplainRenderer
- 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
-
#initialize(ast) ⇒ ExplainRenderer
constructor
A new instance of ExplainRenderer.
- #render ⇒ Object
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
#render ⇒ Object
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 |