Module: Coradoc::AsciiDoc::Parser::Admonition

Defined in:
lib/coradoc/asciidoc/parser/admonition.rb

Instance Method Summary collapse

Instance Method Details

#admonition_lineObject



25
26
27
28
29
30
31
# File 'lib/coradoc/asciidoc/parser/admonition.rb', line 25

def admonition_line
  admonition_type.as(:admonition_type) >> str(': ') >>
    (text_any.as(:text) >>
    line_ending.as(:line_break)
    ).repeat(1)
    .as(:content)
end

#admonition_typeObject



17
18
19
20
21
22
23
# File 'lib/coradoc/asciidoc/parser/admonition.rb', line 17

def admonition_type
  styles = Coradoc::AsciiDoc::Transform::ElementTransformers::AdmonitionStyles.all_styles
  styles.reduce(nil) do |acc, style|
    matcher = case_insensitive_str(style)
    acc.nil? ? matcher : (acc | matcher)
  end
end

#case_insensitive_str(s) ⇒ Object

Match a single style name case-insensitively. Each character class ‘[Xx]` lets the same alternation accept note, Note, and NOTE without three separate str() branches per style.



10
11
12
13
14
15
# File 'lib/coradoc/asciidoc/parser/admonition.rb', line 10

def case_insensitive_str(s)
  s.chars.reduce(nil) do |acc, ch|
    node = match("[#{ch.upcase}#{ch.downcase}]")
    acc.nil? ? node : (acc >> node)
  end
end