]> scripts.mit.edu Git - www/ikiwiki.git/blobdiff - IkiWiki/Plugin/haiku.pm
haiku plugin
[www/ikiwiki.git] / IkiWiki / Plugin / haiku.pm
diff --git a/IkiWiki/Plugin/haiku.pm b/IkiWiki/Plugin/haiku.pm
new file mode 100644 (file)
index 0000000..0e93e9d
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+# haiku generator plugin
+package IkiWiki::Plugin::haiku;
+
+use warnings;
+use strict;
+use IkiWiki;
+
+sub import { #{{{
+       IkiWiki::hook(type => "preprocess", id => "haiku",
+               call => \&preprocess);
+} # }}}
+
+sub preprocess (@) { #{{{
+       my %params=@_;
+
+       my $haiku;
+       eval q{use Coy};
+       if ($@) {
+               my @canned=(
+                       "The lack of a Coy:
+                        No darting, subtle haiku.
+                        Instead, canned tuna.
+                       ",
+                       "apt-get install Coy
+                        no, wait, that's not quite it
+                        instead: libcoy-perl
+                       ",
+                       "Coyly I'll do it,
+                        no code, count Five-Seven-Five
+                        to make a haiku.
+                       ",
+               );
+                                        
+               $haiku=$canned[rand @canned];
+       }
+       else {
+               # Coy is rather strange, so the best way to get a haiku
+               # out of it is to die..
+               eval {die exists $params{hint} ? $params{hint} : $params{page}};
+               $haiku=$@;
+
+               # trim off other text
+               $haiku=~s/\s+-----\n//s;
+               $haiku=~s/\s+-----.*//s;
+       }
+               
+       $haiku=~s/^\s+//mg;
+       $haiku=~s/\n/<br>\n/mg;
+       
+       return $haiku
+} # }}}
+
+1