ソースの色づけを復活
pre だけ色付けするようにした。
前に Pure JavaScript で色つけていたことがあったけど、あからさまにブラクラだった。で、なんとなく思いついたのでもっかい別の方法で実装してみた。
なんていうか非常にローテクといいますか他力本願な方法でして、PEAR::Text_Hightlighter に Ajax で丸投げというソリューションでございますです。
<?php
header("content-type: text/xml");
require_once 'Text/Highlighter.php';
require_once 'Text/Highlighter/Renderer/Html.php';
$options = array(
'numbers' => HL_NUMBERS_LI,
'tabsize' => 4,
);
$renderer =& new Text_Highlighter_Renderer_HTML($options);
$hl =& Text_Highlighter::factory($_GET["lang"]);
$hl->setRenderer($renderer);
$ret = $hl->highlight($_GET["source"]);
echo '<div xmlns="http://www.w3.org/1999/xhtml">';
echo $ret;
echo '</div>';
?> こんなスクリプト書いたら、あとは JS で pre 要素列挙して投げてあげる。レスポンスを importNode して、pre と置き換える。みたいな。
でもこんなクソ簡単なスクリプトなのに IE ではちゃんとうごかない。importNode がだめなのか、それとも responseXML から importNode ができないのか……謎。
あーHtml.php の &nbsp; は全部 &#160; に置き換えた。DTD がないからエラーになる。
関連エントリー
- ブログシステムの HTML 生成を効率化 そろそろやることなくなったので minify などをやることにしました。 ただ、ブログシステムの出力の最後ほうでページごとに全体を mini...
- vim に乗り換えるよ! Emacs の設定に嫌気がさしたので (ネガティブドリブン) 、vim に乗り換えるよ! ubuntu 6.06 LTS の vim は V...
- この日記上の Twitter 関係のボタンを削除した Bluesky に置き換えた。Bluesky の共有は以下のようにすればいいみたい https://bsky.app/intent/comp...
- GreaseMonkey Script on Opera 9.00 9.0 がリリースされたのでいろいろ調べて書く。 XPath は割と普通に使えるっぽい。時々変な挙動な気もするけど。$X は書き換え無しに動...
- JSDeferred -> Angular $q 置き換え方法 AngularJS には $qっていう promise の枠組みがあるので、使っておくといいこと (ビューが自動的に更新されるだけだけど) ...