TextEffect

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

*1:[http://www.ff.iij4u.or.jp/~nrt/lv/:title=lv]使って表示してます