blob: 505e757013bc84e1fff60c0fbcf1f7e7b44264ab (
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
|
require 'ripper/filter'
class ColorizeFilter < Ripper::Filter
def on_default(event, tok, f)
f << escape(tok)
end
def on_comment(tok, f)
f << %Q[<span class="comment">#{escape(tok)}</span>]
end
def on_tstring_content(tok, f)
f << %Q[<span class="string">#{escape(tok)}</span>]
end
ESC = {
'&' => '&',
'<' => '<',
'>' => '>'
}
def escape(str)
tbl = ESC
str.gsub(/[&<>]/) {|ch| tbl[ch] }
end
end
if $0 == __FILE__
ColorizeFilter.new(ARGF).parse($stdout)
end
|