モジュールタグのエスケープ
おとといの日記(http://d.hatena.ne.jp/sshi/20040807#p5)にid:yukattiさんからコメントを頂く。
『整形済みテキストでモジュールタグをエスケープする方法としては、
1.preタグを使用して< >を実体参照に
か、
2.はてなダイアリーのスーパーpre機能を使う http://d.hatena.ne.jp/help#superpre
がより手軽で便利かと思います。』
ありがとうございます。そうですよね。僕もそう思ったので、superpreは試してみたんです。言葉が足りてなかったですが、おととい試して駄目だっていっていたのは、superpre*1のほうでした。
superpreって、>|| と ||<で囲むやつのことですよね?
試してもらえれば一番早いと思うのですがhotasinモジュールタグはsuperpreの中でも展開されてしまいます。その結果何が見えるかというと、そこにもうひとつhotasinリストが付くわけではなくて、hotasinリストを作るHTMLがエスケープされて表示されます。もう笑うしかないっていう、こんなかんじ。
<div class="hatena-module"> <div class="hatena-moduletitle"><a href="/hotasin">今現在話題の本(らしいよ)</a></div> <div class="hatena-modulebody"> <ul class="hatena-hotasin"> <li><a href="/asin/4798008532"><img src="http://images-jp.amazon.com/images/P/4798008532.09.THUMBZZZ.jpg" alt="解析魔法少女美咲ちゃんマジカル・オープン!" title="解析魔法少女美咲ちゃんマジカル・オープン!" class="asin"></a></li> <li><a href="/asin/4061823914"><img src="http://images-jp.amazon.com/images/P/4061823914.09.THUMBZZZ.jpg" alt="キマイラの新しい城" title="キマイラの新しい城" class="asin"></a></li> <li><a href="/asin/4150307652"><img src="http://images-jp.amazon.com/images/P/4150307652.09.THUMBZZZ.jpg" alt="豹頭王の行方 グイン・サーガ96巻" title="豹頭王の行方 グイン・サーガ96巻" class="asin"></a></li> <li><a href="/asin/4062125366"><img src="http://images-jp.amazon.com/images/P/4062125366.09.THUMBZZZ.jpg" alt="アフターダーク" title="アフターダーク" class="asin"></a></li> <li><a href="/asin/4798107042"><img src="http://images-jp.amazon.com/images/P/4798107042.09.THUMBZZZ.jpg" alt="はてなの本" title="はてなの本" class="asin"></a></li> <li><a href="/asin/B00014N7MI"><img src="http://images-jp.amazon.com/images/P/B00014N7MI.09.THUMBZZZ.jpg" alt="ジョゼと虎と魚たち 特別版 (初回限定生産2枚組)" title="ジョゼと虎と魚たち 特別版 (初回限定生産2枚組)" class="asin"></a></li> <li><a href="/asin/4150307660"><img src="http://images-jp.amazon.com/images/P/4150307660.09.THUMBZZZ.jpg" alt="復活の地 2" title="復活の地 2" class="asin"></a></li> <li><a href="/asin/4839914982"><img src="http://images-jp.amazon.com/images/P/4839914982.09.THUMBZZZ.jpg" alt="はてなダイアリーガイドブック―ウェブログでつながる新しいコミュニティ" title="はてなダイアリーガイドブック―ウェブログでつながる新しいコミュニティ" class="asin"></a></li> <li><a href="/asin/4840227543"><img src="http://images-jp.amazon.com/images/P/4840227543.09.THUMBZZZ.jpg" alt="ロボット妹―改め人類皆兄妹!~目醒めよ愛の妹力" title="ロボット妹―改め人類皆兄妹!~目醒めよ愛の妹力" class="asin"></a></li> <li><a href="/asin/4840227578"><img src="http://images-jp.amazon.com/images/P/4840227578.09.THUMBZZZ.jpg" alt="護くんに女神の祝福を! 4 (4)" title="護くんに女神の祝福を! 4 (4)" class="asin"></a></li> </ul> </div> </div>
ほらね。
しかも、このHTML、元ソースに埋めこまれてしまうので、戻すのがけっこう面倒です。バグ?
モジュールの展開タイミングと通常の記述ルールの解釈のタイミングが違う上に、エスケープのポリシーが一貫してないからなんだろうけど、モジュールタグの展開を防ぐには、実体参照を使うしかないのですか?モジュールエスケープモジュールはないのですか?
さあ、呪文を唱えてみよう。教えてはてなダイアリーの偉い人!!
*1:superpreって名前なんですね、これ.そのうち、supersuperpreとか、ultrasuperpreとかできそうな嫌な予感