Module: Coradoc::AsciiDoc::Parser::Admonition
- Defined in:
- lib/coradoc/asciidoc/parser/admonition.rb
Instance Method Summary collapse
- #admonition_line ⇒ Object
- #admonition_type ⇒ Object
-
#case_insensitive_str(s) ⇒ Object
Match a single style name case-insensitively.
Instance Method Details
#admonition_line ⇒ Object
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_type ⇒ Object
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 |