サマリ | PEAR::Text_Highlighter を利用してソースコードを色分け表示する |
---|---|
リビジョン | 1.2 |
対応バージョン | 1.4.6 以降 |
作者 | revulo |
ライセンス | GPLv2 |
様々な言語のソースコードを、構文ハイライトして表示するプラグインです。
PHP のコードを構文ハイライトして表示した例を以下に示します。
- /**
- * phphighlight.inc.php - Syntax highlighting using highlight_string() function
- *
- * @author revulo
- * @licence http://www.gnu.org/licenses/gpl.html GPLv2
- * @link http://www.revulo.com/PukiWiki/Plugin/PHPHighlight.html
- */
- function plugin_phphighlight_convert()
- {
- $args = func_get_args();
- $source = rtrim(end($args));
- $html = highlight_string($source, true);
- $before = array(
- ">\n<",
- '<font color="',
- 'font>',
- 'code>',
- );
- $after = array(
- '><',
- '<span style="color: ',
- 'span>',
- 'pre>',
- );
- return str_replace($before, $after, $html);
- }
highlighter.inc.php プラグインのアーカイブファイルをダウンロードし、 PukiWiki をインストールしてあるディレクトリで展開します。
$ tar xvfz highlighter-1.2.tar.gz
cache/highlighter というディレクトリが作られるので、書き込み許可を与えて下さい。
$ chmod 777 cache/highlighter
PEAR::Text_Highlighter のページ からアーカイブをダウンロードし、PukiWiki の plugin ディレクトリで展開します。 ディレクトリ名は Text にリネームしておいて下さい。
$ cd plugin $ tar xvfz Text_Highlighter-0.7.1.tgz $ mv Text_Highlighter-0.7.1 Text
PEAR がインストールされていない場合は、 plugin/Text/Highlighter.php の以下の行をコメントアウトして下さい。
require_once 'PEAR.php';
あとは pukiwiki.ini.php の設定を以下のように変更して下さい。
define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0);
なお、以前のバージョンからバージョンアップする場合は、以下の点に注意して下さい。
プラグインの書式は次のようになっています。
#highlighter(オプション){{ …… ソースコード …… }}
例えば、PHP 用の構文ハイライトをして行番号付きで表示するには、このように書きます。
#highlighter(php,number){{ <?php echo 'test'; ?> }}
オプションは次のようなものが指定できます。 複数のオプションを指定する場合は 「,」(カンマ) で区切って書いて下さい。 デフォルト値は、highlighter.inc.php の PLUGIN_HIGHLIGHTER_DEFAULT_LANGUAGE などの値を設定することで変更できます。
highlighter.inc.php の先頭部分で以下の値を設定することで、動作をカスタマイズできます。
このサイトで用いているスタイルシートを revulo.css という名前で同梱してあります。 これを参考にスタイルシートを編集したり、 そのまま PLUGIN_HIGHLIGHTER_CSS_URI で指定して使ったりして下さい。
現在のところ、行番号を表示した場合に以下のような問題があります。
どうやら Safari は、<object> タグで囲まれたテキストを表示してくれないようです。 とりあえずの対処法を挙げておきます。
--- highlighter.inc.php.orig +++ highlighter.inc.php @@ -166,5 +166,5 @@ $html = '<pre class="highlighter number ' . htmlspecialchars($options['language']) - . '"><code><object>' . $html . '</object></code></pre>'; + . '">' . $html . '</pre>'; } else { $html = $highlighter->highlight($source);
バージョン | 日付 | 更新内容 |
1.2 | 2008/01/02 | ・スタイルシートを自動的に読み込むように改良 ・キャッシュの保存場所を cache/highlighter ディレクトリに変更 ・PEAR::Text_Highlighter 0.7.1 以降を必須に |
1.1 | 2007/08/04 | ・タイムスタンプを変更しない編集の時もキャッシュが更新されるように改良 ・プレビュー時にはキャッシュを使用しないように変更 ・行番号表示に PEAR::Text_Highlighter 0.7.0 以降の機能を用いるように変更 |
1.0 | 2007/02/12 | プラグインの引数でオプションを指定できるように |
0.7 | 2007/02/04 | 行番号を表示する機能を追加 |
0.6 | 2007/01/25 | 色設定を調整。highlight_string() を利用する機能は別プラグインに分離 |
0.5 | 2007/01/14 | キャッシュ機能を追加 |
0.2 | 2007/01/01 | 組み込み関数の highlight_string() を利用するオプションを追加 |
0.1 | 2006/10/11 | 暫定公開 |
同様の機能を持つプラグインが他にもあるのでまとめておきます。
プラグイン名 | 使用ライブラリ |
geshi.inc.php | GeSHi (PHP) |
highlighter.inc.php | PEAR::Text_Highlighter (PHP) |
prettify.inc.php | google-code-prettify (JavaScript) |
shjs.inc.php | SHJS (JavaScript) |
codehighlight.inc.php | 独自に実装 (PHP) |
highlight.inc.php | SyntaxHighlighter (JavaScript) |