Module: IsoDoc::Function::Inline

Included in:
Common
Defined in:
lib/isodoc/function/inline.rb,
lib/isodoc/function/inline_simple.rb

Instance Method Summary collapse

Instance Method Details

#add_parse(node, out) ⇒ Object



125
126
127
128
129
# File 'lib/isodoc/function/inline.rb', line 125

def add_parse(node, out)
  out.span **{ class: "addition" } do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#bookmark_parse(node, out) ⇒ Object



29
30
31
# File 'lib/isodoc/function/inline_simple.rb', line 29

def bookmark_parse(node, out)
  out.a **attr_code(id: node["id"])
end

#br_parse(node, out) ⇒ Object



19
20
21
# File 'lib/isodoc/function/inline_simple.rb', line 19

def br_parse(node, out)
  out.br
end

#callout_parse(node, out) ⇒ Object



16
17
18
# File 'lib/isodoc/function/inline.rb', line 16

def callout_parse(node, out)
  out << " &lt;#{node.text}&gt;"
end

#del_parse(node, out) ⇒ Object



131
132
133
134
135
# File 'lib/isodoc/function/inline.rb', line 131

def del_parse(node, out)
  out.span **{ class: "deletion" } do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#em_parse(node, out) ⇒ Object



39
40
41
42
43
# File 'lib/isodoc/function/inline_simple.rb', line 39

def em_parse(node, out)
  out.i do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#eref_parse(node, out) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/isodoc/function/inline.rb', line 54

def eref_parse(node, out)
  href = eref_target(node)
  if node["type"] == "footnote"
    out.sup do |s|
      s.a(**{ "href": href }) { |l| no_locality_parse(node, l) }
    end
  else
    out.a(**{ "href": href }) { |l| no_locality_parse(node, l) }
  end
end

#eref_target(node) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/isodoc/function/inline.rb', line 42

def eref_target(node)
  href = "##{node['bibitemid']}"
  url = node.at(ns("//bibitem[@id = '#{node['bibitemid']}']/"\
                   "uri[@type = 'citation']"))
  return href unless url

  href = suffix_url(url.text)
  anchor = node&.at(ns(".//locality[@type = 'anchor']"))&.text&.strip
  anchor and href += "##{anchor}"
  href
end

#error_parse(node, out) ⇒ Object



137
138
139
140
141
142
# File 'lib/isodoc/function/inline.rb', line 137

def error_parse(node, out)
  text = node.to_xml.gsub(/</, "&lt;").gsub(/>/, "&gt;")
  out.para do |p|
    p.b(**{ role: "strong" }) { |e| e << text }
  end
end

#hr_parse(node, out) ⇒ Object



15
16
17
# File 'lib/isodoc/function/inline_simple.rb', line 15

def hr_parse(node, out)
  out.hr
end

#image_parse(node, out, caption) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/isodoc/function/inline.rb', line 98

def image_parse(node, out, caption)
  attrs = { src: node["src"],
            height: node["height"] || "auto",
            width: node["width"] || "auto",
            title: node["title"],
            alt: node["alt"] }
  out.img **attr_code(attrs)
  image_title_parse(out, caption)
end

#image_title_parse(out, caption) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/isodoc/function/inline.rb', line 90

def image_title_parse(out, caption)
  unless caption.nil?
    out.p **{ class: "FigureTitle", style: "text-align:center;" } do |p|
      p.b { |b| b << caption.to_s }
    end
  end
end

#index_parse(node, out) ⇒ Object



23
24
# File 'lib/isodoc/function/inline_simple.rb', line 23

def index_parse(node, out)
end

#index_xref_parse(node, out) ⇒ Object



26
27
# File 'lib/isodoc/function/inline_simple.rb', line 26

def index_xref_parse(node, out)
end

#keyword_parse(node, out) ⇒ Object



33
34
35
36
37
# File 'lib/isodoc/function/inline_simple.rb', line 33

def keyword_parse(node, out)
  out.span **{ class: "keyword" } do |s|
    node.children.each { |n| parse(n, s) }
  end
end


5
6
7
8
9
10
11
12
13
14
# File 'lib/isodoc/function/inline.rb', line 5

def link_parse(node, out)
  url = node["target"]
  node["updatetype"] == "true" and url = suffix_url(url)
  out.a **attr_code(href: url, title: node["alt"]) do |l|
    if node.text.empty?
      l << node["target"].sub(/^mailto:/, "")
    else node.children.each { |n| parse(n, l) }
    end
  end
