class Kramdown::Extension

def boolean_value(val)

def boolean_value(val)
  val.downcase.strip != 'false' && !val.empty?
end

def parse_comment(parser, opts, body)

Just ignore everything and do nothing.
def parse_comment(parser, opts, body)
  nil
end

def parse_kdoptions(parser, opts, body)

def parse_kdoptions(parser, opts, body)
  warn("The extension 'kdoptions' is deprecated and has been renamed to 'options'")
  parse_options(parser, opts, body)
end

def parse_nokramdown(parser, opts, body)

def parse_nokramdown(parser, opts, body)
  warn("The extension 'nokramdown' is deprecated and has been renamed to 'nomarkdown'")
  parse_nomarkdown(parser, opts, body)
end

def parse_nomarkdown(parser, opts, body)

Add the body (if available) as :raw Element to the +parser.tree+.
def parse_nomarkdown(parser, opts, body)
  parser.tree.children << Element.new(:raw, body) if body.kind_of?(String)
end

def parse_options(parser, opts, body)

Update the document options with the options set in +opts+.
def parse_options(parser, opts, body)
  if val = opts.delete('auto_ids')
    parser.doc.options[:auto_ids] = boolean_value(val)
  end
  if val = opts.delete('filter_html')
    parser.doc.options[:filter_html] = val.split(/\s+/)
  end
  if val = opts.delete('footnote_nr')
    parser.doc.options[:footnote_nr] = Integer(val) rescue parser.doc.options[:footnote_nr]
  end
  if val = opts.delete('parse_block_html')
    parser.doc.options[:parse_block_html] = boolean_value(val)
  end
  if val = opts.delete('parse_span_html')
    parser.doc.options[:parse_span_html] = boolean_value(val)
  end
  opts.each {|k,v| parser.warning("Unknown kramdown options '#{k}'")}
end