Module: Metanorma::Mirror::Output::HtmlRenderers::InlineRenderer
- Included in:
- Metanorma::Mirror::Output::HtmlRenderer
- Defined in:
- lib/metanorma/mirror/output/html_renderers/inline_renderer.rb
Class Method Summary collapse
Instance Method Summary collapse
- #apply_mark(inner_html, mark) ⇒ Object
- #render_footnote_marker(node) ⇒ Object
- #render_inline(content) ⇒ Object
- #render_text_node(node) ⇒ Object
Class Method Details
.register(registry) ⇒ Object
8 |
# File 'lib/metanorma/mirror/output/html_renderers/inline_renderer.rb', line 8 def self.register(registry); end |
Instance Method Details
#apply_mark(inner_html, mark) ⇒ Object
41 42 43 44 |
# File 'lib/metanorma/mirror/output/html_renderers/inline_renderer.rb', line 41 def apply_mark(inner_html, mark) handler = self.class.mark_handlers[mark.type] handler ? handler.call(inner_html, mark) : inner_html end |
#render_footnote_marker(node) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/metanorma/mirror/output/html_renderers/inline_renderer.rb', line 46 def render_footnote_marker(node) HtmlRenderers.build do |doc| doc.sup(class: "footnote-marker") do attrs = {} attrs[:id] = node.attrs["id"] if node.attrs["id"] doc.a(attrs.merge(href: "##{node.attrs['ref_id'] || ''}")) do doc.text node.attrs["number"] || "*" end end end end |
#render_inline(content) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/metanorma/mirror/output/html_renderers/inline_renderer.rb', line 10 def render_inline(content) return "" unless content return "" if content.empty? HtmlRenderers.build_fragment do |doc| content.each do |node| case node when String doc.text node when Model::Text HtmlRenderers.(doc, render_text_node(node)) when Model::SoftBreak doc.br when Model::Container if node.type == "footnote_marker" HtmlRenderers.(doc, render_footnote_marker(node)) else HtmlRenderers.(doc, render_node(node)) end end end end end |
#render_text_node(node) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/metanorma/mirror/output/html_renderers/inline_renderer.rb', line 34 def render_text_node(node) inner_html = HtmlRenderers.escape_text(node.text) node.marks.reduce(inner_html) do |current, mark| apply_mark(current, mark) end end |