Class: ActiverecordCallbackLens::Renderer::MermaidRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord_callback_lens/renderer/mermaid_renderer.rb

Overview

Renders a Graph::Graph as a Mermaid ‘graph TD` (top-down) diagram string.

The output is a header line followed by one declaration per node and one arrow per edge:

graph TD
  n0["before_save"]
  n1["active?"]
  n1 --> n0

Node labels are derived from the node type (see #node_label) and are escaped so that quotes in a predicate or method name cannot break the surrounding Mermaid label syntax.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(graph, expand: false) ⇒ MermaidRenderer

Returns a new instance of MermaidRenderer.

Parameters:

  • graph (Graph::Graph)
  • expand (Boolean) (defaults to: false)


30
31
32
33
# File 'lib/activerecord_callback_lens/renderer/mermaid_renderer.rb', line 30

def initialize(graph, expand: false)
  @graph = graph
  @expand = expand
end

Class Method Details

.render(graph, expand: false) ⇒ String

Parameters:

  • graph (Graph::Graph)
  • expand (Boolean) (defaults to: false)

    expand proc filter labels to their source snippet

Returns:

  • (String)


24
25
26
# File 'lib/activerecord_callback_lens/renderer/mermaid_renderer.rb', line 24

def self.render(graph, expand: false)
  new(graph, expand: expand).render
end

Instance Method Details

#renderString

Returns:

  • (String)


36
37
38
39
40
41
# File 'lib/activerecord_callback_lens/renderer/mermaid_renderer.rb', line 36

def render
  lines = ["graph TD"]
  lines.concat(node_declarations)
  lines.concat(edge_declarations)
  lines.join("\n")
end