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にも導入したいところだけど、どうだろうな。互換性が失われるのが難。利点もコレといってないしなぁ。
とりあえず変換してアップロードし、p
要素で括られていなかったら括るというコードを削除。「なんかここのコメントがオカシイよ!」とか変なところに気づいた人はご一報宜しくお願いします。