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