Gosuke Miyashita about feed

SVN::TracWiki #0

22 April 2007

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;

とりあえず動くようになっただけで、いけてない部分盛りだくさんですが、こんなのつくってみました、ってことで。