Module: Rigor::ModuleGraph::HtmlView

Defined in:
lib/rigor/module_graph/html_view.rb

Overview

Self-contained HTML document that embeds Mermaid output inline so it renders without any local server (works over file://, no fetch).

The view loads mermaid@10 from a CDN at render time. The only network access is that one CDN URL; if a project needs to ship a fully offline page, render the SVG via Graphviz and embed that instead.

The HTML body lives in lib/rigor/module_graph/templates/view.html.erb; bumping styling or Mermaid init options is an edit of that file alone.

Constant Summary collapse

TEMPLATE_PATH =
File.expand_path("templates/view.html.erb", __dir__)

Class Method Summary collapse

Class Method Details

.render(title:, mermaid_source:, subtitle: nil) ⇒ String

Returns the rendered HTML document.

Parameters:

  • title (String) —

    page and <h1> text</p></div> </li> <li> <span class='name'>mermaid_source</span> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>the mermaid flowchart body</p></div> </li> <li> <span class='name'>subtitle</span> <span class='type'>(<tt>String</tt>, <tt>nil</tt>)</span> <em class="default">(defaults to: <tt>nil</tt>)</em> — <div class='inline'><p>one-line caption under the H1</p></div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>String</tt>)</span> — <div class='inline'><p>the rendered HTML document</p></div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 29 30 31 32 33 34 35 36</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/rigor/module_graph/html_view.rb', line 29</span> <span class='kw'>def</span> <span class='id identifier rubyid_render'>render</span><span class='lparen'>(</span><span class='label'>title:</span><span class='comma'>,</span> <span class='label'>mermaid_source:</span><span class='comma'>,</span> <span class='label'>subtitle:</span> <span class='kw'>nil</span><span class='rparen'>)</span> <span class='id identifier rubyid_indented'>indented</span> <span class='op'>=</span> <span class='id identifier rubyid_mermaid_source'>mermaid_source</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n </span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='id identifier rubyid_template'>template</span><span class='period'>.</span><span class='id identifier rubyid_result_with_hash'>result_with_hash</span><span class='lparen'>(</span> <span class='label'>title:</span> <span class='id identifier rubyid_title'>title</span><span class='comma'>,</span> <span class='label'>subtitle:</span> <span class='id identifier rubyid_subtitle'>subtitle</span><span class='comma'>,</span> <span class='label'>indented_mermaid:</span> <span class='id identifier rubyid_indented'>indented</span> <span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="template-class_method"> .<strong>template</strong> ⇒ <tt>Object</tt> </h3><script> document.getElementById("template-class_method").insertAdjacentHTML( "afterbegin", '<a class="permalink" href="/gems/rigor-module-graph/Rigor%2FModuleGraph%2FHtmlView%2Etemplate">permalink</a>' ); </script> <table class="source_code"> <tr> <td> <pre class="lines"> 38 39 40</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/rigor/module_graph/html_view.rb', line 38</span> <span class='kw'>def</span> <span class='id identifier rubyid_template'>template</span> <span class='ivar'>@template</span> <span class='op'>||=</span> <span class='const'>ERB</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="/gems/rigor-module-graph/Rigor/ModuleGraph/HtmlView#TEMPLATE_PATH-constant" title="Rigor::ModuleGraph::HtmlView::TEMPLATE_PATH (constant)">TEMPLATE_PATH</a></span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>trim_mode:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>-</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Sat Sep 26 02:09:06 2026 by <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.45 (ruby-4.0.7). </div> </div> </body> </html>