Plagger::Plugin::Publish::Template

読了まで:約0分


概要: テンプレートで Feed を整形して出力するプラグイン


Plagger で Feed の出力をテンプレートつかって自由に整形したい! ということで Publish::JavaScript を継承して作ってみた。

package Plagger::Plugin::Publish::Template;
use strict;
use warnings;
use base qw( Plagger::Plugin::Publish::JavaScript );
sub register {
my ( $self, $c ) = @_;
$c->register_hook(
$self,
'publish.feed' => $self->can('feed'),
);
}
sub feed {
my($self, $context, $args) = @_;
my $file = Plagger::Util::filename_for($args->{feed}, $self->conf->{filename} || '%i.txt');
my $path = File::Spec->catfile($self->conf->{dir}, $file);
$context->log(info => "writing output to $path");
my $body = $self->templatize( $self->conf->{'template'} , { feed => $args->{feed} });
open my $out, ">:utf8", $path or $context->error("$path: $!");
print $out $body;
close $out;
}
1;
__END__

ライセンスは Plagger と同じ Perl のライセンスで。設定はこんな感じ。

plugins:
- module: Publish::Template
config:
dir: /path/to/dir
template: template.tt
filename: output.txt

dirfilenameは Publish::Javascript と同じ。でtemplateに関しては、 Publish::Template の assets ディレクトリから指定されたファイル、上記の場合だとtemplate.ttが読み込まれる。

ちなみにこのプラグイン、Publish::JavaScript で読み込むテンプレート名を設定でいじれるようにしただけの代物。 結構簡単に書けました。

とりあえず、Blosxom のエントリ生成するとか色々できそう。

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。