無謀な話?

2017/12/08

 掲示板をXHTML1.1で書こう…というのは、一見かなり無謀かもしれません。何しろユーザーは何書いてくるか分からないんですから。
タグは当然使用禁止にするとしても、わたしだってよくする、空行を何個か作られたりしたらたちまちエラーが出てしまいます(文法上はエラーにならないかもしれませんが…)。

 いちおう、改行をbrに置き換えるという方法から離れて、空行以外の行をすべて段落としてみます。

  s/^(.+)$/<p>1

/gm;

 しかしこれではどんな行でも同じ間隔のマージンが出来てしまいます。意味段落と形式段落の違いを表現できません。
なので、はてなと同じように(?)完全な空行にbrをはさんでみると…。

  s/^$/<br />/gm;
  s/^(.+)$/<p>1

/gm;

 これでも二つ以上空行をあけられると対処できません。

 文法に厳格な、ばけらさんのところの掲示板を見てみると…。
おお、二つ以上続く改行は、意味段落の区切りと見なされ、すべての意味段落がdivで囲まれています。すごい・・・。


 これらを現実的なスピードで処理するにはどうすればいいんでしょう?わたしにはせいぜい、文章を改行で区切ってリストに入れ、一行ずつ処理する方法しか思いつかないんですが…。
大体はてなのリスト構文もそうです。どのタイミングでulタグを入れて実装してるのかさっぱり。正規表現は奥が深いなぁ…*1。


 …思ったのは、ValidなXHTMLを書くことはさほど難しくないですが、ValidなXHTMLを出力するCGIを書くのは難しいということです。うーん…。

*1:そういえば今使っている掲示板CGIで、複雑にネストしている(?)正規表現の構文を見ましたが…。あそこまではまだわたしには出来ませんねえ…