forked from rubychan/coderay
/
taskpaper.rb
34 lines (27 loc) · 929 Bytes
/
taskpaper.rb
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