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