Module: Archsight::Helpers::AnalysisRenderer
- Included in:
- Archsight::Helpers
- Defined in:
- lib/archsight/helpers/analysis_renderer.rb
Overview
AnalysisRenderer provides HTML rendering for analysis result sections
Class Method Summary collapse
-
.escape_html(text) ⇒ Object
HTML escape helper.
-
.render_analysis_section(section, markdown_renderer: nil) ⇒ Object
Render a single analysis section to HTML.
-
.render_analysis_table(section) ⇒ Object
Render analysis table section to HTML.
- .render_code(section) ⇒ Object
-
.render_heading(section) ⇒ Object
Private rendering methods.
- .render_list(section) ⇒ Object
- .render_message(section) ⇒ Object
- .render_table(section) ⇒ Object
- .render_text(section, markdown_renderer) ⇒ Object
Class Method Details
.escape_html(text) ⇒ Object
HTML escape helper
12 13 14 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 12 def escape_html(text) Rack::Utils.escape_html(text.to_s) end |
.render_analysis_section(section, markdown_renderer: nil) ⇒ Object
Render a single analysis section to HTML
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 19 def render_analysis_section(section, markdown_renderer: nil) case section[:type] when :heading render_heading(section) when :text render_text(section, markdown_renderer) when :message (section) when :table render_table(section) when :list render_list(section) when :code render_code(section) else "" end end |
.render_analysis_table(section) ⇒ Object
Render analysis table section to HTML
39 40 41 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 39 def render_analysis_table(section) render_table(section) end |
.render_code(section) ⇒ Object
77 78 79 80 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 77 def render_code(section) lang_class = section[:lang] ? " class=\"language-#{section[:lang]}\"" : "" %(<pre class="code"><code#{lang_class}>#{escape_html(section[:content])}</code></pre>) end |
.render_heading(section) ⇒ Object
Private rendering methods
45 46 47 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 45 def render_heading(section) %(<div class="analysis-heading level-#{section[:level]}">#{escape_html(section[:text])}</div>) end |
.render_list(section) ⇒ Object
72 73 74 75 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 72 def render_list(section) items = section[:items].map { |item| "<li>#{escape_html(item)}</li>" }.join %(<ul class="analysis-list">#{items}</ul>) end |
.render_message(section) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 54 def (section) icon = case section[:level] when :error then "xmark-circle" when :warning then "warning-triangle" else "info-circle" end %(<div class="analysis-message message-#{section[:level]}"><i class="iconoir-#{icon}"></i> #{escape_html(section[:message])}</div>) end |
.render_table(section) ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 63 def render_table(section) headers = section[:headers].map { |h| "<th>#{escape_html(h)}</th>" }.join rows = section[:rows].map do |row| cells = row.map { |cell| "<td>#{escape_html(cell.to_s)}</td>" }.join "<tr>#{cells}</tr>" end.join %(<div class="analysis-table-wrapper"><table><thead><tr>#{headers}</tr></thead><tbody>#{rows}</tbody></table></div>) end |
.render_text(section, markdown_renderer) ⇒ Object
49 50 51 52 |
# File 'lib/archsight/helpers/analysis_renderer.rb', line 49 def render_text(section, markdown_renderer) content = markdown_renderer ? markdown_renderer.call(section[:content]) : escape_html(section[:content]) %(<div class="analysis-text">#{content}</div>) end |