Wiki SyntaxとHTML

NanoWikiを作ってて思ったんだけど、Wiki SyntaxとHTMLの関係って難しいすな。

そもそも

フォーム入力 → HTMLエスケープ → HTML変換→HTML出力

って感じに処理させるのが全うな考え方だと思うわけです。

Text::Markdownの場合、特殊文字(&とか<とか>とか)の実態参照変換はしてくれるけどMarkdown自体がHTMLを許容する記法なのでHTMLタグはエスケープしてくれない。
じゃあということで、HTMLエスケープしてからText::Markdownに渡すと&が二重エスケープされてしまう。

Text::Hatena(0.20)の場合、内部では一切HTMLエスケープしてくれてない。
のでHTMLエスケープしてからText::Hatenaに渡す必要があるんだけど、pre記法などで<>を使っているのでそこを避ける処理を書く必要がある。

ので、自前でParser書いたほうが楽な気がしてきたぬ。