Class: Docbook::Output::HtmlRenderer
- Inherits:
-
Object
- Object
- Docbook::Output::HtmlRenderer
- Defined in:
- lib/docbook/output/html_renderer.rb
Overview
Renders a DocbookMirror guide hash as semantic HTML.
Produces the same HTML structure and CSS classes as the Vue MirrorRenderer, enabling server-side rendering for SEO and split-page output.
Usage: guide = Pipeline.new(xml_path: "book.xml").process html = HtmlRenderer.new(guide).render
Constant Summary collapse
- SECTION_TYPES =
%w[ chapter section appendix part preface dedication acknowledgements colophon reference refentry ].freeze
- SECTION_HEADING_LEVELS =
{ "part" => 1, "chapter" => 2, "section" => 3, "appendix" => 2, "preface" => 2, "dedication" => 2, "reference" => 1, "refentry" => 2, "refsection" => 3, "acknowledgements" => 2, "colophon" => 2, "article" => 1, "topic" => 2, "set" => 1 }.freeze
- ADMONITION_TITLES =
{ "note" => "Note", "warning" => "Warning", "tip" => "Tip", "caution" => "Caution", "important" => "Important", "danger" => "Danger" }.freeze
Class Method Summary collapse
- .custom_mark_renderers ⇒ Object
- .custom_node_renderers ⇒ Object
- .register_mark_renderer(mark_type, handler) ⇒ Object
- .register_node_renderer(type, handler) ⇒ Object
Instance Method Summary collapse
-
#initialize(guide) ⇒ HtmlRenderer
constructor
A new instance of HtmlRenderer.
-
#render ⇒ Object
Render the full document content as HTML.
-
#render_nodes(nodes) ⇒ Object
Render a subset of content nodes.
Constructor Details
#initialize(guide) ⇒ HtmlRenderer
Returns a new instance of HtmlRenderer.
59 60 61 62 63 |
# File 'lib/docbook/output/html_renderer.rb', line 59 def initialize(guide) @guide = guide @content = guide["content"] || [] @numbering = guide.dig("toc", "numbering") || {} end |
Class Method Details
.custom_mark_renderers ⇒ Object
50 51 52 |
# File 'lib/docbook/output/html_renderer.rb', line 50 def custom_mark_renderers @custom_mark_renderers ||= {} end |
.custom_node_renderers ⇒ Object
42 43 44 |
# File 'lib/docbook/output/html_renderer.rb', line 42 def custom_node_renderers @custom_node_renderers ||= {} end |
.register_mark_renderer(mark_type, handler) ⇒ Object
54 55 56 |
# File 'lib/docbook/output/html_renderer.rb', line 54 def register_mark_renderer(mark_type, handler) custom_mark_renderers[mark_type] = handler end |
.register_node_renderer(type, handler) ⇒ Object
46 47 48 |
# File 'lib/docbook/output/html_renderer.rb', line 46 def register_node_renderer(type, handler) custom_node_renderers[type] = handler end |
Instance Method Details
#render ⇒ Object
Render the full document content as HTML
66 67 68 |
# File 'lib/docbook/output/html_renderer.rb', line 66 def render render_nodes(@content) end |
#render_nodes(nodes) ⇒ Object
Render a subset of content nodes
71 72 73 |
# File 'lib/docbook/output/html_renderer.rb', line 71 def render_nodes(nodes) nodes.map { |node| render_node(node) }.join("\n") end |