Plagger::Plugin::Filter::RSSLiberalDateTimeをDateTime::Formatにするとこんな感じになる気がする(DT::F::DateParseはテストでエラーでまくりだけど、ちゃんと動くっぽい)
package DateTime::Format::RSS;
use strict;
use vars qw($VERSION);
use DateTime::Format::Mail;
use DateTime::Format::ISO8601;
use DateTime::Format::DateParse;BEGIN
{
$VERSION = '0.01';
}sub new
{
my $class = shift;
my $self = bless {
parsers => [
DateTime::Format::Mail->new,
DateTime::Format::ISO8601->new,
'DateTime::Format::DateParse',
]
}, $class;
return $self;
}sub parsers { my $self = shift; @{$self->{parsers}} }
sub parse_datetime
{
my $self = shift;
my $date = shift;
if (! ref($self)) {
$self = $self->new(strict => 0);
}my $dt;
foreach my $p ($self->parsers) {
$dt = eval { $p->parse_datetime($date) };
last if $dt;
}
return $dt;
}sub format_datetime
{
my $self = shift;
DateTime::Format::Mail->parse_datetime(shift);
}