summaryrefslogtreecommitdiff
path: root/lib/coderay/scanners/taskpaper.rb
blob: c6eb3b3b294c23774c1681e5c354f2df0564cfbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module CodeRay
module Scanners
  
  class Taskpaper < Scanner
    
    register_for :taskpaper
    file_extension 'taskpaper'
    
  protected
    
    def scan_tokens encoder, options
      until eos?
        if match = scan(/^\S.*:.*$/)                  # project
          encoder.text_token(match, :project)
        elsif match = scan(/^-.+@done(?:\(.*)?.*$/)   # completed task
          encoder.text_token(match, :complete)
        elsif match = scan(/^-.+$/)                   # task
          encoder.text_token(match, :plain)
        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
    
  end
  
end
end