Module: Coradoc::Util::AsciiDoc

Defined in:
lib/coradoc/util/asciidoc.rb

Overview

AsciiDoc-specific utility functions

Class Method Summary collapse

Class Method Details

.escape_characters(content, escape_chars: []) ⇒ String

Escape special AsciiDoc characters in content

Examples:

Escape asterisks for bold text

escape_characters("2 * 3 = 6", escape_chars: ["*"])
# => "2 \\* 3 = 6"

Parameters:

  • content (String)

    The content to escape

  • escape_chars (Array<String>) (defaults to: [])

    Characters to escape (e.g., [“*”, “_”, “#”])

Returns:

  • (String)

    The escaped content



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/coradoc/util/asciidoc.rb', line 41

def self.escape_characters(content, escape_chars: [])
  return '' if content.nil?
  return content if escape_chars.empty?

  result = content.to_s
  escape_chars.each do |char|
    # Escape the character with backslash, but only if not already escaped
    result = result.gsub(/(?<!\\)#{Regexp.escape(char)}/, "\\#{char}")
  end
  result
end

.serialize(model) ⇒ String

Serialize a Coradoc model to AsciiDoc string

Examples:

Serialize a document

serialize(document)  # => "= Title\n\nContent"

Parameters:

  • model (Object)

    The model to serialize

Returns:

  • (String)

    The AsciiDoc representation



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/coradoc/util/asciidoc.rb', line 15

def self.serialize(model)
  return '' if model.nil?
  return model if model.is_a?(String)

  case model
  when Coradoc::AsciiDoc::Model::Base
    model.to_adoc
  when Array
    model.map { |item| serialize(item) }.join("\n")
  when Hash
    model.map { |k, v| "#{k}: #{serialize(v)}" }.join("\n")
  else
    model.to_s
  end
end

.unescape_characters(content, escape_chars: []) ⇒ String

Unescape AsciiDoc characters in content

Parameters:

  • content (String)

    The content to unescape

  • escape_chars (Array<String>) (defaults to: [])

    Characters to unescape

Returns:

  • (String)

    The unescaped content



59
60
61
62
63
64
65
66
67
68
# File 'lib/coradoc/util/asciidoc.rb', line 59

def self.unescape_characters(content, escape_chars: [])
  return '' if content.nil?
  return content if escape_chars.empty?

  result = content.to_s
  escape_chars.each do |char|
    result = result.gsub("\\#{char}", char)
  end
  result
end