Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

Term::ANSIColor::Markupというモジュールを作成した

追記: Term::ANSIColor::Tagという名前が微妙だなーと思ったので、Term::ANSIColor::Markupに変更しました。

System.Exit - TermColor - コンソールへの出力を HTML っぽく色付け♪にて公開されているtermcolorというライブラリが素敵だなと思ったので、Perlでも似たような感じで使えるようなものを作ってみた。

Term::ANSIColorは便利だけどインタフェイスがなんかちょっと難しい。Term::ANSIColor::Tagを使うと、HTMLっぽいタグでマークアップしたテキストをわたしてやるだけで、term向けに色付けされた文字列を簡単に得ることができます。使い方は以下の通り。簡単〜。

use Term::ANSIColor::Markup;

my $text = qq{aaa<red>bbb<bold>ccc</bold>ddd<black><on_yellow>eee</on_yellow></black>fff</red> &gt; ggg};

my $parser = Term::ANSIColor::Markup->new;
$parser->parse($text);
print $parser->text;

# or just call colorize method this way:

print Term::ANSIColor::Markup->colorize($text);

こんな感じになります。

f:id:antipop:20090302025944p:image

boldがちょっとわかりにくいですが、ちゃんど太字になってます。