Filter::Substr
本文から希望の場所を取り出します。Filter::FormatTextと共にどうぞ。
- module: Filter::Substr
config:
start: 開始位置(optional def.0)
length: 取得長さ(optional def.200)
always: Plainテキスト以外でも実行するか?(optional def.0)
使い方や目的はこちら
マルチバイトのsubstrはid:kazeburoさんから教えてもらいました。ありがとうございます。
ダウンロード: Substr.pm
package Plagger::Plugin::Filter::Substr; use utf8;
use strict;
use warnings;
use base qw( Plagger::Plugin );
our $VERSION = 0.01;
sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'update.entry.fixup' => \&filter,
);
}
sub filter {
my($self, $context, $args) = @_;
my $entry = $args->{entry};
my $body = $entry->body;
my $body_text = $entry->body;
$body_text =~ s/<[^>]*>//g;
if ($self->conf->{always} || $body eq $body_text){
my $length = $self->conf->{length} || 200;
my $start = $self->conf->{start} || 0;
if (length($body) > $length) {
utf8::decode($body);
$body = substr($body, $start, $length).'...';
$entry->body($body);
$context->log(info => "substr $entry->{link}") if $entry->{link};
}
}
}
1;
__END__
=head1 NAME
Plagger::Plugin::Filter::Substr - Substring entry body.
=head1 SYNOPSIS
- module: Filter::Substr
=head1 CONFiG
=over 4
=item start (Optional)
Default 0.
=item length (Optional)
Default 200.
=item always (Optional)
When set to 1, always substring. Default to 0.
=back
=head1 AUTHOR
Nobuhito Sato
=head1 SEE ALSO
L<Plagger>
=cut