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 === だな」とかやるのもうざいので、こんな機能をつけてみました。