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

Included in:
Metanorma::Mirror::Output::HtmlRenderer
Defined in:
lib/metanorma/mirror/output/html_renderers/structural_renderers.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.register(registry) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/metanorma/mirror/output/html_renderers/structural_renderers.rb', line 8

def self.register(registry)
  registry.register_node_handler("doc", instance_method(:render_doc))
  registry.register_node_handler("preface",
                                 instance_method(:render_preface))
  registry.register_node_handler("sections",
                                 instance_method(:render_sections))
  registry.register_node_handler("bibliography",
                                 instance_method(:render_bibliography))
  registry.register_node_handler("footnotes",
                                 instance_method(:render_footnotes))
  registry.register_node_handler("soft_break",
                                 instance_method(:render_soft_break))
end

Instance Method Details

#render_bibliography(node, depth: 0) ⇒ Object



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

def render_bibliography(node, depth: 0)
  HtmlRenderers.build do |doc|
    doc.section(class: "mn-bibliography") do
      HtmlRenderers.embed(doc, render_children(node, depth:))
    end
  end
end

#render_doc(node, depth: 0) ⇒ Object



22
23
24
25
26
# File 'lib/metanorma/mirror/output/html_renderers/structural_renderers.rb', line 22

def render_doc(node, depth: 0)
  HtmlRenderers.build do |doc|
    HtmlRenderers.embed(doc, render_children(node, depth:))
  end
end

#render_footnotes(node, depth: 0) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/metanorma/mirror/output/html_renderers/structural_renderers.rb', line 52

def render_footnotes(node, depth: 0)
  HtmlRenderers.build do |doc|
    doc.div(class: "footnotes") do
      doc.ol do
        node.content.each do |fn|
          next unless fn.is_a?(Model::Container)

          fn_attrs = {}
          fn_attrs[:id] = fn.attrs["id"] if fn.attrs["id"]
          doc.li(fn_attrs) do
            HtmlRenderers.embed(doc, render_children(fn))
            if fn.attrs["ref_id"]
              doc.a(href: "##{fn.attrs['ref_id']}") { doc.text "" }
            end
          end
        end
      end
    end
  end
end

#render_preface(node, depth: 0) ⇒ Object



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

def render_preface(node, depth: 0)
  HtmlRenderers.build do |doc|
    doc.section(class: "mn-preface") do
      HtmlRenderers.embed(doc, render_children(node, depth:))
    end
  end
end

#render_sections(node, depth: 0) ⇒ Object



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

def render_sections(node, depth: 0)
  HtmlRenderers.build do |doc|
    doc.section(class: "mn-sections") do
      HtmlRenderers.embed(doc, render_children(node, depth:))
    end
  end
end

#render_soft_break(_node, depth: 0) ⇒ Object



73
74
75
# File 'lib/metanorma/mirror/output/html_renderers/structural_renderers.rb', line 73

def render_soft_break(_node, depth: 0)
  HtmlRenderers.build(&:br)
end