module IsoDoc::Function::Blocks
Constants
- EXAMPLE_TBL_ATTR
- EXAMPLE_TD_ATTR
Public Instance Methods
admonition_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 125 def admonition_attrs(node) attr_code(id: node["id"], class: admonition_class(node), style: keep_style(node)) end
admonition_class(_node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 112 def admonition_class(_node) "Admonition" end
admonition_name(node, type)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 116 def admonition_name(node, type) name = node&.at(ns("./name")) and return name name = Nokogiri::XML::Node.new("name", node.document) return unless type && @i18n.admonition[type] name << @i18n.admonition[type]&.upcase name end
admonition_name_parse(_node, div, name)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 77 def admonition_name_parse(_node, div, name) div.p **{ class: "AdmonitionTitle", style: "text-align:center;" } do |p| name.children.each { |n| parse(n, p) } end end
admonition_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 130 def admonition_parse(node, out) type = node["type"] name = admonition_name(node, type) out.div **admonition_attrs(node) do |t| admonition_name_parse(node, t, name) if name node.children.each { |n| parse(n, t) unless n.name == "name" } end end
annotation_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 101 def annotation_parse(node, out) @sourcecode = false @annotation = true node.at("./preceding-sibling::*[local-name() = 'annotation']") or out << "<br/>" callout = node.at(ns("//callout[@target='#{node['id']}']")) out << "<br/><#{callout.text}> " out << node&.children&.text&.strip @annotation = false end
example_div_attr(node)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 16 def example_div_attr(node) attr_code(id: node["id"], class: "example", style: keep_style(node)) end
example_div_parse(node, out)
click to toggle source
used if we are boxing examples
# File lib/isodoc/function/blocks_example_note.rb, line 21 def example_div_parse(node, out) out.div **example_div_attr(node) do |div| example_label(node, div, node.at(ns("./name"))) node.children.each do |n| parse(n, div) unless n.name == "name" end end end
example_label(_node, div, name)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 4 def example_label(_node, div, name) return if name.nil? div.p **{ class: "example-title" } do |_p| name.children.each { |n| parse(n, div) } end end
example_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 52 def example_parse(node, out) example_div_parse(node, out) end
example_table_attr(node)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 30 def example_table_attr(node) attr_code(id: node["id"], class: "example", style: "border-collapse:collapse;border-spacing:0;"\ "#{keep_style(node)}") end
example_table_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 39 def example_table_parse(node, out) out.table **example_table_attr(node) do |t| t.tr do |tr| tr.td **EXAMPLE_TBL_ATTR do |td| example_label(node, td, node.at(ns("./name"))) end tr.td **EXAMPLE_TD_ATTR do |td| node.children.each { |n| parse(n, td) unless n.name == "name" } end end end end
figure_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 32 def figure_attrs(node) attr_code(id: node["id"], class: "figure", style: keep_style(node)) end
figure_key(out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 26 def figure_key(out) out.p **{ style: "page-break-after:avoid;" } do |p| p.b { |b| b << @i18n.key } end end
figure_name_parse(_node, div, name)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 18 def figure_name_parse(_node, div, name) return if name.nil? div.p **{ class: "FigureTitle", style: "text-align:center;" } do |p| name.children.each { |n| parse(n, p) } end end
figure_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 36 def figure_parse(node, out) return pseudocode_parse(node, out) if node["class"] == "pseudocode" || node["type"] == "pseudocode" @in_figure = true figure_parse1(node, out) @in_figure = false end
figure_parse1(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 45 def figure_parse1(node, out) out.div **figure_attrs(node) do |div| node.children.each do |n| figure_key(out) if n.name == "dl" parse(n, div) unless n.name == "name" end figure_name_parse(node, div, node.at(ns("./name"))) end end
formula_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 161 def formula_attrs(node) attr_code(id: node["id"], style: keep_style(node)) end
formula_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 165 def formula_parse(node, out) out.div **formula_attrs(node) do |div| formula_parse1(node, div) formula_where(node.at(ns("./dl")), div) node.children.each do |n| next if %w(stem dl name).include? n.name parse(n, div) end end end
formula_parse1(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 149 def formula_parse1(node, out) out.div **attr_code(class: "formula") do |div| div.p do |_p| parse(node.at(ns("./stem")), div) if lbl = node&.at(ns("./name"))&.text insert_tab(div, 1) div << "(#{lbl})" end end end end
formula_where(dlist, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 139 def formula_where(dlist, out) return unless dlist out.p **{ style: "page-break-after:avoid;" } do |p| p << @i18n.where end parse(dlist, out) out.parent.at("./dl")["class"] = "formula_dl" end
keep_style(node)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 85 def keep_style(node) ret = "" node["keep-with-next"] == "true" and ret += "page-break-after: avoid;" node["keep-lines-together"] == "true" and ret += "page-break-inside: avoid;" return nil if ret.empty? ret end
middle_admonitions(isoxml, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 12 def middle_admonitions(isoxml, out) isoxml.xpath(ns("//sections/note | //sections/admonition")).each do |x| parse(x, out) end end
middle_title(_isoxml, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 8 def middle_title(_isoxml, out) out.p(**{ class: "zzSTDTitle1" }) { |p| p << @meta.get[:doctitle] } end
note_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 96 def note_attrs(node) attr_code(id: node["id"], class: "Note", style: keep_style(node)) end
note_delim()
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 56 def note_delim "" end
note_p_parse(node, div)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 60 def note_p_parse(node, div) name = node&.at(ns("./name"))&.remove div.p do |p| name and p.span **{ class: "note_label" } do |s| name.children.each { |n| parse(n, s) } s << note_delim end insert_tab(p, 1) node.first_element_child.children.each { |n| parse(n, p) } end node.element_children[1..-1].each { |n| parse(n, div) } end
note_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 100 def note_parse(node, out) @note = true out.div **note_attrs(node) do |div| if node&.at(ns("./*[local-name() != 'name'][1]"))&.name == "p" note_p_parse(node, div) else note_parse1(node, div) end end @note = false end
note_parse1(node, div)
click to toggle source
# File lib/isodoc/function/blocks_example_note.rb, line 73 def note_parse1(node, div) name = node&.at(ns("./name"))&.remove name and div.p do |p| p.span **{ class: "note_label" } do |s| name.children.each { |n| parse(n, s) } s << note_delim end insert_tab(p, 1) end node.children.each { |n| parse(n, div) } end
para_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 184 def para_attrs(node) attrs = { class: para_class(node), id: node["id"] } s = node["align"].nil? ? "" : "text-align:#{node['align']};" s = "#{s}#{keep_style(node)}" attrs[:style] = s unless s.empty? attrs end
para_class(_node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 177 def para_class(_node) classtype = nil classtype = "MsoCommentText" if in_comment classtype = "Sourcecode" if @annotation classtype end
para_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 192 def para_parse(node, out) out.p **attr_code(para_attrs(node)) do |p| unless @termdomain.empty? p << "<#{@termdomain}> " @termdomain = "" end node.children.each { |n| parse(n, p) } end end
passthrough_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 225 def passthrough_parse(node, out) return if node["format"] && !(node["format"].split(",").include? @format.to_s) out.passthrough node.text end
permission_parse(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 91 def permission_parse(node, out) out.div **reqt_attrs(node, "permission") do |t| recommendation_name(node, t, @i18n.permission) recommendation_attributes(node, out) node.children.each do |n| parse(n, t) unless reqt_metadata_node(n) end end end
pre_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 97 def pre_parse(node, out) out.pre node.text, **attr_code(id: node["id"]) end
pseudocode_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 55 def pseudocode_attrs(node) attr_code(id: node["id"], class: "pseudocode", style: keep_style(node)) end
pseudocode_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 59 def pseudocode_parse(node, out) @in_figure = true name = node.at(ns("./name")) out.div **pseudocode_attrs(node) do |div| node.children.each { |n| parse(n, div) unless n.name == "name" } sourcecode_name_parse(node, div, name) end @in_figure = false end
quote_attribution(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 202 def quote_attribution(node, out) author = node.at(ns("./author")) source = node.at(ns("./source")) return if author.nil? && source.nil? out.p **{ class: "QuoteAttribution" } do |p| p << "— #{author.text}" if author p << ", " if author && source eref_parse(source, p) if source end end
quote_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 214 def quote_parse(node, out) attrs = para_attrs(node) attrs[:class] = "Quote" out.div **attr_code(attrs) do |p| node.children.each do |n| parse(n, p) unless %w(author source).include? n.name end quote_attribution(node, out) end end
recommendation_attr_keyvalue(node, key, value)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 45 def recommendation_attr_keyvalue(node, key, value) tag = node.at(ns("./#{key}")) or return nil value = node.at(ns("./#{value}")) or return nil "#{tag.text.capitalize}: #{value.text}" end
recommendation_attr_parse(node, label)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 38 def recommendation_attr_parse(node, label) noko do |xml| xml << "#{label}: " node.children.each { |n| parse(n, xml) } end.join end
recommendation_attributes(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 51 def recommendation_attributes(node, out) ret = recommendation_attributes1(node) return if ret.empty? out.p do |p| p.i do |i| i << ret.join("<br/>") end end end
recommendation_attributes1(node)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 22 def recommendation_attributes1(node) out = [] oblig = node["obligation"] and out << l10n("#{@i18n.obligation}: #{oblig}") node.xpath(ns("./subject")).each do |subj| out << l10n("#{@i18n.subject}: #{subj.text}") end node.xpath(ns("./inherit")).each do |i| out << recommendation_attr_parse(i, @i18n.inherits) end node.xpath(ns("./classification")).each do |c| line = recommendation_attr_keyvalue(c, "tag", "value") and out << line end out end
recommendation_labels(node)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 4 def recommendation_labels(node) [node.at(ns("./label")), node.at(ns("./title")), node.at(ns("./name"))] end
recommendation_name(node, out, _type)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 8 def recommendation_name(node, out, _type) label, title, lbl = recommendation_labels(node) out.p **{ class: "RecommendationTitle" } do |b| lbl&.children&.each { |n| parse(n, b) } b << l10n(":") if label || title b.br label&.children&.each { |n| parse(n, b) } b << "#{clausedelim} " if label && title title&.children&.each { |n| parse(n, b) } end end end
recommendation_parse(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 71 def recommendation_parse(node, out) out.div **reqt_attrs(node, "recommend") do |t| recommendation_name(node, t, @i18n.recommendation) recommendation_attributes(node, out) node.children.each do |n| parse(n, t) unless reqt_metadata_node(n) end end end
reqt_attrs(node, klass)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 67 def reqt_attrs(node, klass) attr_code(class: klass, id: node["id"], style: keep_style(node)) end
reqt_component_attrs(node)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 101 def reqt_component_attrs(node) klass = node.name klass == "component" and klass = node["class"] attr_code(class: "requirement-#{klass}", style: keep_style(node)) end
reqt_metadata_node(node)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 62 def reqt_metadata_node(node) %w(label title subject classification tag value inherit name).include? node.name end
requirement_component_parse(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 108 def requirement_component_parse(node, out) return if node["exclude"] == "true" out.div **reqt_component_attrs(node) do |div| node.children.each do |n| parse(n, div) end end end
requirement_parse(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 81 def requirement_parse(node, out) out.div **reqt_attrs(node, "require") do |t| recommendation_name(node, t, @i18n.requirement) recommendation_attributes(node, out) node.children.each do |n| parse(n, t) unless reqt_metadata_node(n) end end end
requirement_skip_parse(node, out)
click to toggle source
# File lib/isodoc/function/reqt.rb, line 118 def requirement_skip_parse(node, out); end
sourcecode_attrs(node)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 83 def sourcecode_attrs(node) attr_code(id: node["id"], class: "Sourcecode", style: keep_style(node)) end
sourcecode_name_parse(_node, div, name)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 69 def sourcecode_name_parse(_node, div, name) return if name.nil? div.p **{ class: "SourceTitle", style: "text-align:center;" } do |p| name.children.each { |n| parse(n, p) } end end
sourcecode_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 87 def sourcecode_parse(node, out) name = node.at(ns("./name")) out.p **sourcecode_attrs(node) do |div| @sourcecode = true node.children.each { |n| parse(n, div) unless n.name == "name" } @sourcecode = false end sourcecode_name_parse(node, out, name) end
svg_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 232 def svg_parse(node, out) out.parent.add_child(node) end
toc_parse(node, out)
click to toggle source
# File lib/isodoc/function/blocks.rb, line 236 def toc_parse(node, out) out.div **{ class: "toc" } do |div| node.children.each { |n| parse(n, div) } end end