lib/isodoc/presentation_function/terms.rb in isodoc-1.8.3.3 vs lib/isodoc/presentation_function/terms.rb in isodoc-1.8.4
- old
+ new
@@ -4,41 +4,46 @@
docxml.xpath(ns("//concept")).each { |f| concept1(f) }
end
def concept1(node)
xref = node&.at(ns("./xref/@target"))&.text or
- return concept_render(node, ital: node["ital"] || "true",
- ref: node["ref"] || "true",
- linkref: node["linkref"] || "true",
- linkmention: node["linkmention"] || "false")
+ return concept_render(node, ital: "true", ref: "true",
+ linkref: "true", linkmention: "false")
if node.at(ns("//definitions//dt[@id = '#{xref}']"))
- concept_render(node, ital: node["ital"] || "false",
- ref: node["ref"] || "false",
- linkref: node["linkref"] || "true",
- linkmention: node["linkmention"] || "false")
- else concept_render(node, ital: node["ital"] || "true",
- ref: node["ref"] || "true",
- linkref: node["linkref"] || "true",
- linkmention: node["linkmention"] || "false")
+ concept_render(node, ital: "false", ref: "false",
+ linkref: "true", linkmention: "false")
+ else concept_render(node, ital: "true", ref: "true",
+ linkref: "true", linkmention: "false")
end
end
- def concept_render(node, opts)
+ def concept_render(node, defaults)
+ opts, render, ref = concept_render_init(node, defaults)
node&.at(ns("./refterm"))&.remove
- r = node.at(ns("./renderterm"))
- ref = node.at(ns("./xref | ./eref | ./termref"))
- ref && opts[:ref] != "false" and r&.next = " "
- opts[:ital] == "true" and r&.name = "em"
- concept1_linkmention(ref, r, opts)
+ ref && opts[:ref] != "false" and render&.next = " "
+ opts[:ital] == "true" and render&.name = "em"
+ concept1_linkmention(ref, render, opts)
concept1_ref(node, ref, opts)
+ concept1_nonital(node, opts)
+ node.replace(node.children)
+ end
+
+ def concept1_nonital(node, opts)
if opts[:ital] == "false"
r = node.at(ns(".//renderterm"))
r&.replace(r&.children)
end
- node.replace(node.children)
end
+ def concept_render_init(node, defaults)
+ opts = %i(ital ref linkref linkmention).each_with_object({}) do |x, m|
+ m[x] = node[x.to_s] || defaults[x]
+ end
+ [opts, node.at(ns("./renderterm")),
+ node.at(ns("./xref | ./eref | ./termref"))]
+ end
+
def concept1_linkmention(ref, renderterm, opts)
if opts[:linkmention] == "true" && !renderterm.nil? && !ref.nil?
ref2 = ref.clone
r2 = renderterm.clone
renderterm.replace(ref2).children = r2
@@ -235,10 +240,10 @@
end
elem.children = l10n("[#{@i18n.source}: #{elem.children.to_xml.strip}]")
end
def termsource_modification(mod)
- mod.previous_element.next = ", #{@i18n.modified}"
+ mod.previous_element.next = l10n(", #{@i18n.modified}")
mod.text.strip.empty? or mod.previous = " – "
mod.elements.size == 1 and
mod.elements[0].replace(mod.elements[0].children)
mod.replace(mod.children)
end