Class: IsoDoc::IHO::Xref

Inherits:
Generic::Xref
  • Object
show all
Defined in:
lib/isodoc/iho/xref.rb

Instance Method Summary collapse

Instance Method Details

#annex_anchor_names(docxml) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/isodoc/iho/xref.rb', line 43

def annex_anchor_names(docxml)
  clause_order_annex(docxml).each_with_index do |a, i|
    n = i.zero? ? Counter.new("@", skip_i: true) : Counter.new
    docxml.xpath(ns(a[:path]))
      .each do |c|
      annex_names(c, n.increment(c).print)
      a[:multi] or break
    end
  end
end

#annex_name_lbl(clause, num) ⇒ Object



13
14
15
16
# File 'lib/isodoc/iho/xref.rb', line 13

def annex_name_lbl(clause, num)
  lbl = annexlbl(clause["obligation"] == "informative")
  l10n("<strong>#{lbl} #{num}</strong>")
end

#annex_names(clause, num) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/isodoc/iho/xref.rb', line 18

def annex_names(clause, num)
  appendix_names(clause, num)
  lbl = annexlbl(clause["obligation"] == "informative")
  @anchors[clause["id"]] =
    { label: annex_name_lbl(clause, num), type: "clause", elem: lbl,
      xref: l10n("#{lbl} #{num}"), level: 1, value: num }
  if @klass.single_term_clause?(clause)
    annex_names1(clause.at(ns("./references | ./terms | ./definitions")),
                 num.to_s, 1)
  else
    i = Counter.new
    clause.xpath(ns("./clause | ./references | ./terms | ./definitions"))
      .each do |c|
      i.increment(c)
      annex_names1(c, "#{num}.#{i.print}", 2)
    end
  end
  hierarchical_asset_names(clause, num)
end

#annex_names1(clause, num, level) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/isodoc/iho/xref.rb', line 54

def annex_names1(clause, num, level)
  lbl = annexlbl(clause.at("./ancestor::xmlns:annex/@obligation")
      .text == "informative")
  @anchors[clause["id"]] =
    { label: num, xref: l10n("#{lbl} #{num}"),
      level: level, type: "clause" }
  i = Counter.new(0, prefix: "#{num}.")
  clause.xpath(ns("./clause | ./references | ./terms | ./definitions"))
    .each do |c|
    annex_names1(c, i.increment(c).print, level + 1)
  end
end

#annexlbl(cond) ⇒ Object



9
10
11
# File 'lib/isodoc/iho/xref.rb', line 9

def annexlbl(cond)
  cond ? @labels["appendix"] : @labels["annex"]
end

#appendix_names(clause, _num) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/isodoc/iho/xref.rb', line 67

def appendix_names(clause, _num)
  i = Counter.new
  clause.xpath(ns("./appendix")).each do |c|
    i.increment(c)
    @anchors[c["id"]] =
      anchor_struct(i.print, nil, @labels["appendix"], "clause")
    @anchors[c["id"]][:level] = 2
    @anchors[c["id"]][:container] = clause["id"]
  end
end

#clause_order_annex(_docxml) ⇒ Object



38
39
40
41
# File 'lib/isodoc/iho/xref.rb', line 38

def clause_order_annex(_docxml)
  [{ path: "//annex[not(@obligation = 'informative')]", multi: true },
   { path: "//annex[@obligation = 'informative']", multi: true }]
end

#section_names1(clause, num, level) ⇒ Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/isodoc/iho/xref.rb', line 78

def section_names1(clause, num, level)
  @anchors[clause["id"]] =
    { label: num, level: level,
      xref: l10n("#{@labels['subclause']} #{num}"),
      type: "clause", elem: @labels["subclause"] }
  i = Counter.new(0, prefix: "#{num}.")
  clause.xpath(ns(SUBCLAUSES)).each do |c|
    section_names1(c, i.increment(c).print, level + 1)
  end
end