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