Summary::HTMLWikiConverter

まだBrancheですが、待望のサマリー機能がサポートされました。

以前から要望していた自分としてはプラガブルな点がかなりうれしく、早速Summary::HTMLWikiConverterをつくってみました。Summaryの野良プラグインとしては第1弾になるかな?

ちなみにtrunkを使用しているので、一度もテストしていません。trunkへのマージが待ち通しい。

trunkへマージされてからdepsとpod、テストを書きます。のでイメージだけです。


dialectのデフォルトはHTML::WikiConverter::Markdownにしてあります。Markdownは自分の好みです。

config.yamlで他のdialectを指定すれば他のフォーマットでも書き出しできると思います。

dialectで指定できるWikiリストはここにあります。

 package Plagger::Plugin::Summary::HTMLWikiConverter;
use strict;
use base qw( Plagger::Plugin );

use HTML::WikiConverter;

sub register {
my($self, $context) = @_;
$context->regist_hook(
$self,
'summarizer.summarize' => \&summarize,
);
}

sub summarize {
my($self, $context, $args) = @_;
my $conf = $self->conf->{dialect};
my $dialect = $conf->{dialect} || 'Markdown';
my $length = $conf->{length} || 255;
my $start = $conf->{start} || 0;
my $converter = "HTML::WikiConverter::$dialect";
eval "require $converter" or die "Could not load $converter";
my $wc = new HTML::WikiConverter(dialect => $dialect);
my $summary = $wc->html2wiki($args->{entry}->body);
unless ($conf->{always} && $summary !~ /<.*>/) {
substr($summary, $start, $length).'...';
} elsif (length($summary) < $length) {
$summary;
} else {
return;
}
}

1;