aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/haiku.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Plugin/haiku.pm')
-rw-r--r--IkiWiki/Plugin/haiku.pm60
1 files changed, 60 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/haiku.pm b/IkiWiki/Plugin/haiku.pm
new file mode 100644
index 000000000..bf23dce67
--- /dev/null
+++ b/IkiWiki/Plugin/haiku.pm
@@ -0,0 +1,60 @@
+#!/usr/bin/perl
+# haiku generator plugin
+package IkiWiki::Plugin::haiku;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "haiku", call => \&getsetup);
+ hook(type => "preprocess", id => "haiku", call => \&preprocess);
+}
+
+sub getsetup {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ section => "widget",
+ },
+}
+
+sub preprocess (@) {
+ my %params=@_;
+
+ my $haiku;
+ eval q{use Coy};
+ if ($@ || ! Coy->can("Coy::with_haiku")) {
+ 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 {
+ $haiku=Coy::with_haiku($params{hint} ? $params{hint} : $params{page});
+
+ # trim off other text
+ $haiku=~s/\s+-----\n//s;
+ $haiku=~s/\s+-----.*//s;
+ }
+
+ $haiku=~s/^\s+//mg;
+ $haiku=~s/\n/<br \/>\n/mg;
+
+ return "\n\n<blockquote><p>$haiku</p></blockquote>\n\n";
+}
+
+1