]> Sergey Matveev's repositories - public-inbox.git/commitdiff
feed: use Date::Parse to parse dates
authorEric Wong <normalperson@yhbt.net>
Sat, 5 Apr 2014 07:02:19 +0000 (07:02 +0000)
committerEric Wong <normalperson@yhbt.net>
Sat, 5 Apr 2014 07:10:35 +0000 (07:10 +0000)
This is a smaller module dependency-wise and should be easier-to-install
for folks with limited packaging systems or network/disk capacity.
We do not need very powerful date parsing, as bad date formats are
likely the work of spammers.

lib/PublicInbox/Feed.pm

index 704effcef2a5bcaa3f7e1d2de710dbff3048113f..c97a3da839d4457d560683f784cdc913cfa9c44a 100644 (file)
@@ -12,8 +12,8 @@ use Encode::MIME::Header;
 use DateTime::Format::Mail;
 use CGI qw(escapeHTML);
 use POSIX qw(strftime);
+use Date::Parse qw(strptime);
 use constant DATEFMT => '%Y-%m-%dT%H:%M:%SZ';
-our $dt_parser = DateTime::Format::Mail->new(loose => 1);
 
 # main function
 # FIXME: takes too many args, cleanup
@@ -89,8 +89,9 @@ sub utf8_header {
 
 sub feed_date {
        my ($date) = @_;
-       my $dt = $dt_parser->parse_datetime($date);
-        $dt ? $dt->strftime(DATEFMT) : 0;
+       my @t = eval { strptime($date) };
+
+       scalar(@t) ? strftime(DATEFMT, @t) : 0;
 }
 
 # returns 0 (skipped) or 1 (added)