class IsoDoc::UN::Xref

Constants

NONTERMINAL
SUBCLAUSES

Public Instance Methods

annex_levelnum(num, lvl) click to toggle source
# File lib/isodoc/un/xref.rb, line 41
def annex_levelnum(num, lvl)
  case lvl % 3
  when 0 then RomanNumerals.to_roman(num)
  when 1 then ("A".ord + num - 1).chr
  when 2 then num.to_s
  end
end
annex_name_lbl(clause, num) click to toggle source
# File lib/isodoc/un/xref.rb, line 100
def annex_name_lbl(clause, num)
  l10n("<strong>#{@labels['annex']} #{num}</strong>")
end
annex_names(clause, num) click to toggle source
# File lib/isodoc/un/xref.rb, line 108
def annex_names(clause, num)
  hierarchical_asset_names(clause, num)
  leaf_section?(clause) and
    label_annex_leaf_section(clause, num, 1) and return
  @anchors[clause["id"]] = { label: annex_name_lbl(clause, num),
                             type: "clause", value: num,
                             xref: l10n("#{@labels['annex']} #{num}"), level: 1 }
  if a = single_annex_special_section(clause)
    annex_names1(a, "#{num}", 1)
  else
    i = 1
    clause.xpath(ns(SUBCLAUSES)).each do |c|
      next if c["unnumbered"] == "true"
      annex_names1(c, "#{num}.#{annex_levelnum(i, 2)}", 2)
      i += 1 if !leaf_section?(c)
    end
  end
end
annex_names1(clause, num, level) click to toggle source
# File lib/isodoc/un/xref.rb, line 127
def annex_names1(clause, num, level)
  leaf_section?(clause) and
    label_annex_leaf_section(clause, num, level) and return
  /\.(?<leafnum>[^.]+$)/ =~ num
  @anchors[clause["id"]] = { label: leafnum, xref: l10n("#{@labels['annex']} #{num}"),
                             level: level, type: "clause" }
  i = 1
  clause.xpath(ns("./clause | ./references")).each do |c|
    next if c["unnumbered"] == "true"
    annex_names1(c, "#{num}.#{annex_levelnum(i, level + 1)}", level + 1)
    i += 1 if !leaf_section?(c)
  end
end
back_anchor_names(docxml) click to toggle source
# File lib/isodoc/un/xref.rb, line 141
def back_anchor_names(docxml)
  docxml.xpath(ns("//annex")).each_with_index do |c, i|
    @paranumber = 0
    annex_names(c, RomanNumerals.to_roman(i + 1))
  end
  docxml.xpath(ns("//bibliography/clause |"\
                  "//bibliography/references")).each do |b|
    preface_names(b)
  end
  docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
    reference_names(ref)
  end
end
clause_names(docxml, sect_num) click to toggle source
# File lib/isodoc/un/xref.rb, line 23
def clause_names(docxml, sect_num)
  q = "//clause[parent::sections]"
  @paranumber = 0
  i = 0
  docxml.xpath(ns(q)).each do |c|
    section_names(c, i, 1)
    i += 1
  end
end
hierarchical_admonition_names(clause, num) click to toggle source
# File lib/isodoc/un/xref.rb, line 165
def hierarchical_admonition_names(clause, num)
  i = 0
  clause.xpath(ns(".//admonition")).each do |t|
    next if t["id"].nil? || t["id"].empty?
    i += 1 unless t["unnumbered"] == "true"
    @anchors[t["id"]] =
      anchor_struct("#{num}.#{i}", nil, @labels["admonition"], "box",
                    t["unnumbered"])
  end
end
hierarchical_asset_names(clause, num) click to toggle source
Calls superclass method
# File lib/isodoc/un/xref.rb, line 181
def hierarchical_asset_names(clause, num)
  super
  hierarchical_admonition_names(clause, num)
