X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a18e304e39a085c91b97c06ecb82f76ec37a0bc4..577eed0e7efaf1844d5e3f18a95e699f1bc831c5:/IkiWiki/Plugin/ddate.pm diff --git a/IkiWiki/Plugin/ddate.pm b/IkiWiki/Plugin/ddate.pm index 4e9d919a3..bb77ce59f 100644 --- a/IkiWiki/Plugin/ddate.pm +++ b/IkiWiki/Plugin/ddate.pm @@ -1,32 +1,41 @@ #!/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 3.00; no warnings; -sub import { #{{{ - IkiWiki::hook(type => "checkconfig", id => "skeleton", - call => \&checkconfig); -} # }}} +sub import { + hook(type => "getsetup", id => "ddate", call => \&getsetup); +} -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'; - } -} #}}} +sub getsetup { + return + plugin => { + safe => 1, + rebuild => 1, + }, +} -sub IkiWiki::displaytime ($) { #{{{ +sub IkiWiki::formattime ($;$) { 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; - if ($? || ! length $date) { - return "some time or other (hail Eris!)"; + my $format=shift; + if (! defined $format) { + $format=$config{timeformat}; + if ($format eq '%c') { + $format='on %A, the %e of %B, %Y. %N%nCelebrate %H'; + } + } + eval q{ + use DateTime; + use DateTime::Calendar::Discordian; + }; + if ($@) { + return "some time or other ($@ -- hail Eris!)"; } - return $date; -} #}}} + my $dt = DateTime->from_epoch(epoch => $time); + my $dd = DateTime::Calendar::Discordian->from_object(object => $dt); + return $dd->strftime($format); +} 5