X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a18e304e39a085c91b97c06ecb82f76ec37a0bc4..fdb5da46b0122d9cb4b2611526c6c955478a80cf:/IkiWiki/Plugin/ddate.pm

diff --git a/IkiWiki/Plugin/ddate.pm b/IkiWiki/Plugin/ddate.pm
index 4e9d919a3..6c36de0a6 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 2.00;
 no warnings;
 
 sub import { #{{{
-	IkiWiki::hook(type => "checkconfig", id => "skeleton", 
-		call => \&checkconfig);
+	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::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;
-	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