NULL::something

Login via flickr, はてな, TypeKey.

2006-03-17

ソースの色づけを復活

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>';
?>

こんなスクリプト書いたら、あとは JSpre 要素列挙して投げてあげる。レスポンスを importNode して、pre と置き換える。みたいな。

でもこんなクソ簡単なスクリプトなのに IE ではちゃんとうごかない。importNode がだめなのか、それとも responseXML から importNode ができないのか……謎。

あーHtml.php の &nbsp; は全部 &#160; に置き換えた。DTD がないからエラーになる。

Inserted at 2006-03-17T18:15:01+09:00

Comments (0)

Trackback URI: http://lowreal.net/logs/2006/03/17/1.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。