モジュールタグのエスケープ

おとといの日記(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とかできそうな嫌な予感

はてな記法の疑問

そもそも、pre*1とsuperpre*2って何が違うんだろう?
preはHTMLタグはエスケープしてくれない、superpreはHTMLタグもエスケープしてくれるってことかな。
でも どっちつかっても モジュールタグのエスケープはしてくれない、と。
こりゃやっぱり、ultra_super_preの出番では…

まさかと思い、同時にもしやと思う

モジュールタグのエスケープについて、

  • pre,superpre双方でエスケープしてくれないのはちょっとおかしい

ような気がして、単純な見落としをしてる気になってきました。整理しておくと、

  • モジュールタグをそのまま記述(ソースに書く)して
  • かつ、モジュールが展開されない

ようなエスケープの方法を求めています。

>と<を実体参照で書けばこんなふうに表示してくれるってのはわかってるんですが、いろんなことが楽にできるはてな記法(省略記法?)なのに、そんな方法をとらないといけないってのはちょっといただけないかなあ、と。
どうしてsuperpreでもエスケープしてくれないのだろう。

実は薄々真相には気がついています。早い話がモジュールタグを本文に直接書くと、他のところの解釈はすっとばして(だからpreもsuperpreも効かない)モジュールタグがHTMLに展開され、かつその結果が本文にそのまま埋めこまれるんでしょう。引用モジュール(http://d.hatena.ne.jp/help#bq)を実現するための仕様だと思いますけど。直すのけっこう面倒なんじゃないかと想像します。

てなことを書いていたら、またまたid:sugioさんからコメントが!その節はお世話になりました。
毎度毎度ありがとうございます。
呪文を唱えると、来てくれるってのは はてなダイアリー初心者には心強い限りですね。これはいいシステムだ。

[教えて]スーパーpreで未対応だったんですね。他のリスト生成型のモジュールも同様のようです。
現状では実体参照を使うしかないようですが、はてなに修正してほしいです。「はてなダイアリーへの要望」と付記してid:hatenadiaryトラックバックされてみてはいかがでしょうか

わざわざいろいろとチェックしていただいたようですねえ。リスト生成型のモジュールも同様だそうですが、他のモジュールで、superpreでエスケープされたものはあったんでしょうか。気になります。

[はてな] はてなダイアリーへの要望

というわけで、

  • superpreでモジュールタグもエスケープする機能
  • もしくはモジュールタグをエスケープするモジュール

を、追加してもらえませんでしょうか。よろしくお願いします>id:hatenadiary

トラックバックってこれでええのかな…