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

#default_script(lang) ⇒ Object



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

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



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