lib/isodoc/iso/base_convert.rb in metanorma-iso-1.3.3 vs lib/isodoc/iso/base_convert.rb in metanorma-iso-1.3.4
- old
+ new
@@ -78,41 +78,43 @@
def section_names1(clause, num, level)
@anchors[clause["id"]] =
{ label: num, level: level, xref: num }
# subclauses are not prefixed with "Clause"
- clause.xpath(ns("./clause | ./terms | ./term | ./definitions")).
+ clause.xpath(ns("./clause | ./terms | ./term | ./definitions | ./references")).
each_with_index do |c, i|
section_names1(c, "#{num}.#{i + 1}", level + 1)
end
end
def annex_names1(clause, num, level)
@anchors[clause["id"]] = { label: num, xref: num, level: level }
- clause.xpath(ns("./clause")).each_with_index do |c, i|
+ clause.xpath(ns("./clause | ./references")).each_with_index do |c, i|
annex_names1(c, "#{num}.#{i + 1}", level + 1)
end
end
def eref_localities1_zh(target, type, from, to)
subsection = from&.text&.match(/\./)
ret = type == "list" ? "" : ","
ret += " 第#{from.text}" if from
ret += "–#{to}" if to
loc = (@locality[type] || type.sub(/^locality:/, "").capitalize )
- ret += " #{loc}" unless subsection && type == "clause" || type == "list" || target.match(/^IEV$|^IEC 60050-/)
+ ret += " #{loc}" unless subsection && type == "clause" ||
+ type == "list" || target.match(/^IEV$|^IEC 60050-/)
ret += ")" if type == "list"
ret
end
def eref_localities1(target, type, from, to, lang = "en")
subsection = from&.text&.match(/\./)
type = type.downcase
return l10n(eref_localities1_zh(target, type, from, to)) if lang == "zh"
ret = type == "list" ? "" : ","
loc = @locality[type] || type.sub(/^locality:/, "").capitalize
- ret += " #{loc}" unless subsection && type == "clause" || type == "list" || target.match(/^IEV$|^IEC 60050-/)
+ ret += " #{loc}" unless subsection && type == "clause" ||
+ type == "list" || target.match(/^IEV$|^IEC 60050-/)
ret += " #{from.text}" if from
ret += "–#{to.text}" if to
ret += ")" if type == "list"
l10n(ret)
end
@@ -120,33 +122,50 @@
def prefix_container(container, linkend, target)
delim = anchor(target, :type) == "listitem" ? " " : ", "
l10n(anchor(container, :xref) + delim + linkend)
end
+ def example_span_label(node, div, name)
+ n = get_anchors[node["id"]]
+ div.span **{ class: "example_label" } do |p|
+ lbl = (n.nil? || n[:label].nil? || n[:label].empty?) ? @example_lbl :
+ l10n("#{@example_lbl} #{n[:label]}")
+ p << lbl
+ name and !lbl.nil? and p << " — "
+ name and name.children.each { |n| parse(n, div) }
+ end
+ end
+
def example_p_parse(node, div)
+ name = node&.at(ns("./name"))&.remove
div.p do |p|
- p.span **{ class: "example_label" } do |s|
- s << example_label(node)
- end
+ example_span_label(node, p, name)
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
def example_parse1(node, div)
div.p do |p|
- p.span **{ class: "example_label" } do |s|
- s << example_label(node)
- end
+ example_span_label(node, p, node.at(ns("./name")))
insert_tab(p, 1)
end
- node.children.each { |n| parse(n, div) }
+ node.children.each { |n| parse(n, div) unless n.name == "name" }
end
+ def node_begins_with_para(node)
+ node.elements.each do |e|
+ next if e.name == "name"
+ return true if e.name == "p"
+ return false
+ end
+ false
+ end
+
def example_parse(node, out)
out.div **{ id: node["id"], class: "example" } do |div|
- if node.first_element_child.name == "p"
+ if node_begins_with_para(node)
example_p_parse(node, div)
else
example_parse1(node, div)
end
end