iG:Syntax Hiliter3.5のGeSHiはVer.1.0.7.6で21言語。最新版のGeSHiはVer.1.0.8で101言語。
80言語増えてる。なんてバブリーな増え方!!
AS3にもデフォで対応してるし、これで自作AS3ライブラリとオサラバ。勿論入れ替えますよね!?
GeSHiのDownloadsから落として解凍。
/wp-content/plugins/ig_syntax_hilite/geshi.php と /wp-content/plugins/ig_syntax_hilite/geshi/ をバックアップ。
落としてきたgeshiフォルダの中身を /wp-content/plugins/ig_syntax_hilite/ にアップ。
すげ、超簡単。
iG:Syntax Hiliterの気になっていた部分で、ハイライトのスタイル指定をhtmlベースでやってるってことがあったのだけど、geshi.php側にちゃんとメソッドが用意されてました。
syntax_hilite.phpに一行追加で、スタイルをCSSにお任せできますね。ヤッター!
if($igCheckFile) {
$geshi = new GeSHi
(trim($mTxt), $mType, $this->ig_geshipath);
$geshi->enable_classes(true); // この辺りにこの行を追加
$geshi->set_header_type(GESHI_HEADER_DIV);
使用する言語数分CSS書く気力がある人はやってみるといいよ。
iG:Syntax Hiliter同梱のGeSHiライブラリはActionScript 2.0対応だったので、ActionScript 3.0に対応したライブラリを公開します。
- 表示サンプル
-
- iG:Syntax Hiliterの特徴
-
- クライアントサイドではなく、サーバーサイドでワードとのマッチングを行うため高速。
- cssでコードハイライトを行わず、htmlにスタイルを埋め込む。
- 大文字・小文字を別のものとしてマッチングしてくれる。('function'と'Function'など)
- '*'をマッチングしてくれる。
- 公開しているファイルに関する注意点
-
- 「plugins > ig_syntax_hilite > geshi > actionscript.php」と入れ替えてお使い下さい。(バックアップをお忘れなく。)
- GeSHiライブラリ依存のファイルです。
- GeSHi本体は付属しません。
- ライセンスはファイル内に記述しています。(GNU GPLライセンス)
- 'gt','lt'はhtmlの実体参照と競合するため、意図的にコメントアウトしています。
- 他に上記5.の様なパターンを発見された場合お知らせ下さい。
- ダウンロード
-
- iG:Syntax Hiliter日本語化・不具合修正
-
- iG:Syntax Hiliter導入方法・カスタマイズ
-
- その他のコードハイライター
-
dp.SyntaxHighlighterはJavaScriptベースでコードを色分けしていく。
クライアントでの処理の為、色分けすべきストリングの量が多くなればなるほど、行数が多くなればなるほど表示までに時間が掛かってしまう。
ActionScript全てのグローバル関数を入れた結果、表示が劇的に遅くなってしまった。
そこで、PHPでコードを色分けしてくれるiG:Syntax Hiliterを試してみることに。
同梱のGeSHiライブラリはActionScript 2.0のみ対応だったので、ついでにActionScript 3.0にも対応してみた。
ActionScript 2.0の場合
/**
* ActionScript2 powered by iG:Syntax Hiliter
*/
function test():Void {
var mc:MovieClip = new MovieClip();
var str:String = "test";
mc._visible = false;
}
function test():* {
mc._visible = false;
}
ActionScript 3.0の場合
/**
* ActionScript3 powered by iG:Syntax Hiliter
*/
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
// 円を描画し、表示リストに追加する。
var sprCircle:Sprite = new Sprite();
sprCircle.graphics.beginFill(0x990000);
sprCircle.graphics.drawCircle(50, 50, 50);
sprCircle.graphics.endFill();
addChild(sprCircle);
function fadeCircle(event:Event):void {
sprCircle.alpha -= .05;
if (sprCircle.alpha <= 0) {
sprCircle.removeEventListener(Event.ENTER_FRAME, fadeCircle);
}
}
function startAnimation(event:MouseEvent):void {
sprCircle.addEventListener(Event.ENTER_FRAME, fadeCircle);
}
sprCircle.addEventListener(MouseEvent.CLICK, startAnimation);
- 感想
-
- AS2とAS3で3000ワードとマッチングしてるけど表示が早い。(同じコードをdp.SyntaxHighlighterで表示したところ6秒くらいかかったのが、iG:Syntax Hiliterだと2秒くらいで表示された。)
- 吐かれるhtmlソース内にスタイル押し付けてるのが惜しい。クラスだけ押し付けて、スタイル部分はCSSに託す(dp.SyntaxHighlighter形式)ように再開発されないかな・・・
- コレ自体にスタイル反映させるのがわりと簡単。(ただしここでもやっぱり吐かれるhtmlソース自体にスタイル押し付けてる部分があるので、改変が必要。)
- 3000ワードマッチングとかするんだとiG:Syntax Hiliterがよいかと。
ActionScript 3.0に対応したactionscript.phpは整理し終わったら公開します。
追記 08/02/04 公開しました。 - iG:Syntax HiliterでActionScript 3.0をハイライト