end

#no_locality_parse(node, out) ⇒ Object



20
21
22
23
24
# File 'lib/isodoc/function/inline.rb', line 20

def no_locality_parse(node, out)
  node.children.each do |n|
    parse(n, out) unless %w{locality localityStack}.include? n.name
  end
end

#origin_parse(node, out) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/isodoc/function/inline.rb', line 65

def origin_parse(node, out)
  if t = node.at(ns("./termref"))
    termrefelem_parse(t, out)
  else
    eref_parse(node, out)
  end
end

#page_break(out) ⇒ Object



7
8
9
# File 'lib/isodoc/function/inline_simple.rb', line 7

def page_break(out)
  out.br
end

#pagebreak_parse(_node, out) ⇒ Object



11
12
13
# File 'lib/isodoc/function/inline_simple.rb', line 11

def pagebreak_parse(_node, out)
  out.br
end

#section_break(body) ⇒ Object



3
4
5
# File 'lib/isodoc/function/inline_simple.rb', line 3

def section_break(body)
  body.br
end

#smallcap_parse(node, xml) ⇒ Object



108
109
110
111
112
# File 'lib/isodoc/function/inline.rb', line 108

def smallcap_parse(node, xml)
  xml.span **{ style: "font-variant:small-caps;" } do |s|
    node.children.each { |n| parse(n, s) }
  end
end

#stem_parse(node, out) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/isodoc/function/inline.rb', line 77

def stem_parse(node, out)
  ooml = case node["type"]
         when "AsciiMath"
           "#{@openmathdelim}#{HTMLEntities.new.encode(node.text)}"\
             "#{@closemathdelim}"
         when "MathML" then node.first_element_child.to_s
         else HTMLEntities.new.encode(node.text)
         end
  out.span **{ class: "stem" } do |span|
    span.parent.add_child ooml
  end
end

#strike_parse(node, out) ⇒ Object



69
70
71
72
73
# File 'lib/isodoc/function/inline_simple.rb', line 69

def strike_parse(node, out)
  out.s do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#strong_parse(node, out) ⇒ Object



45
46
47
48
49
# File 'lib/isodoc/function/inline_simple.rb', line 45

def strong_parse(node, out)
  out.b do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#sub_parse(node, out) ⇒ Object



57
58
59
60
61
# File 'lib/isodoc/function/inline_simple.rb', line 57

def sub_parse(node, out)
  out.sub do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#suffix_url(url) ⇒ Object



35
36
37
38
39
40
# File 'lib/isodoc/function/inline.rb', line 35

def suffix_url(url)
  return url if %r{^https?://}.match?(url)
  return url unless File.extname(url).empty?

  url.sub(/#{File.extname(url)}$/, ".html")
end

#sup_parse(node, out) ⇒ Object



51
52
53
54
55
# File 'lib/isodoc/function/inline_simple.rb', line 51

def sup_parse(node, out)
  out.sup do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#termrefelem_parse(node, out) ⇒ Object



73
74
75
# File 'lib/isodoc/function/inline.rb', line 73

def termrefelem_parse(node, out)
  out << "Termbase #{node['base']}, term ID #{node['target']}"
end

#text_parse(node, out) ⇒ Object



114
115
116
117
118
119
120
121
122
123
# File 'lib/isodoc/function/inline.rb', line 114

def text_parse(node, out)
  return if node.nil? || node.text.nil?

  text = node.to_s
  if in_sourcecode
    text = text.gsub("\n", "<br/>").gsub("<br/> ", "<br/>&nbsp;")
      .gsub(/ (?= )/, "&nbsp;")
  end
  out << text
end

#tt_parse(node, out) ⇒ Object



63
64
65
66
67
# File 'lib/isodoc/function/inline_simple.rb', line 63

def tt_parse(node, out)
  out.tt do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#underline_parse(node, out) ⇒ Object



75
76
77
78
79
# File 'lib/isodoc/function/inline_simple.rb', line 75

def underline_parse(node, out)
  out.u do |e|
    node.children.each { |n| parse(n, e) }
  end
end

#xref_parse(node, out) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/isodoc/function/inline.rb', line 26

def xref_parse(node, out)
  target = if /#/.match?(node["target"])
             node["target"].sub(/#/, ".html#")
           else
             "##{node['target']}"
           end
  out.a(**{ "href": target }) { |l| no_locality_parse(node, l) }
end