SVN::TracWiki #0
SVN::TracWiki というツールをつくってみました。 svn repos はこちら 。
何をするものかというと、Subversion の post-commit スクリプトとして動作して、コミットされたファイルからテキストを抽出、そのファイルの実体へのリンクを付加して、Trac の Wiki へ自動ポストするというもの。
具体的な例としては、PowerPoint ファイルをコミットしたら、そのファイルからテキストのみを抽出して Wiki へ自動ポスト。 こんな感じで 。
これで何がうれしいかというと、Subversion で管理している PowerPoint ファイルを、Trac 上で検索ができるようになります。 こんな感じですね 。元ファイルへのリンクもあるので、検索して元ファイルを開いて読む、ってことが簡単にできます。
例によって YAMLで設定 and プラガブル。ファイルからテキストを抽出する部分がプラグインになっていて、簡単に拡張できるようにしています。
現在は PowerPoint 用フィルタプラグインしかないのですが、以下の様なコードになっていて、フィルタ対象ファイルの MIME タイプを register() で指定、テキスト抽出ルーチンを filter() に記述、という感じで書きます。
package SVN::TracWiki::Plugin::Filter::PowerPoint;use strict;
use warnings;
use base qw( SVN::TracWiki::Plugin::Filter );
use Encode;sub register {
my $self = shift;
$self->register_mime_types( qw! application/vnd.ms-powerpoint !);
}sub filter {
my ( $self, $file ) = @_;
my $html =/usr/local/bin/ppthtml $file;
my $text = $self->strip_html($html);$text = Encode::decode('utf8', $text); $text = Encode::encode('utf8', $text); return $text;}
1;
とりあえず動くようになっただけで、いけてない部分盛りだくさんですが、こんなのつくってみました、ってことで。