Text::Trac - Trac Wiki 記法パーサ #0

id:drawnboy さんがつくった Catlxom::Plugin::Format::Hatena を見て、「お、それいい!」と思ったんだけど、そもそも自分ははてダ使っていなくて、この手の記法で唯一使ってるのは Trac の Wiki 記法 なので、Catlxom::Plugin::Format::Trac が欲しいな、と思ったわけですが、Perl のパーサがないんですよね。

で、IRC の #catlxom での会話の流れで、自分が Text::Trac をつくることになりました。といってもまだつくりかけなので、CPAN にアップするのはまだ先になりそう。とりあえず興味ある方は以下の要領で取得してみてください。

svn co http://svn.mizzy.org/public/library/perl/trunk/Text-Trac

もうほとんど Text::Hatena のコードそのまんまです。id:jkondo さんid:tociyuki さん に感謝感謝です。

とりあえず

= heading1 =

から

<h1 id="heading1">heading1</h1>

への変換のみ実装済み。

Text::Hatena と異なる点は、

my $p = Text::Trac->new(
    custom_notation => {
        h1node => '<p>$1</p>',
    },
);

などと指定すると、

= heading1 =

<p>heading1</p>

と変換する、といった感じで、記法をカスタマイズすることができます。また、

my $p = Text::Trac->new(
    min_heading_level => 2,
);

と指定すると、

= heading1 =

<h2 id="heading1">heading1</h2>

と変換されます。なぜこんな機能をつけたかというと、catlxom プラグインとして使うことを考えた場合、通常 h1 はブログのトップ見出し、h2 はエントリのタイトルに使われるので、エントリの中では h3 以降を使うことになるかと思います。

だからといってエントリを書くときにいちいち、「えーと、h3 にしないといけないから、 === hogehoge === だな」とかやるのもうざいので、こんな機能をつけてみました。