end
initial_anchor_names(d) click to toggle source
# File lib/isodoc/un/xref.rb, line 6
def initial_anchor_names(d)
  preface_names(d.at(ns("//preface/abstract")))
  preface_names(d.at(ns("//foreword")))
  preface_names(d.at(ns("//introduction")))
  d.xpath(ns("//preface/clause")).each do |c| 
    preface_names(c)
  end
  preface_names(d.at(ns("//acknowledgements")))
  sequential_asset_names(
    d.xpath(ns("//preface/abstract | //foreword | //introduction | "\
               "//preface/clause | //acknowledgements")))
  middle_section_asset_names(d)
  clause_names(d, 0)
  termnote_anchor_names(d)
  termexample_anchor_names(d)
end
label_annex_leaf_section(clause, num, lvl) click to toggle source
# File lib/isodoc/un/xref.rb, line 65
def label_annex_leaf_section(clause, num, lvl)
  @paranumber += 1
  @anchors[clause["id"]] = {label: @paranumber.to_s, 
                            xref: l10n("#{@labels['paragraph']} #{num}.#{@paranumber}"), 
                            level: lvl, type: "paragraph" }
end
label_leaf_section(clause, lvl) click to toggle source
# File lib/isodoc/un/xref.rb, line 58
def label_leaf_section(clause, lvl)
  @paranumber += 1
  @anchors[clause["id"]] = {label: @paranumber.to_s, 
                            xref: l10n("#{@labels['paragraph']} #{@paranumber}"), 
                            level: lvl, type: "paragraph" }
end
leaf_section?(clause) click to toggle source
# File lib/isodoc/un/xref.rb, line 52
def leaf_section?(clause)
  !clause.at(ns(NONTERMINAL)) &&
    !%w(definitions annex terms).include?(clause.name) &&
    clause.at(ns("./p | ./bibitem"))
end
levelnumber(num, lvl) click to toggle source
# File lib/isodoc/un/xref.rb, line 33
def levelnumber(num, lvl)
  case lvl % 3
  when 1 then RomanNumerals.to_roman(num)
  when 2 then ("A".ord + num - 1).chr
  when 0 then num.to_s
  end
end
section_names(clause, num, lvl) click to toggle source
# File lib/isodoc/un/xref.rb, line 72
def section_names(clause, num, lvl)
  return num if clause.nil?
  leaf_section?(clause) and label_leaf_section(clause, lvl) and return
  num = num + 1
  lbl = levelnumber(num, 1)
  @anchors[clause["id"]] = { label: lbl, level: lvl, type: "clause",
                             xref: l10n("#{@labels['clause']} #{lbl}") }
  i = 1
  clause.xpath(ns(NONTERMINAL)).each do |c|
    section_names1(c, "#{lbl}.#{levelnumber(i, lvl + 1)}", lvl + 1)
    i += 1 if !leaf_section?(c) && c["unnumbered"] != "true"
  end
  num
end
section_names1(clause, num, level) click to toggle source
# File lib/isodoc/un/xref.rb, line 87
def section_names1(clause, num, level)
  leaf_section?(clause) and label_leaf_section(clause, level) and return
  /\.(?<leafnum>[^.]+$)/ =~ num
  clause["unnumbered"] == "true" or
    @anchors[clause["id"]] = { label: leafnum, level: level, type: "clause",
                               xref: l10n("#{@labels['clause']} #{num}") }
  i = 1
  clause.xpath(ns(NONTERMINAL)).each do |c|
    section_names1(c, "#{num}.#{levelnumber(i, level + 1)}", level + 1)
    i += 1 if !leaf_section?(c) && c["unnumbered"] != "true"
  end
end
sequential_admonition_names(clause) click to toggle source
# File lib/isodoc/un/xref.rb, line 155
def sequential_admonition_names(clause)
  i = 0
  clause.xpath(ns(".//admonition")).each do |t|
    next if t["id"].nil? || t["id"].empty?
    i += 1 unless t["unnumbered"] == "true"
    @anchors[t["id"]] = anchor_struct(i.to_s, nil, @labels["admonition"],
                                      "box", t["unnumbered"])
  end
end
sequential_asset_names(clause) click to toggle source
Calls superclass method
# File lib/isodoc/un/xref.rb, line 176
def sequential_asset_names(clause)
  super
  sequential_admonition_names(clause)
end