Plagger::Plugin::Filter::ForceDate
読了まで:約1分
概要: エントリに
Plagger::Entry->date
に
package Plagger::Plugin::Filter::ForceDate;
use strict;
use warnings;
use Plagger::CacheProxy;
use Plagger::Date;
use base qw( Plagger::Plugin );
sub register {
my ( $self, $c ) = @_;
$c->register_hook(
$self,
'update.entry.fixup' => $self->can('update'),
);
}
sub init {
my $self = shift;
$self->SUPER::init( @_ );
$self->{'cache'} = Plagger::CacheProxy->new( $self, Plagger->context->cache );
}
sub update {
my ( $self, $c, $args ) = @_;
return if ( ref $args->{'entry'}->date );
my $entry = $args->{'entry'};
my $cache = $self->{'cache'};
my $data = $cache->get( $entry->permalink );
if ( defined $data ) {
if ( $data->{'body'} eq $entry->body ) {
$entry->date( $data->{'date'} );
return;
}
else {
$entry->date( Plagger::Date->now );
}
}
else {
$entry->date( Plagger::Date->now );
}
$cache->set(
$entry->permalink => {
body => $entry->body,
date => $entry->date,
},
);
}
1;
__END__
ライセンスは
使い方はconfig
更新を
動作と
- Plagger::Entry->date に
Plagger::Date が セットされてない - キャッシュから
前の データを 読み込み - Plagger::Entry->body を
使って 更新されているかチェック - 更新されていなかったら
前の データ(Plagger::Date オブジェクト)を セット - 更新されていたら
Plagger::Date->now を セット
と
とにかく
ちなみに
まあ、
#FIXME