Module: Metanorma::Mirror::Output::HtmlRenderers

Defined in:
lib/metanorma/mirror/output/html_renderers.rb,
lib/metanorma/mirror/output/html_renderers/list_renderers.rb,
lib/metanorma/mirror/output/html_renderers/mark_renderers.rb,
lib/metanorma/mirror/output/html_renderers/block_renderers.rb,
lib/metanorma/mirror/output/html_renderers/inline_renderer.rb,
lib/metanorma/mirror/output/html_renderers/table_renderers.rb,
lib/metanorma/mirror/output/html_renderers/section_renderers.rb,
lib/metanorma/mirror/output/html_renderers/structural_renderers.rb

Defined Under Namespace

Modules: BlockRenderers, InlineRenderer, ListRenderers, MarkRenderers, SectionRenderers, StructuralRenderers, TableRenderers

Constant Summary collapse

MODULES =
%i[
  StructuralRenderers
  SectionRenderers
  BlockRenderers
  ListRenderers
  TableRenderers
  InlineRenderer
  MarkRenderers
].freeze

Class Method Summary collapse

Class Method Details

.buildObject

Build a single HTML root element via Nokogiri::HTML4::Builder. Returns the rendered HTML string.



37
38
39
40
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 37

def self.build(&)
  builder = Nokogiri::HTML4::Builder.new(&)
  builder.doc.root.to_html
end

.build_fragmentObject

Build an HTML fragment (multiple roots permitted) via Nokogiri::HTML4::Builder. Returns the rendered HTML string.



44
45
46
47
48
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 44

def self.build_fragment(&)
  fragment = Nokogiri::HTML4::DocumentFragment.parse("")
  Nokogiri::HTML4::Builder.with(fragment, &)
  fragment.to_html
end

.embed(doc, html_string) ⇒ Object

Embed a pre-rendered HTML string under the current builder node without re-escaping.



52
53
54
55
56
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 52

def self.embed(doc, html_string)
  return if html_string.nil? || html_string.to_s.empty?

  doc << Nokogiri::HTML4::DocumentFragment.parse(html_string.to_s)
end

.escape_text(text) ⇒ Object

Escape text for safe inclusion in HTML body content.



68
69
70
71
72
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 68

def self.escape_text(text)
  return "" unless text

  CGI.escapeHTML(text.to_s)
end

.register_all(renderer_class) ⇒ Object



29
30
31
32
33
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 29

def self.register_all(renderer_class)
  MODULES.each do |mod_name|
    const_get(mod_name).register(renderer_class)
  end
end

.wrap(tag, inner_html, **attrs) ⇒ Object

Wrap a pre-rendered HTML string in a tag. Used by mark handlers.



59
60
61
62
63
64
65
# File 'lib/metanorma/mirror/output/html_renderers.rb', line 59

def self.wrap(tag, inner_html, **attrs)
  Nokogiri::HTML4::Builder.new do |doc|
    doc.public_send(tag, attrs) do
      doc.parent.inner_html = inner_html.to_s
    end
  end.doc.root.to_html
end