X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a61d531edbe89f7677e8a2b2f1b82b189782dcdf..7b57bb843f2fe8b7901f7b9b10c95597527d4093:/IkiWiki/Plugin/ddate.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/ddate.pm b/IkiWiki/Plugin/ddate.pm
index c8cf3f66e..bb77ce59f 100644
--- a/IkiWiki/Plugin/ddate.pm
+++ b/IkiWiki/Plugin/ddate.pm
@@ -1,29 +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;
-	return $date;
-} #}}}
+	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!)";
+	}
+	my $dt = DateTime->from_epoch(epoch => $time);
+	my $dd = DateTime::Calendar::Discordian->from_object(object => $dt);
+	return $dd->strftime($format);
+}
 
 5