diff options
Diffstat (limited to 'sample/ripper/colorize.rb')
-rw-r--r-- | sample/ripper/colorize.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/sample/ripper/colorize.rb b/sample/ripper/colorize.rb new file mode 100644 index 0000000000..505e757013 --- /dev/null +++ b/sample/ripper/colorize.rb @@ -0,0 +1,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 |