From a59b1ac8d8eb220fd4f574af4a8a6742825aac6f Mon Sep 17 00:00:00 2001 From: joey Date: Fri, 5 May 2006 04:15:47 +0000 Subject: [PATCH] haiku plugin --- IkiWiki/Plugin/haiku.pm | 54 +++++++++++++++++++++++++++++++++++++++++ Makefile.PL | 3 ++- debian/changelog | 2 +- doc/plugins.mdwn | 3 ++- doc/plugins/haiku.mdwn | 14 +++++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 IkiWiki/Plugin/haiku.pm create mode 100644 doc/plugins/haiku.mdwn diff --git a/IkiWiki/Plugin/haiku.pm b/IkiWiki/Plugin/haiku.pm new file mode 100644 index 000000000..0e93e9d8d --- /dev/null +++ b/IkiWiki/Plugin/haiku.pm @@ -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/
\n/mg; + + return $haiku +} # }}} + +1 diff --git a/Makefile.PL b/Makefile.PL index df119d5f0..74ad20c17 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -15,7 +15,8 @@ extra_build: ./ikiwiki doc html --templatedir=templates --underlaydir=basewiki \ --wikiname="ikiwiki" --verbose --no-rcs \ --exclude=/discussion --plugin=brokenlinks \ - --plugin=pagecount --plugin=orphans + --plugin=pagecount --plugin=orphans \ + --plugin=haiku ./mdwn2man doc/usage.mdwn > ikiwiki.man extra_clean: diff --git a/debian/changelog b/debian/changelog index fb4a734bf..bd82cd48b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -44,7 +44,7 @@ ikiwiki (1.1) UNRELEASED; urgency=low * Allow links of the form [[some page|page]], with whitespace in the link text. - -- Joey Hess Thu, 4 May 2006 14:46:46 -0400 + -- Joey Hess Fri, 5 May 2006 00:14:53 -0400 ikiwiki (1.0) unstable; urgency=low diff --git a/doc/plugins.mdwn b/doc/plugins.mdwn index 57ec8afb9..07c236057 100644 --- a/doc/plugins.mdwn +++ b/doc/plugins.mdwn @@ -2,7 +2,8 @@ There's documentation if you want to [[write]] your own plugins, or you can inst The ikiwiki package includes some standard plugins that are installed and by default. These include [[inline]], [[pagecount]], [[brokenlinks]], -[[smiley]], and [[search]]. Of these, [[inline]] is enabled by default. +[[search]], [[smiley]], and even [[haiku]]. +Of these, [[inline]] is enabled by default. To enable other plugins, use the `--plugin` switch described in [[usage]], or the equivalent line in [[ikiwiki.setup]]. diff --git a/doc/plugins/haiku.mdwn b/doc/plugins/haiku.mdwn new file mode 100644 index 000000000..977272cf6 --- /dev/null +++ b/doc/plugins/haiku.mdwn @@ -0,0 +1,14 @@ +This plugin allows inserting a randomly generated haiku into a wiki page. +Just type \\[[haiku hint="argument with a bear"]]. + +[[haiku hint="argument with a bear"]] + +The hint parameter can be omitted, it only provides the generator a hint at +what to write the haiku about. If no hint is given, it might base it on the +page name. Since the vocabulary it knows is very small, many hints won't +affect the result at all. + +This plugin is included in ikiwiki, but is not enabled by default. + +You need to have the Coy module installed for this plugin to do anything +interesting. That does all the heavy lifting.