Class: LcpRuby::Workflow::MermaidBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/workflow/mermaid_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(workflow, current_state: nil, options: {}) ⇒ MermaidBuilder

Returns a new instance of MermaidBuilder.



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/lcp_ruby/workflow/mermaid_builder.rb', line 4

def initialize(workflow, current_state: nil, options: {})
  @workflow = workflow
  @current_state = current_state&.to_s
  @direction = options.fetch("direction", "LR")
  @show_transition_labels = options.fetch("show_transition_labels", true)
  @show_roles = options.fetch("show_roles", false)
  @show_guards = options.fetch("show_guards", false)
  @collapse_universal = options.fetch("collapse_universal", true)
  @available_transitions = options.fetch("available_transitions", nil)
  @palette = options.fetch("palette", "light").to_sym
  @audit_index = build_audit_index(options.fetch("audit_trail", nil))
end

Instance Method Details

#buildObject



17
18
19
20
# File 'lib/lcp_ruby/workflow/mermaid_builder.rb', line 17

def build
  structure = build_structure
  (structure + build_class_defs(@palette)).join("\n")
end

#build_for_palettes(*palettes) ⇒ Object

Build the diagram for multiple palettes at once, reusing the shared structure. Returns an array of Mermaid code strings, one per palette.



24
25
26
27
# File 'lib/lcp_ruby/workflow/mermaid_builder.rb', line 24

def build_for_palettes(*palettes)
  structure = build_structure
  palettes.map { |p| (structure + build_class_defs(p.to_sym)).join("\n") }
end