#!/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 ($config{deterministic}) { $haiku = "Coy changes often. For deterministic builds try this substitute. ", } elsif ($@ || ! 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/
\n/mg; return "\n\n

$haiku

\n\n"; } 1