]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/ddate.pm
* meta: Add redir support, based on a patch by Thomas Schwinge.
[git.ikiwiki.info.git] / IkiWiki / Plugin / ddate.pm
index c8cf3f66e25229175dae6499e87ac4c14a06b491..7382d4160cd84fe62f21daa366135dcabfde19f7 100644 (file)
@@ -1,29 +1,33 @@
 #!/usr/bin/perl
 # Discordian date support fnord ikiwiki.
 package IkiWiki::Plugin::ddate;
-use IkiWiki;
-use IkiWiki::Render; # so we can redefine it here:
+
+use IkiWiki 2.00;
 no warnings;
 
 sub import { #{{{
-       IkiWiki::hook(type => "checkconfig", id => "skeleton", 
-               call => \&checkconfig);
+       hook(type => "checkconfig", id => "skeleton", call => \&checkconfig);
 } # }}}
 
 sub checkconfig () { #{{{
-       if (! defined $IkiWiki::config{timeformat} ||
-           $IkiWiki::config{timeformat} eq '%c') {
-               $IkiWiki::config{timeformat}='on %{%A, the %e of %B%}, %Y. %N%nCelebrate %H';
+       if (! defined $config{timeformat} ||
+           $config{timeformat} eq '%c') {
+               $config{timeformat}='on %A, the %e of %B, %Y. %N%nCelebrate %H';
        }
 } #}}}
 
-sub IkiWiki::displaytime ($) { #{{{
+sub IkiWiki::displaytime ($;$) { #{{{
        my $time=shift;
-        eval q{use POSIX};
-        my $gregorian=POSIX::strftime("%d %m %Y", localtime($time));
-       my $date=`ddate +'$IkiWiki::config{timeformat}' $gregorian`;
-       chomp $date;
-       return $date;
+       eval q{
+               use DateTime;
+               use DateTime::Calendar::Discordian;
+       };
+       if ($@) {
+                return "some time or other ($@ -- hail Eris!)";
+       }
+       my $dt = DateTime->from_epoch(epoch => $time);
+       my $dd = DateTime::Calendar::Discordian->from_object(object => $dt);
+       return $dd->strftime($IkiWiki::config{timeformat});
 } #}}}
 
 5