class RDoc::Markup::PreProcess

def handle text, code_object = nil

def handle text, code_object = nil
  text.gsub!(/^([ \t]*#?[ \t]*):(\w+):([ \t]*)(.+)?\n/) do
    next $& if $3.empty? and $4 and $4[0, 1] == ':'
    prefix    = $1
    directive = $2.downcase
    param     = $4
    case directive
    when 'include' then
      filename = param.split[0]
      include_file filename, prefix
    else
      result = yield directive, param if block_given?
      case result
      when nil then
        code_object.metadata[directive] = param if code_object
        if RDoc::Markup::PreProcess.registered.include? directive then
          handler = RDoc::Markup::PreProcess.registered[directive]
          result = handler.call directive, param if handler
        else
          result = "#{prefix}:#{directive}: #{param}\n"
        end
      when false then
        result = "#{prefix}:#{directive}: #{param}\n"
      end
      result
    end
  end
  text
end