X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/dae0f48e91304afcb6ebe0936360e51b22a56548..0d0b87be5829e3e5671291a643bb4495a4cc7b99:/IkiWiki/Plugin/ddate.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/ddate.pm b/IkiWiki/Plugin/ddate.pm
index b67702655..bb77ce59f 100644
--- a/IkiWiki/Plugin/ddate.pm
+++ b/IkiWiki/Plugin/ddate.pm
@@ -1,30 +1,41 @@
 #!/usr/bin/perl
 # Discordian date support fnord ikiwiki.
 package IkiWiki::Plugin::ddate;
-use IkiWiki;
+
+use IkiWiki 3.00;
 no warnings;
 
-sub import { #{{{
-	hook(type => "checkconfig", id => "skeleton", call => \&checkconfig);
-} # }}}
+sub import {
+	hook(type => "getsetup", id => "ddate", call => \&getsetup);
+}
 
-sub checkconfig () { #{{{
-	if (! defined $config{timeformat} ||
-	    $config{timeformat} eq '%c') {
-		$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 +'$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