module IsoDoc::Unece::BaseConvert

Constants

MIDDLE_CLAUSE
NONTERMINAL

Public Instance Methods

admonition_name_parse(node, div, name) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 196
def admonition_name_parse(node, div, name)
  div.p **{ class: "AdmonitionTitle", style: "text-align:center;" } do |p|
    lbl = anchor(node['id'], :label)
    lbl.nil? or p << l10n("#{@admonition_lbl} #{lbl}")
    name and !lbl.nil? and p << "&nbsp;&mdash; "
    name and name.children.each { |n| parse(n, div) }
  end
end
admonition_parse(node, out) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 205
def admonition_parse(node, out)
  name = node.at(ns("./name"))
  out.div **{ class: "Admonition" } do |t|
    admonition_name_parse(node, t, name) if name
    node.children.each do |n|
      parse(n, t) unless n.name == "name"
    end
  end
end
annex_levelnum(num, lvl) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 62
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(annex, name, div) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 13
def annex_name(annex, name, div)
  div.h1 **{ class: "Annex" } do |t|
    t << "#{anchor(annex['id'], :label)}"
    t.br
    t.b do |b|
      name&.children&.each { |c2| parse(c2, b) }
    end
  end
end
annex_name_lbl(clause, num) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 120
def annex_name_lbl(clause, num)
  l10n("<b>#{@annex_lbl} #{num}</b>")
end
annex_names(clause, num) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 124
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",
                             xref: "#{@annex_lbl} #{num}", level: 1 }
  i = 1
  clause.xpath(ns("./clause")).each do |c|
    annex_names1(c, "#{num}.#{annex_levelnum(i, 2)}", 2)
    i += 1 if !leaf_section?(c)
  end
end
annex_names1(clause, num, level) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 138
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: "#{@annex_lbl} #{num}",
                             level: level, type: "clause" }
  i = 1
  clause.xpath(ns("./clause | ./references")).each do |c|
    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/unece/base_convert.rb, line 151
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/unece/base_convert.rb, line 46
def clause_names(docxml, sect_num)
  q = "//clause[parent::sections]"
  @paranumber = 0
  docxml.xpath(ns(q)).each_with_index do |c, i|
    section_names(c, (i + sect_num), 1)
  end
end
fileloc(loc) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 29
def fileloc(loc)
  File.join(File.dirname(__FILE__), loc)
end
hierarchical_admonition_names(clause, num) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 175
def hierarchical_admonition_names(clause, num)
  i = 0
  clause.xpath(ns(".//admonition")).each do |t|
    i += 1 unless t["unnumbered"]
    next if t["id"].nil? || t["id"].empty?
    @anchors[t["id"]] =
      anchor_struct("#{num}.#{i}", nil, @admonition_lbl, "box",
                    t["unnumbered"])
  end
end
hierarchical_asset_names(clause, num) click to toggle source
Calls superclass method
# File lib/isodoc/unece/base_convert.rb, line 191
def hierarchical_asset_names(clause, num)
  super
  hierarchical_admonition_names(clause, num)
end
i18n_init(lang, script) click to toggle source
Calls superclass method
# File lib/isodoc/unece/base_convert.rb, line 23
def i18n_init(lang, script)
  super
  @admonition_lbl = "Box"
  @abstract_lbl = "Summary"
end
initial_anchor_names(d) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 35
def initial_anchor_names(d)
  preface_names(d.at(ns("//abstract")))
  preface_names(d.at(ns("//foreword")))
  preface_names(d.at(ns("//introduction")))
  sequential_asset_names(d.xpath(ns("//foreword | //introduction")))
  middle_section_asset_names(d)
  clause_names(d, 0)
  termnote_anchor_names(d)
  termexample_anchor_names(d)
end
inline_header_title(out, node, c1) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 215
def inline_header_title(out, node, c1)
  title = c1&.content || ""
  out.span **{ class: "zzMoveToFollowing" } do |s|
    if lbl = anchor(node['id'], :label)
      s << "#{lbl}. " unless @suppressheadingnumbers
      insert_tab(s, 1)
    end
    s << "#{title} "
  end
end
label_annex_leaf_section(clause, num, lvl) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 86
def label_annex_leaf_section(clause, num, lvl)
  @paranumber += 1
  @anchors[clause["id"]] = {label: @paranumber.to_s, 
                            xref: "paragraph #{num}.#{@paranumber}", 
                            level: lvl, type: "paragraph" }
end
label_leaf_section(clause, lvl) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 79
def label_leaf_section(clause, lvl)
  @paranumber += 1
  @anchors[clause["id"]] = {label: @paranumber.to_s, 
                            xref: "paragraph #{@paranumber}", 
                            level: lvl, type: "paragraph" }
end
leaf_section?(clause) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 73
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/unece/base_convert.rb, line 54
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
metadata_init(lang, script, labels) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 8
def metadata_init(lang, script, labels)
  @meta = Metadata.new(lang, script, labels)
  @meta.set(:toc, @toc)
end
section_names(clause, num, lvl) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 93
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("#{@clause_lbl} #{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)
  end
  num
end
section_names1(clause, num, level) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 108
def section_names1(clause, num, level)
  leaf_section?(clause) and label_leaf_section(clause, level) and return
  /\.(?<leafnum>[^.]+$)/ =~ num
  @anchors[clause["id"]] = { label: leafnum, level: level, type: "clause",
                             xref: l10n("#{@clause_lbl} #{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)
  end
end
sequential_admonition_names(clause) click to toggle source
# File lib/isodoc/unece/base_convert.rb, line 165
def sequential_admonition_names(clause)
  i = 0
  clause.xpath(ns(".//admonition")).each do |t|
    i += 1 unless t["unnumbered"]
    next if t["id"].nil? || t["id"].empty?
    @anchors[t["id"]] = anchor_struct(i.to_s, nil, @admonition_lbl,
                                      "box", t["unnumbered"])
  end
end
sequential_asset_names(clause) click to toggle source
Calls superclass method
# File lib/isodoc/unece/base_convert.rb, line 186
def sequential_asset_names(clause)
  super
  sequential_admonition_names(clause)
end