lib/isodoc/iho/xref.rb in metanorma-iho-0.2.10 vs lib/isodoc/iho/xref.rb in metanorma-iho-0.2.11

- old
+ new

@@ -1,9 +1,12 @@ require "isodoc/generic/xref" module IsoDoc module IHO + class Counter < IsoDoc::XrefGen::Counter + end + class Xref < IsoDoc::Generic::Xref def annex_name_lbl(clause, num) lbl = clause["obligation"] == "informative" ? @labels["appendix"] : @labels["annex"] l10n("<strong>#{lbl} #{num}</strong>") @@ -17,57 +20,69 @@ { label: annex_name_lbl(clause, num), type: "clause", xref: l10n("#{lbl} #{num}"), level: 1, value: lbl } if a = single_annex_special_section(clause) annex_names1(a, "#{num}", 1) else + i = Counter.new clause.xpath(ns("./clause | ./references | ./terms | ./definitions")). - each_with_index do |c, i| - annex_names1(c, "#{num}.#{i + 1}", 2) + each do |c| + i.increment(c) + annex_names1(c, "#{num}.#{i.print}", 2) end end hierarchical_asset_names(clause, num) end def back_anchor_names(docxml) super + i = Counter.new docxml.xpath(ns("//annex[@obligation = 'informative']")). - each_with_index do |c, i| - annex_names(c, i + 1) + each do |c| + i.increment(c) + annex_names(c, i.print) end + i = Counter.new("@") docxml.xpath(ns("//annex[not(@obligation = 'informative')]")). - each_with_index do |c, i| - annex_names(c, (65 + i + (i > 7 ? 1 : 0)).chr.to_s) + each do |c| + i.increment(c) + i.increment(c) if i.print == "I" + annex_names(c, i.print) end end def annex_names1(clause, num, level) lbl = clause.at("./ancestor::xmlns:annex/@obligation"). text == "informative" ? @labels["appendix"] : @labels["annex"] @anchors[clause["id"]] = { label: num, xref: l10n("#{lbl} #{num}"), level: level, type: "clause" } + i = Counter.new clause.xpath(ns("./clause | ./references | ./terms | ./definitions")). - each_with_index do |c, i| - annex_names1(c, "#{num}.#{i + 1}", level + 1) + each do |c| + i.increment(c) + annex_names1(c, "#{num}.#{i.print}", level + 1) end end def appendix_names(clause, num) - clause.xpath(ns("./appendix")).each_with_index do |c, i| + i = Counter.new + clause.xpath(ns("./appendix")).each_with_index do |c| + i.increment(c) @anchors[c["id"]] = - anchor_struct(i + 1, nil, @labels["appendix"], "clause") + anchor_struct(i.print, nil, @labels["appendix"], "clause") @anchors[c["id"]][:level] = 2 @anchors[c["id"]][:container] = clause["id"] end end def section_names1(clause, num, level) @anchors[clause["id"]] = { label: num, level: level, xref: l10n("#{@labels["subclause"]} #{num}"), type: "clause" } - clause.xpath(ns(SUBCLAUSES)). - each_with_index do |c, i| - section_names1(c, "#{num}.#{i + 1}", level + 1) + i = Counter.new + clause.xpath(ns(SUBCLAUSES)).each_with_index do |c| + i.increment(c) + section_names1(c, "#{num}.#{i.print}", level + 1) end end end end end