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
133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/isodoc/bipm/xref.rb', line 133 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
146 147 148 149 |
# File 'lib/isodoc/bipm/xref.rb', line 146 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
190 191 192 193 194 195 |
# File 'lib/isodoc/bipm/xref.rb', line 190 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
217 218 219 |
# File 'lib/isodoc/bipm/xref.rb', line 217 def annex_name_lbl(_clause, num) l10n("<strong>#{labelled_autonum(@annexlbl, num)}</strong>") end |
#annex_names(clause, num) ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/isodoc/bipm/xref.rb', line 151 def annex_names(clause, num) appendix_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
197 198 199 200 201 202 203 204 205 206 |
# File 'lib/isodoc/bipm/xref.rb', line 197 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
128 129 130 131 |
# File 'lib/isodoc/bipm/xref.rb', line 128 def clause_order_annex(_docxml) [{ path: "//annex[not(#{UNNUM})]", multi: true }, { path: "//annex[#{UNNUM}]", multi: true }] end |
#clause_order_main(docxml) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/isodoc/bipm/xref.rb', line 29 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
246 247 248 249 250 |
# File 'lib/isodoc/bipm/xref.rb', line 246 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
232 233 234 235 236 237 238 |
# File 'lib/isodoc/bipm/xref.rb', line 232 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
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/isodoc/bipm/xref.rb', line 41 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 25 |
# File 'lib/isodoc/bipm/xref.rb', line 14 def parse(docxml) @jcgm = docxml.at(ns(<<~XPATH))&.text == "JCGM" //bibdata/contributor[role/description = 'committee']/organization/subdivision[@type = 'Committee']/identifier[not(@type = 'full')] XPATH @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
97 98 99 100 101 102 103 104 |
# File 'lib/isodoc/bipm/xref.rb', line 97 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
61 62 63 64 65 66 67 68 69 |
# File 'lib/isodoc/bipm/xref.rb', line 61 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
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/isodoc/bipm/xref.rb', line 71 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
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/isodoc/bipm/xref.rb', line 106 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
240 241 242 243 244 |
# File 'lib/isodoc/bipm/xref.rb', line 240 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
221 222 223 224 225 226 227 228 229 230 |
# File 'lib/isodoc/bipm/xref.rb', line 221 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
171 172 173 174 |
# File 'lib/isodoc/bipm/xref.rb', line 171 def unnumbered_annex_anchors(lbl) { label: lbl, type: "clause", value: "", xref: (%{"#{lbl}"}), level: 1 } end |
#unnumbered_annex_names(clause) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/isodoc/bipm/xref.rb', line 176 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
208 209 210 211 212 213 214 215 |
# File 'lib/isodoc/bipm/xref.rb', line 208 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
87 88 89 90 91 92 93 94 95 |
# File 'lib/isodoc/bipm/xref.rb', line 87 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
118 119 120 121 122 123 124 125 126 |
# File 'lib/isodoc/bipm/xref.rb', line 118 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 |