前回に続いて、Subversionのリポジトリブラウザを作る話。
listとinfoはそれなりに出来た。
今回は、catの話。
PearのVersionControl_SVNは余りにも使いづらい。
execするクラスを自分で作る事にした。
変数に格納された文字列がテキストかバイナリかを調べる
PeclのFileinfoで簡単に調べられるらしい。
Fileinfoインストール
yum install file sudo pecl install fileinfo echo 'extension=fileinfo.so' > /etc/php.d/fileinfo.ini service httpd reload
ソース
<?php if ($argc<2) { echo "no param\n"; exit(); } $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); if (!$finfo) { echo "fileinfo データベースのオープンに失敗しました\n"; exit(); } /* 指定したファイルの mime タイプを取得します */ $str = file_get_contents($argv[1]); var_dump($finfo->buffer($str));
今回は関係ないけど、画像を調べる時は"identify"が使えそう。
GeSHiでハイライトする
調べた結果、GeSHiはかなりの種類のファイルに対応しているらしい。
GeSHiをインストール
ここからダウンロード。
GeSHi - Generic Syntax Highlighter - Browse Files at SourceForge.net
クリックしやすい場所にある「geshi-dev」の最新版で試してておかしいなぁと小一時間悩んだ。
下の方にある「geshi」を開いてその中の最新をダウンロード。
解凍してinclude pathにコピー。
ソース
<?php $file_path = 'xxx'; $source = file_get_contents($file_path); $extension = pathinfo($file_path, PATHINFO_EXTENSION); $geshi = new GeSHi($source, $extension); $source = $geshi->parse_code();
actionscript.phpをas.phpにシンボリックリンク貼った。
List/Info/Catは出来た
まだまだ仮だけど。
verboseオプションの付いたlistの結果をパースするのが面倒だった。
verboseがついてても、年は取得できないみたい。
それともsvnの仕様…?