— boreal-kiss.com

ソースコードを色付けしてhtml化するPHPパッケージ – GeSHi

GeSHi – Generic Syntax Highlighterはプログラムソースを修飾語などにきれいに色付けした状態でhtmlソースとして出力してくれるPHPパッケージ。対応言語が豊富で、ActionScriptやObjective-Cも対応している。GeSHiを使ったWebサービスが見当たらないのはプロジェクトライセンスがGPLのためなのかな。

使い方

  1. sourceforge.netからパッケージをダウンロード。パッケージ全体をPHPが動作する環境に配置する。
  2. パッケージで定義されているGsShiクラスにhtml化したいソースファイルのストリング内容とパースしたい言語を引数に渡してパースさせる。
  3. パース内容を出力させたものがhtml化されたソースコードになる。

ActionScript 3.0の場合

例えばTest.asの中身を表示したい場合、PHPファイルに以下のように記述して実行。

<?php
 
include('geshi.php');
 
//Language
$lang = 'actionscript3';
 
//Raw source code
$path = 'Test.as';
 
$src = file_get_contents($path);
$geshi = new GeSHi($src, $lang);
$geshi->enable_keyword_links(false);
 
echo $geshi->parse_code();
?>

上記PHPファイル実行時の出力内容は以下の通り。Flex Builderと全く同じ見た目が出力される。インデントがちょっと深いぐらい?

package {
	import flash.display.Sprite;
 
	/**
	 * Test.as
	 */ 
	public class Test extends Sprite{
		/**
		 * Constructor
		 */ 
		public function Test(){
			this.init();
		}
 
		protected function init():void{
			trace("Hello");
		}
	}
}
 

Objective-Cの場合

例えばTestAppDelegate.mの中身を表示したい場合、PHPファイルに以下のように記述して実行。

<?php
 
include('geshi.php');
 
//Language
$lang = 'objc';
 
//Raw source code
$path = 'TestAppDelegate.m';
 
$src = file_get_contents($path);
$geshi = new GeSHi($src, $lang);
$geshi->enable_keyword_links(false);
 
echo $geshi->parse_code();
?>

上記PHPファイル実行時の出力は以下の通り。まあアリ?

//
//  TestAppDelegate.m
//  Test
//
//  Created by boreal-kiss.com on 09/02/08.
//  Copyright boreal-kiss.com 2009. All rights reserved.
//
 
#import "TestAppDelegate.h"
#import "TestViewController.h"
 
@implementation TestAppDelegate
 
@synthesize window;
@synthesize viewController;
 
 
- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 
    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}
 
 
- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}
 
 
@end
 

その他

パッケージデフォルトだとSpriteやintなんかに変なURLのリンクがくっつくので、以下の設定でキーワードへのURLリンクを無効にしておくとよい。

$geshi->enable_keyword_links(false);

出力された内容をそのままブログなんかにコピー&ペーストしたいのであれば、以下のように出力内容を設定してやるとよい。出力内容がhtmlタグの形で表示される。

//echo $geshi->parse_code();
 
echo '<pre>';
echo htmlspecialchars($geshi->parse_code());
echo '</pre>';
0 comments
Submit comment