* Add a prettydate plugin that formats dates in a more readable fashion.

(I had to get a pretty date somehow today..)
master
joey 2007-02-15 07:53:04 +00:00
parent f850acc6ad
commit 0cfc607314
4 changed files with 111 additions and 1 deletions

View File

@ -0,0 +1,90 @@
#!/usr/bin/perl
package IkiWiki::Plugin::prettydate;
use IkiWiki;
use warnings;
use strict;
# Blanks duplicate the time before.
my $default_timetable=[
"late at night on", # 12
"", # 1
"in the wee hours of", # 2
"", # 3
"", # 4
"terribly early in the morning of", # 5
"", # 6
"in early morning on", # 7
"", # 8
"", # 9
"in mid-morning of", # 10
"in late morning of", # 11
"at lunch time on", # 12
"", # 1
"in the afternoon of", # 2
"", # 3
"", # 4
"in late afternoon of", # 5
"in the evening of", # 6
"", # 7
"in late evening on", # 8
"", # 9
"at night on", # 10
"", # 11
];
sub import { #{{{
hook(type => "checkconfig", id => "skeleton", call => \&checkconfig);
} # }}}
sub checkconfig () { #{{{
if (! defined $config{prettydateformat} ||
$config{prettydateformat} eq '%c') {
$config{prettydateformat}='%X %B %o, %Y';
}
if (! ref $config{timetable}) {
$config{timetable}=$default_timetable;
}
# Fill in the blanks.
for (my $h=0; $h < 24; $h++) {
if (! length $config{timetable}[$h]) {
$config{timetable}[$h] = $config{timetable}[$h - 1];
}
}
} #}}}
sub IkiWiki::displaytime ($) { #{{{
my $time=shift;
my @t=localtime($time);
my ($h, $m)=@t[2, 1];
if ($h == 16 && $m < 30) {
$time = "at teatime on";
}
elsif (($h == 0 && $m < 30) || ($h == 23 && $m > 50)) {
# well, at 40 minutes it's more like the martian timeslip..
$time = "at midnight on";
}
elsif (($h == 12 && $m < 15) || ($h == 11 && $m > 50)) {
$time = "at noon on";
}
# TODO: sunrise and sunset, but to be right I need to do it based on
# lat and long, and calculate the appropriate one for the actual
# time of year using Astro::Sunrise. Not tonight, it's wee hours
# already..
else {
$time = $config{timetable}[$h];
if (! length $time) {
$time = "sometime";
}
}
eval q{use Date::Format};
error($@) if $@;
my $format=$config{prettydateformat};
$format=~s/\%X/$time/g;
return strftime($format, \@t);
} #}}}
1

2
debian/changelog vendored
View File

@ -23,6 +23,8 @@ ikiwiki (1.43) UNRELEASED; urgency=low
Inspired by the many ways Moin Moin destroys itself when out of disk. :-)
* Fix syslogging of errors.
* Patch from Ethan to allow using meta tags to set creation dates of pages.
* Add a prettydate plugin that formats dates in a more readable fashion.
(I had to get a pretty date somehow today..)
-- Joey Hess <joeyh@debian.org> Thu, 15 Feb 2007 00:44:29 -0500

View File

@ -0,0 +1,18 @@
[[template id=plugin name=prettydate author="[[Joey]]"]]
[[tag type/format]]
Enabling this plugin changes the dates displayed on pages in the wiki to
a format that is nice and easy to read.
The names given to each of the hours in the day can be customised by
setting the `timetable` configuration variable in ikiwiki's setup file.
The default value of this configuration value can be seen near the top of
`prettydate.pm`. Note that hours can be left blank, to make it display the
same as the hour before. Midnight, noon, and teatime are all hardcoded,
since they do not occupy the whole hour.
The format used for the date can be customised using the `prettydateformat`
configuration variable in the setup file. `%X` will be expanded to the
prettified time value. The default prettydateformat is `"%X %B %o, %Y"`.
This plugin uses the [[cpan TimeDate]] perl module.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-02-15 00:47-0500\n"
"POT-Creation-Date: 2007-02-15 02:44-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"