Module: Asciidoctor::Standoc::Utils

Included in:
Converter
Defined in:
lib/asciidoctor/standoc/utils.rb

Defined Under Namespace

Classes: EmptyAttr

Constant Summary collapse

NOKOHEAD =
<<~HERE.freeze
    <!DOCTYPE html SYSTEM
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head> <title></title> <meta charset="UTF-8" /> </head>
    <body> </body> </html>
HERE
SUBCLAUSE_XPATH =
"//clause[not(parent::sections)]"\
"[not(ancestor::boilerplate)]".freeze

Instance Method Summary collapse

Instance Method Details

#attr_code(attributes) ⇒ Object



43
44
45
46
47
48
# File 'lib/asciidoctor/standoc/utils.rb', line 43

def attr_code(attributes)
  attributes = attributes.reject { |_, val| val.nil? }.map
  attributes.map do |k, v|
    [k, (v.is_a? String) ? HTMLEntities.new.decode(v) : v]
  end.to_h
end

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



12
13
14
15
# File 'lib/asciidoctor/standoc/utils.rb', line 12

def convert(node, transform = nil, opts = {})
  transform ||= node.node_name
  opts.empty? ? (send transform, node) : (send transform, node, opts)
end

#document_ns_attributes(_doc) ⇒ Object



17
18
19
# File 'lib/asciidoctor/standoc/utils.rb', line 17

def document_ns_attributes(_doc)
  nil
end

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



62
63
64
65
66
67
# File 'lib/asciidoctor/standoc/utils.rb', line 62

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

#noko(&block) ⇒ Object

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



32
33
34
35
36
37
38
39
40
41
# File 'lib/asciidoctor/standoc/utils.rb', line 32

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("&#150;", "\u0096").
      gsub("&#151;", "\u0097").gsub("&#x96;", "\u0096").
      gsub("&#x97;", "\u0097")
  end
end

#wrap_in_para(node, out) ⇒ Object

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



52
53
54
55
56
57
# File 'lib/asciidoctor/standoc/utils.rb', line 52

def wrap_in_para(node, out)
  if node.blocks? then out << node.content
  else
    out.p { |p| p << node.content }
  end
end