module MaRuKu::In::Markdown

Constants

BlockExtensions

Hash Regexp -> Block

SpanExtensions

Hash String -> Extension

SpanExtensionsTrigger

Hash Fixnum -> name

Public Class Methods

register_block_extension(args) click to toggle source
# File lib/maruku/input/extensions.rb, line 41
def self.register_block_extension(args)
  regexp = args[:regexp]
  BlockExtensions[regexp] = (args[:handler] || raise("No blocks passed"))
end
register_span_extension(args) click to toggle source
# File lib/maruku/input/extensions.rb, line 31
def self.register_span_extension(args)
  e = SpanExtension.new
  e.chars = [*args[:chars]]
  e.regexp = args[:regexp]
  e.block = args[:handler] || raise("No blocks passed")
  e.chars.each do |c|
    (SpanExtensionsTrigger[c] ||= []).push e
  end
end

Public Instance Methods

any_matching_block_extension?(line) click to toggle source
# File lib/maruku/input/extensions.rb, line 60
def any_matching_block_extension?(line)
  BlockExtensions.each_key do |reg|
    m = reg.match(line)
    return m if m
  end
  false
end
check_block_extensions(src, con, line) click to toggle source
# File lib/maruku/input/extensions.rb, line 49
def check_block_extensions(src, con, line)
  BlockExtensions.each do |reg, block|
    if reg.match(line)
      block = BlockExtensions[reg]
      accepted =  block.call(doc, src, con)
      return true if accepted
    end
  end
  false # not special
end
check_span_extensions(src, con) click to toggle source
# File lib/maruku/input/extensions.rb, line 18
def check_span_extensions(src, con)
  c = src.cur_char
  if extensions = SpanExtensionsTrigger[c]
    extensions.each do |e|
      if e.regexp && src.next_matches(e.regexp)
        return true if e.block.call(doc, src, con)
      end
    end
  end

  false # not special
end