さまざまな形式のファイルに対する、 シンタックスハイライティング機能を提供します。
Text_Highlighter を使用すると、 さまざまな形式のファイルに対して シンタックスハイライティングを行うことができます。
現在は、以下のフォーマットがサポートされています。
ABAP
C++
CSS
diff(1) の出力
DTD
HTML
Java
Javascript
MySQL
Perl
PHP
Python
Ruby
sh
SQL
VBScript
XML
各種レンダラを使用して、 さまざまな形式でハイライト結果を出力することができます。 レンダラの一覧を次に示します。
Array
Console
HTML - span タグで CSS のクラス名を指定します。 これがデフォルトのレンダラです。
HTMLTags - シンプルなタグである B と I、そして U のみを使用します。 HTML のサブセットしかサポートしていないデバイス (iPod など) で便利です。
JSON
XML
Text_Highlighter クラスには シンタックスハイライティングを行うために必要な機能がすべて含まれています。 ただし、各種フォーマットに対する強調ルールは除きます。 これらのルールは Text_Highlighter のサブクラスで定義されていますが、 このサブクラスのインスタンスを直接作成する必要はありません。 オブジェクト指向なファクトリパターンを用いて、 フォーマットに応じたオブジェクトを作成します。
例 64-7SQL クエリのハイライティング
このコードは、Text_Highlighter::highlight に渡された SQL の SELECT クエリの構文を強調した HTML を作成します。出力をカスタマイズし、 例えばコンソール用に適した形式とすることも可能です。この方法については 出力のカスタマイズ で説明します。 |
その他のフォーマットについてのシンタックスハイライティングを行うには Text_Highlighter::factory の引数の値 SQL を以下のいずれかに変更する必要があります。 ABAP、CPP、CSS、DIFF、 DTD、HTML、JAVA、 JAVASCRIPT、MYSQL、 PERL、PHP、 PYTHON、RUBY、SQL、 あるいは XML。
デフォルトでは、Text_Highlighter は、入力内容の構文を強調した HTML を作成します。
作成される出力結果を変更し、 xterm のようなカラー対応端末や less(1) に適した形式とすることも可能です。 そのためには、Text_Highlighter に対して別のレンダラを使用するように指示します。
例 64-8コンソールレンダラの使用法
|
HTML レンダラやコンソールレンダラの出力結果をさらにカスタマイズすることも可能です。 その場合は、コンストラクタにオプションの連想配列を渡します。
例 64-9HTML レンダラのオプション
上の例は、HTML レンダラに対してふたつのオプションを指定しています。 まず <ol /> HTML タグを使用して行番号を表示させるようにし、 次に字下げをスペース 4 文字に指定しています。 |
以下のオプションが使用可能です。
表 64-1レンダラクラスで使用可能なオプション
名前 | 説明 | HTML レンダラで使用可能? | コンソールレンダラで使用可能? | ヒント |
---|---|---|---|---|
numbers | 行番号の形式 | yes | yes | コンソールレンダラの場合、このオプションは単に TRUE あるいは FALSE を指定します。これらはそれぞれ 出力する/出力しない という意味です。HTML レンダラでは、 次の三種類のうちのいずれかを指定します。 HL_NUMBERS_LI は、HTML の <ol /> タグを使用して行番号を出力します。 HL_NUMBERS_TABLE は、 カラム数が 2 のテーブルを作成します。そして最初のカラムに行番号、 次のカラムにソースコードを出力します。 FALSE を指定すると、HTML レンダラで行番号を出力しなくなります。 |
tabsize | タブの幅 | yes | yes | |
colors | 追加の色 | no | yes | 連想配列形式で、 カラー対応のコンソールにおける追加の色を指定します。 連想配列のキーが色の名前となり、対応するエスケープシーケンス (例えば \033[1;31mRed) を連想配列の値として指定します。 |