http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/text-effect/?root=svn
TextEffecttというライブラリを作りました。
時間があればRubyForgeに登録するかも。
これはなに?
ANSIエスケープシーケンスを使って、テキストに色付けするライブラリです。
ANSIエスケープシーケンスが表示できないと、あんま意味ないっす。
サンプル
こーゆーコードを書くと
require 'text-effect' puts '赤'.fg_red.ef_bold puts '青'.fg_blue.ef_bold puts '赤'.fg_yellow.ef_bold puts 'どの花見ても'.ef_reverse puts 'きれいだな'.ef_underscore
こうなります。*1
こーゆーコードを書くと
require 'text-effect' TextEffect.effect($stdout, :fg_blue) do |out| out.puts((<<-EOS).ef_bold) <このテキストは青になります> じゅげむ じゅげむ ごこうの... EOS end
svn diffの出力を色づけする
以前書いたsvn diffの色付けが、もうちょいシンプルに書けます。
require 'text-effect' $stdin.each_line do |l| TextEffect.effect($stdout, :ef_bold) do |out| case l when /\A-/ out.puts l.fg_red when /\A\+/ out.puts l.fg_blue when /^\A\@/ out.puts l.fg_magenta else out.puts l end end end
svn diff -c 1995 text-effect.rb | ruby color.rb | lv -c
