summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/haiku.pm54
-rwxr-xr-xMakefile.PL3
-rw-r--r--debian/changelog2
-rw-r--r--doc/plugins.mdwn3
-rw-r--r--doc/plugins/haiku.mdwn14
5 files changed, 73 insertions, 3 deletions
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/<br>\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 <joeyh@debian.org> Thu, 4 May 2006 14:46:46 -0400
+ -- Joey Hess <joeyh@debian.org> 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.