class CodeRay::Scanners::Taskpaper

def scan_tokens encoder, options

def scan_tokens encoder, options
  until eos?
    if match = scan(/\S.*:.*$/)                  # project
      encoder.text_token(match, :namespace)
    elsif match = scan(/-.+@done.*/)             # completed task
      encoder.text_token(match, :done)
    elsif match = scan(/-(?:[^@\n]+|@(?!due))*/) # task
      encoder.text_token(match, :plain)
    elsif match = scan(/@due.*/)                 # comment
      encoder.text_token(match, :important)
    elsif match = scan(/.+/)                     # comment
      encoder.text_token(match, :comment)
    elsif match = scan(/\s+/)                    # space
      encoder.text_token(match, :space)
    else                                         # other
      encoder.text_token getch, :error
    end
  end
  
  encoder
end