diff options
Diffstat (limited to 'IkiWiki/Plugin/haiku.pm')
-rw-r--r-- | IkiWiki/Plugin/haiku.pm | 60 |
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 |