Module: Metanorma::Standoc::Utils

Included in:
Cleanup::SpansToBibitem, Converter, TermLookupCleanup
Defined in:
lib/metanorma/standoc/utils.rb

Defined Under Namespace

Classes: EmptyAttr

Constant Summary collapse

SUBCLAUSE_XPATH =
"//clause[not(parent::sections)]" \
"[not(ancestor::boilerplate)]".freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.adoc2xml(text, flavour) ⇒ Object

wrapped in <sections>



81
82
83
84
85
86
87
# File 'lib/metanorma/standoc/utils.rb', line 81

def adoc2xml(text, flavour)
  Nokogiri::XML(text).root and return text
  c = Asciidoctor.convert("= X\nA\n:semantic-metadata-headless: true\n" \
                          ":novalid:\n\n#{text}\n",
                          backend: flavour, header_footer: true)
  Nokogiri::XML(c).at("//xmlns:sections")
end

Instance Method Details

#asciimath_key(sym) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/metanorma/standoc/utils.rb', line 89

def asciimath_key(sym)
  key = sym.dup
  key.traverse do |n|
    if n.name == "stem" && a = n.at(".//asciimath")
      n.children = @c.encode(
        @c.decode(grkletters(a.text)), :basic
      )
    end
  end
  key.xpath(".//asciimath").each(&:remove)
  Nokogiri::XML(key.to_xml)
end

#attr_code(attributes) ⇒ Object



24
25
26
# File 'lib/metanorma/standoc/utils.rb', line 24

def attr_code(attributes)
  Metanorma::Utils::attr_code(attributes)
end

#convert(node, transform = nil, opts = {}) ⇒ Object



11
12
13
14
# 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

#csv_split(text, delim = ";") ⇒ Object



28
29
30
31
# File 'lib/metanorma/standoc/utils.rb', line 28

def csv_split(text, delim = ";")
  Metanorma::Utils::csv_split(@c.decode(text), delim)
    .map { |x| @c.encode(x, :basic, :hexadecimal) }
end

#dl_to_attrs(elem, dlist, name) ⇒ Object



52
53
54
# File 'lib/metanorma/standoc/utils.rb', line 52

def dl_to_attrs(elem, dlist, name)
  Metanorma::Utils::dl_to_attrs(elem, dlist, name)
end

#dl_to_elems(ins, elem, dlist, name) ⇒ Object



56
57
58
# File 'lib/metanorma/standoc/utils.rb', line 56

def dl_to_elems(ins, elem, dlist, name)
  Metanorma::Utils::dl_to_elems(ins, elem, dlist, name)
end

#document_ns_attributes(_doc) ⇒ Object



16
17
18
# File 'lib/metanorma/standoc/utils.rb', line 16

def document_ns_attributes(_doc)
  nil
end

#grkletters(text) ⇒ Object



102
103
104
105
106
# File 'lib/metanorma/standoc/utils.rb', line 102

def grkletters(text)
  text.gsub(/\b(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|
                lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|
                psi|omega)\b/xi, "&\\1;")
end

#isodoc(lang, script, locale, i18nyaml = nil) ⇒ Object



45
46
47
48
49
50
# File 'lib/metanorma/standoc/utils.rb', line 45

def isodoc(lang, script, locale, i18nyaml = nil)
  conv = presentation_xml_converter(EmptyAttr.new)
  i18n = conv.i18n_init(lang, script, locale, i18nyaml)
  conv.(lang, script, locale, i18n)
  conv
end


64
65
66
67
68
69
70
# File 'lib/metanorma/standoc/utils.rb', line 64

def link_unwrap(para)
  elems = para.elements
  if elems.size == 1 && elems[0].name == "link"
    para.at("./link").replace(elems[0]["target"].strip)
  end
  para
end

#noko(&block) ⇒ Object



20
21
22
# File 'lib/metanorma/standoc/utils.rb', line 20

def noko(&block)
  Metanorma::Utils::noko(@script, &block)
end

#refid?(ref) ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/metanorma/standoc/utils.rb', line 108

def refid?(ref)
  @refids.include? ref
end

#term_expr(elem) ⇒ Object



60
61
62
# File 'lib/metanorma/standoc/utils.rb', line 60

def term_expr(elem)
  "<expression><name>#{elem}</name></expression>"
end

#to_xml(node) ⇒ Object



37
38
39
40
# File 'lib/metanorma/standoc/utils.rb', line 37

def to_xml(node)
  node.to_xml(encoding: "UTF-8", indent: 2,
              save_with: Nokogiri::XML::Node::SaveOptions::AS_XML)
end

#wrap_in_para(node, out) ⇒ Object



33
34
35
# File 'lib/metanorma/standoc/utils.rb', line 33

def wrap_in_para(node, out)
  Metanorma::Utils::wrap_in_para(node, out)
end

#xml_encode(text) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/metanorma/standoc/utils.rb', line 72

def xml_encode(text)
  @c.encode(text, :basic, :hexadecimal)
    .gsub("&amp;gt;", ">").gsub("&amp;lt;", "<").gsub("&amp;amp;", "&")
    .gsub("&gt;", ">").gsub("&lt;", "<").gsub("&amp;", "&")
    .gsub("&quot;", '"').gsub("&#xa;", "\n").gsub("&amp;#", "&#")
    .gsub("&apos;", "'")
end