module Metanorma::Standoc::Utils

Constants

NOKOHEAD
SUBCLAUSE_XPATH

Public Instance Methods

attr_code(attributes) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 42
def attr_code(attributes)
  attributes.compact.transform_values do |v|
    v.is_a?(String) ? HTMLEntities.new.decode(v) : v
  end
end
convert(node, transform = nil, opts = {}) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 11
def convert(node, transform = nil, opts = {})
  transform ||= node.node_name
  opts.empty? ? (send transform, node) : (send transform, node, opts)
end
dl_to_attrs(elem, dlist, name) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 67
def dl_to_attrs(elem, dlist, name)
  e = dlist.at("./dt[text()='#{name}']") or return
  val = e.at("./following::dd/p") || e.at("./following::dd") or return
  elem[name] = val.text
end
dl_to_elems(ins, elem, dlist, name) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 73
def dl_to_elems(ins, elem, dlist, name)
  a = elem.at("./#{name}[last()]")
  ins = a if a
  dlist.xpath("./dt[text()='#{name}']").each do |e|
    v = e.at("./following::dd")
    e = v.elements and e.size == 1 && e.first.name == "p" and v = e.first
    v.name = name
    ins.next = v
    ins = ins.next
  end
  ins
end
document_ns_attributes(_doc) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 16
def document_ns_attributes(_doc)
  nil
end
isodoc(lang, script, i18nyaml = nil) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 60
def isodoc(lang, script, i18nyaml = nil)
  conv = html_converter(EmptyAttr.new)
  i18n = conv.i18n_init(lang, script, i18nyaml)
  conv.metadata_init(lang, script, i18n)
  conv
end
noko(&block) click to toggle source

block for processing XML document fragments as XHTML, to allow for HTMLentities Unescape special chars used in Asciidoctor substitution processing

# File lib/metanorma/standoc/utils.rb, line 31
def noko(&block)
  doc = ::Nokogiri::XML.parse(NOKOHEAD)
  fragment = doc.fragment("")
  ::Nokogiri::XML::Builder.with fragment, &block
  fragment.to_xml(encoding: "US-ASCII", indent: 0).lines.map do |l|
    l.gsub(/>\n$/, ">").gsub(/\s*\n$/m, " ").gsub("–", "\u0096")
      .gsub("—", "\u0097").gsub("–", "\u0096")
      .gsub("—", "\u0097")
  end
end
term_expr(elem) click to toggle source
# File lib/metanorma/standoc/utils.rb, line 86
def term_expr(elem)
  "<expression><name>#{elem}</name></expression>"
end
wrap_in_para(node, out) click to toggle source

if the contents of node are blocks, output them to out; else, wrap them in <p>

# File lib/metanorma/standoc/utils.rb, line 50
def wrap_in_para(node, out)
  if node.blocks? then out << node.content
  else
    out.p { |p| p << node.content }
  end
end