この記事は半年以上前に書いたものです。情報の信憑性を疑ってください。また、コメントの受付は終了しました。

2007/09/01 00:45

今度こそ、空行・blockquote・pre・code対応のhtml_text_transform完成

事の顛末

まず、気軽に「html_text_transformをblockquoteとcodeに対応させる」と言った感じで、mt/lib/MT/Util.pmにあるhtml_text_transformをいじり始めたのがきっかけです。と言うのも、<blockquote>の不具合は知っていたから修正したのです。これをすれば、空行がある<blockquote>でも大丈夫だと何故か勘違いしていたのがまずかった。。見事に、html_text_transformにはまる。。

でも、がんばって何とかその日(土曜日)の夜には空行ありのblockquoteやcodeなどに対応したhtml_text_transform完成!させました。もうこりごりといった感じです。

しかし、ふとしたタイミングで、Validatorしちゃいました。

character data is not allowed here.

You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include:
putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>), or
forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes), or
using XHTML-style self-closing tags (such as <meta ... />) in HTML 4.01 or earlier. To fix, remove the extra slash ('/') character. For more information about the reasons for this, see Empty elements in SGML, HTML, XML, and XHTML.

んあ?<blockquote>の中に文字データはおけないよって言われた!!になりました。え、そうなの?と思って仕様を確認すると、Transitionalでは文字データおっけーなのですが、Strictの場合は文字データえぬじーなのです。あう。

てかまぁ、よくよく考えてみたらその通りですよね。<blockquote>はあくまでもblockquoteだし。

と言うことで、<blockquote>の内部にもhtml_text_transformしてあげなければいけません。今までだと、<br />のみの付加でしたからダメダメです。ごめんなさい、プライベートだけStrict大好きなのです。パブリックはTransitionalじゃないと仕事になりませんけどね。みなさまtarget="_blank"大好きだから。

まぁ、ごにょごにょとコードを書き足しまして、完成しました。今度こそ。このエントリーでも<blockquote>を使っているのでソースを表示していただければどうなっているのか分かると思います。と言うか、html_text_transformの確認用エントリのソースと、実際のEntryBodyの内容を見た方がいいかも?ごちゃごちゃさせすぎかもだけど。

10行程度だったhtml_text_transformですが、いつの間にか80行くらいになっていたよ(; 行き当たりばったりで書いていったプログラムだったので無駄が多いのですけど。効率よくすれば70行くらいになるかな。。

てか、致命的な問題が一つ残っているんだけど、それはその場面に出会ったら修正しよう。。

関連するエントリー
MovableType
前後のエントリー
Old: はてなブックマーク、delicious等のソーシャルブックマークにアドレス変更の依頼は出来ないのだろうか。。
New: やっとmixiでも更新されました。。