diff(git diff)を綺麗に印刷したい

git diffとかの結果をコンソールで見ると、

こんな感じに色分けされて綺麗に見える。
しかし、テキストにしても綺麗に読めない。
というわけで、印刷できるようにスクリプトを作ってみました。

#!/usr/bin/env ruby
require 'cgi'
$KCODE="u"

data=""
f=open(ARGV[0],"r")
data=f.read
f.close

data.gsub!(/^\+(.*)$/){"<font color='green'>+#{CGI::escapeHTML($1)}</font>"}
data.gsub!(/^-(.*)$/){"<font color='red'>-#{CGI::escapeHTML($1)}</font>"}
data.gsub!(/\r\n|\n|\r/,"<br />\n")

html=<<-HTML
<html>
<head><title>diff2html</title></head>
<body>
#{data}
</body>
</html>
HTML
puts html

をdiff2html.rbという名前で保存しておきます。

git diff > hoge.txt
ruby diff2html.rb hoge.txt > hoge.html

って感じで変換し、ブラウザで見ると、

これだと綺麗に印刷できる。
すぐにできそうだったら作ったけど、
すでにどっかにありそうな気はする。