# Author(s): Gavin Carr <gavin@openfusion.com.au>
# (based on work by Frank Hecker <hecker@hecker.org>
# and Bob Schumaker <cobblers@pobox.com>)
-# Version: 0.001000
+# Version: 0.003000
# Documentation: See the bottom of this file or type: perldoc storydate
package storydate;
use strict;
+use vars qw(%config);
use File::stat;
# Uncomment next line to enable debug output (don't uncomment debug() lines)
# --- Configuration variables -----
+%config = ();
+
# Perl modules to use for strftime, in search order
-my @strftime_modules = qw(Time::Piece Date::Format POSIX);
+$config{strftime_modules} = [ qw(Time::Piece Date::Format POSIX) ];
# ---------------------------------
+# __END_CONFIG__
# Package variables
use vars qw(
$story_mtime_iso8601
$now_rfc822
$now_iso8601
+ $latest_rfc822
+ $latest_iso8601
%strftime_formats
);
%strftime_formats = (
- rfc822 => "%a, %d %b %Y %T %z",
+ rfc822 => "%a, %d %b %Y %T %z",
# ISO 8601 format (localtime, including time zone offset)
# Format is YYYY-MM-DDThh:mm:ssTZD per http://www.w3.org/TR/NOTE-datetime
iso8601 => "%Y-%m-%dT%T%z",
1;
}
+sub filter {
+ my ($pkg, $files, $others) = @_;
+
+ # Find the latest publish date in our stories
+ my $latest_ts = 0;
+ for (values %$files) {
+ $latest_ts = $_ if $_ > $latest_ts;
+ }
+
+ # Format the 'latest' variables
+ $latest_rfc822 = format_date('rfc822', $latest_ts);
+ $latest_iso8601 = format_date('iso8601', $latest_ts);
+
+ return 1;
+}
+
sub story {
my ($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_;
return $date;
}
-# strftime wrapper, using the first strftime() it finds in @strftime_modules
+# strftime wrapper, using the first strftime() it finds in 'strftime_modules'
my %cache = ();
my $strftime_module = '';
sub strftime {
# Search for a strftime module, and load
if (! $strftime_module) {
- for my $module (@strftime_modules) {
+ for my $module (@{$config{strftime_modules}}) {
if (eval "require $module") {
$strftime_module = $module;
# debug(2, "strftime_module: $strftime_module");
The current time in ISO8601 format.
+=item $latest_rfc822
+
+The latest story publication date, in RFC822 format.
+
+=item $latest_iso8601
+
+The latest story publication date, in ISO8601 format.
+
=back
In addition, storydate defines a few subroutines that might be useful