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



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

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



11
12
13
14
# File 'lib/asciidoctor/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

#default_script(lang) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/asciidoctor/standoc/utils.rb', line 68

def default_script(lang)
  case lang
  when "ar", "fa"
    "Arab"
  when "ur"
    "Aran"
  when "ru", "bg"
    "Cyrl"
  when "hi"
    "Deva"
  when "el"
    "Grek"
  when "zh"
    "Hans"
  when "ko"
    "Kore"
  when "he"
    "Hebr"
  when "ja"
    "Jpan"
  else
    "Latn"
  end
end

#document_ns_attributes(_doc) ⇒ Object



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

def document_ns_attributes(_doc)
  nil
end

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



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

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



31
32
33
34
35
36
37
38
39
40
# File 'lib/asciidoctor/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("&#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>



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

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