Customize writeback plugin #11

writebackの投稿されたコメントのマークアップをpでうまくどうにかするようにしてみました。うまいこと動いてる模様。

実装的には単純で、予め改行をタブ文字(\t)に変換しておき、

$str =~ s!\t{2,}!</p><p>!g;
$str =~ s!\t!<br />!g;
$str = "<p>$str</p>";

というコードで。2個以上の連続した改行を</p><p>に変換→残った改行を<br />に変換→全体を</p><p>要素で括るということですね。

writebackの新しいマークアップ機能のテストの始まり。

改行*1はbr要素に、改行*2以上はp要素に変換した上で、最後に全体をp要素で括るというありがちなもの。

できるかな?
できるかな?
できるかな?

writebackの新しいマークアップ機能のテストの終わり。

と、投稿すると、

<p>writebackの新しいマークアップ機能のテストの始まり。</p>
<p>改行*1はbr要素に、改行*2以上はp要素に変換した上で、最後に全体をp要素で括るというありがちなもの。</p>
<p>できるかな?<br />
できるかな?<br />
できるかな?</p>
<p>writebackの新しいマークアップ機能のテストの終わり。</p>

となります(データファイル上では改行は消えます)。

同時にテンプレにベタ書きしていたp要素を取っ払いました。そのため、今までのコメントを変換する必要がある(p要素で括られていないので)のですが、grepして置換するのすらメンドウなので、

$param{'comment'} = "<p>" . $param{'comment'} . "</p>" if $param{'comment'} !~ m!^<p>.+</p>$!;

というp要素で括られていなかったら括るというコードで逃げました。ヒマな時にちゃんと変換して、このコードは外すようにしよう。

blosxom starter kitにも導入したいところだけど、どうだろうな。互換性が失われるのが難。利点もコレといってないしなぁ。

追記@2004/08/29

とりあえず変換してアップロードし、p要素で括られていなかったら括るというコードを削除。「なんかここのコメントがオカシイよ!」とか変なところに気づいた人はご一報宜しくお願いします。