Class: IsoDoc::Bipm::Xref
- Inherits:
-
Xref
- Object
- Xref
- IsoDoc::Bipm::Xref
- Defined in:
- lib/isodoc/bipm/xref.rb
Constant Summary collapse
- UNNUM =
"@unnumbered = 'true'".freeze
- NUMBERED_SUBCLAUSES =
<<~XPATH.freeze ./clause[not(#{UNNUM})] | ./references[not(#{UNNUM})] | ./term[not(#{UNNUM})] | ./terms[not(#{UNNUM})] | ./definitions[not(#{UNNUM})] XPATH
- UNNUMBERED_SUBCLAUSES =
<<~XPATH.freeze ./clause[#{UNNUM}] | ./references[#{UNNUM}] | ./term[#{UNNUM}] | ./terms[#{UNNUM}] | ./definitions[#{UNNUM}] XPATH
Instance Attribute Summary collapse
-
#jcgm ⇒ Object
Returns the value of attribute jcgm.
Instance Method Summary collapse
- #annex_anchor_names(docxml) ⇒ Object
- #annex_name_anchors(clause, num) ⇒ Object
- #annex_name_anchors1(clause, num, level) ⇒ Object
- #annex_name_lbl(_clause, num) ⇒ Object
- #annex_names(clause, num) ⇒ Object
- #annex_names1(clause, parentnum, num, level) ⇒ Object
- #clause_order_annex(_docxml) ⇒ Object
- #clause_order_main(docxml) ⇒ Object
- #hierarchical_figure_names(clause, num) ⇒ Object
- #initial_anchor_names(doc) ⇒ Object
-
#initialize(lang, script, klass, i18n, options = {}) ⇒ Xref
constructor
A new instance of Xref.
- #main_anchor_names(xml) ⇒ Object
- #parse(docxml) ⇒ Object
- #section_name1_anchors(clause, num, level) ⇒ Object
- #section_name_anchors(clause, num, level) ⇒ Object
- #section_names(clause, num, lvl) ⇒ Object
- #section_names1(clause, parentnum, num, level) ⇒ Object
- #sequential_figure_names(clause, container: false) ⇒ Object
- #sequential_formula_names(clause, container: false) ⇒ Object
- #unnumbered_annex_anchors(lbl) ⇒ Object
- #unnumbered_annex_names(clause) ⇒ Object
- #unnumbered_annex_names1(clause, level) ⇒ Object
- #unnumbered_section_names(clause, lvl) ⇒ Object
- #unnumbered_section_names1(clause, level) ⇒ Object
Constructor Details
Instance Attribute Details
#jcgm ⇒ Object
Returns the value of attribute jcgm.
7 8 9 |
# File 'lib/isodoc/bipm/xref.rb', line 7 def jcgm @jcgm end |
Instance Method Details
#annex_anchor_names(docxml) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/isodoc/bipm/xref.rb', line 132 def annex_anchor_names(docxml) n = @jcgm ? Counter.new("@", skip_i: true) : Counter.new(0) clause_order_annex(docxml).each_with_index do |a, i| docxml.xpath(ns(a[:path])).each do |c| if i.zero? n.increment(c) annex_names(c, n.print) else unnumbered_annex_names(c) end a[:multi] or break end end end |
#annex_name_anchors(clause, num) ⇒ Object
145 146 147 148 |
# File 'lib/isodoc/bipm/xref.rb', line 145 def annex_name_anchors(clause, num) { label: annex_name_lbl(clause, num), type: "clause", value: num.to_s, xref: labelled_autonum(@annexlbl, num), level: 1, elem: @annexlbl } end |
#annex_name_anchors1(clause, num, level) ⇒ Object
188 189 190 191 192 193 |
# File 'lib/isodoc/bipm/xref.rb', line 188 def annex_name_anchors1(clause, num, level) lbl = @jcgm ? "" : @annexlbl @anchors[clause["id"]] = { label: num, xref: labelled_autonum(lbl, num), #l10n("#{lbl}#{num}"), level: level, type: "clause", elem: lbl } end |
#annex_name_lbl(_clause, num) ⇒ Object
215 216 217 |
# File 'lib/isodoc/bipm/xref.rb', line 215 def annex_name_lbl(_clause, num) l10n("<strong>#{labelled_autonum(@annexlbl, num)}</strong>") end |
#annex_names(clause, num) ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/isodoc/bipm/xref.rb', line 150 def annex_names(clause, num) lbl = semx(clause, num) prefix = @jcgm ? "" : "A" lbl1 = semx(clause, "#{prefix}#{num}") @anchors[clause["id"]] = annex_name_anchors(clause, lbl) if @klass.single_term_clause?(clause) annex_names1(clause.at(ns("./references | ./terms | ./definitions")), nil, "#{prefix}#{num}", 1) else i = Counter.new(0) clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c| annex_names1(c, lbl1, i.increment(c).print, 2) end clause.xpath(ns(UNNUMBERED_SUBCLAUSES)) .each { |c| unnumbered_annex_names1(c, 2) } end hierarchical_asset_names(clause, "#{prefix}#{num}") end |
#annex_names1(clause, parentnum, num, level) ⇒ Object
195 196 197 198 199 200 201 202 203 204 |
# File 'lib/isodoc/bipm/xref.rb', line 195 def annex_names1(clause, parentnum, num, level) lbl = clause_number_semx(parentnum, clause, num) annex_name_anchors1(clause, lbl, level) i = Counter.new(0) clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c| annex_names1(c, lbl, i.increment(c).print, level + 1) end clause.xpath(ns(UNNUMBERED_SUBCLAUSES)) .each { |c| unnumbered_annex_names1(c, level + 1) } end |
#clause_order_annex(_docxml) ⇒ Object
127 128 129 130 |
# File 'lib/isodoc/bipm/xref.rb', line 127 def clause_order_annex(_docxml) [{ path: "//annex[not(#{UNNUM})]", multi: true }, { path: "//annex[#{UNNUM}]", multi: true }] end |
#clause_order_main(docxml) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/isodoc/bipm/xref.rb', line 28 def clause_order_main(docxml) @jcgm and return @iso.clause_order_main(docxml) [{ path: "//sections/clause[not(#{UNNUM})] | " \ "//sections/terms[not(#{UNNUM})] | " \ "//sections/definitions[not(#{UNNUM})] | " \ "//sections/references[not(#{UNNUM})]", multi: true }, { path: "//sections/clause[#{UNNUM}] | " \ "//sections/terms[#{UNNUM}] | " \ "//sections/definitions[#{UNNUM}] | " \ "//sections/references[#{UNNUM}]", multi: true }] end |
#hierarchical_figure_names(clause, num) ⇒ Object
244 245 246 247 248 |
# File 'lib/isodoc/bipm/xref.rb', line 244 def hierarchical_figure_names(clause, num) @jcgm or return super @iso.hierarchical_figure_names(clause, num) @anchors.merge!(@iso.get) end |
#initial_anchor_names(doc) ⇒ Object
230 231 232 233 234 235 236 |
# File 'lib/isodoc/bipm/xref.rb', line 230 def initial_anchor_names(doc) super if (@parse_settings.empty? || @parse_settings[:clauses]) && @jcgm @iso.introduction_names(doc.at(ns("//introduction"))) @anchors.merge!(@iso.get) end end |
#main_anchor_names(xml) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/isodoc/bipm/xref.rb', line 40 def main_anchor_names(xml) @jcgm and return super t = clause_order_main(xml) n = Counter.new t.each_with_index do |a, i| xml.xpath(ns(a[:path])).each do |c| i.zero? ? section_names(c, n, 1) : unnumbered_section_names(c, 1) a[:multi] or break end end end |
#parse(docxml) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/isodoc/bipm/xref.rb', line 14 def parse(docxml) @jcgm = docxml.at(ns("//bibdata/ext/editorialgroup/committee/" \ "@acronym"))&.value == "JCGM" @annexlbl = if @jcgm then @labels["iso_annex"] elsif docxml.at(ns("//bibdata/ext/structuredidentifier/appendix")) @labels["appendix"] else @labels["annex"] end super end |
#section_name1_anchors(clause, num, level) ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'lib/isodoc/bipm/xref.rb', line 96 def section_name1_anchors(clause, num, level) lbl = @jcgm ? "" : @labels['subclause'] xref = labelled_autonum(@labels[lbl], num) label = num @anchors[clause["id"]] = { label: num, level: level, xref: labelled_autonum(lbl, num), type: "clause", elem: lbl } end |
#section_name_anchors(clause, num, level) ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/isodoc/bipm/xref.rb', line 60 def section_name_anchors(clause, num, level) lbl = @jcgm ? "clause_jcgm" : "clause" xref = labelled_autonum(@labels[lbl], num) label = num c = clause_title(clause) and title = semx(clause, c, "title") @anchors[clause["id"]] = { label:, xref:, title:, level:, type: "clause", elem: @labels[lbl] } end |
#section_names(clause, num, lvl) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/isodoc/bipm/xref.rb', line 70 def section_names(clause, num, lvl) unnumbered_section_name?(clause) and return num num.increment(clause) lbl = semx(clause, num.print) section_name_anchors(clause, lbl, lvl) clause.xpath(ns(NUMBERED_SUBCLAUSES)) .each_with_object(clause_counter(0)) do |c, i| section_names1(c, lbl, i.increment(c).print, lvl + 1) end clause.xpath(ns(UNNUMBERED_SUBCLAUSES)) .each_with_object(clause_counter(0)) do |c, i| unnumbered_section_names1(c, lvl + 1) end num end |
#section_names1(clause, parentnum, num, level) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/isodoc/bipm/xref.rb', line 105 def section_names1(clause, parentnum, num, level) lbl = clause_number_semx(parentnum, clause, num) @anchors[clause["id"]] = section_name1_anchors(clause, lbl, level) i = Counter.new(0) clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c| section_names1(c, lbl, i.increment(c).print, level + 1) end clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).each do |c| unnumbered_section_names1(c, level + 1) end end |
#sequential_figure_names(clause, container: false) ⇒ Object
238 239 240 241 242 |
# File 'lib/isodoc/bipm/xref.rb', line 238 def sequential_figure_names(clause, container: false) @jcgm or return super @iso.sequential_figure_names(clause, container: container) @anchors.merge!(@iso.get) end |
#sequential_formula_names(clause, container: false) ⇒ Object
219 220 221 222 223 224 225 226 227 228 |
# File 'lib/isodoc/bipm/xref.rb', line 219 def sequential_formula_names(clause, container: false) c = Counter.new clause.xpath(ns(".//formula")).noblank.each do |t| @anchors[t["id"]] = anchor_struct( semx(t, c.increment(t).print), t, t["inequality"] ? @labels["inequality"] : @labels["formula"], "formula", { unnumb: t["unnumbered"], container: } ) end end |
#unnumbered_annex_anchors(lbl) ⇒ Object
169 170 171 172 |
# File 'lib/isodoc/bipm/xref.rb', line 169 def unnumbered_annex_anchors(lbl) { label: lbl, type: "clause", value: "", xref: (%{"#{lbl}"}), level: 1 } end |
#unnumbered_annex_names(clause) ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/isodoc/bipm/xref.rb', line 174 def unnumbered_annex_names(clause) lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]" lbl = semx(clause, lbl, "title") @anchors[clause["id"]] = unnumbered_annex_anchors(lbl) if @klass.single_term_clause?(clause) unnumbered_annex_names1(clause.at(ns("./references | ./terms | ./definitions")), 1) else clause.xpath(ns(SUBCLAUSES)) .each { |c| unnumbered_annex_names1(c, 2) } end hierarchical_asset_names(clause, lbl) end |
#unnumbered_annex_names1(clause, level) ⇒ Object
206 207 208 209 210 211 212 213 |
# File 'lib/isodoc/bipm/xref.rb', line 206 def unnumbered_annex_names1(clause, level) lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]" lbl = semx(clause, lbl, "title") @anchors[clause["id"]] = { label: lbl, xref: l10n(%{"#{lbl}"}), level: level, type: "clause" } clause.xpath(ns(SUBCLAUSES)) .each { |c| unnumbered_annex_names1(c, level + 1) } end |
#unnumbered_section_names(clause, lvl) ⇒ Object
86 87 88 89 90 91 92 93 94 |
# File 'lib/isodoc/bipm/xref.rb', line 86 def unnumbered_section_names(clause, lvl) lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]" lbl = semx(clause, lbl, "title") @anchors[clause["id"]] = { label: lbl, xref: l10n(%{"#{lbl}"}), level: lvl, type: "clause" } clause.xpath(ns(SUBCLAUSES)).each do |c| unnumbered_section_names1(c, lvl + 1) end end |
#unnumbered_section_names1(clause, level) ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'lib/isodoc/bipm/xref.rb', line 117 def unnumbered_section_names1(clause, level) lbl = clause.at(ns("./title"))&.text || "[#{clause['id']}]" lbl = semx(clause, lbl, "title") @anchors[clause["id"]] = { label: lbl, xref: %{"#{lbl}"}, level: level, type: "clause" } clause.xpath(ns(SUBCLAUSES)).each do |c| unnumbered_section_names1(c, level + 1) end end |