haiku plugin
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 5 May 2006 04:15:47 +0000 (04:15 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Fri, 5 May 2006 04:15:47 +0000 (04:15 +0000)
IkiWiki/Plugin/haiku.pm [new file with mode: 0644]
Makefile.PL
debian/changelog
doc/plugins.mdwn
doc/plugins/haiku.mdwn [new file with mode: 0644]

diff --git a/IkiWiki/Plugin/haiku.pm b/IkiWiki/Plugin/haiku.pm
new file mode 100644 (file)
index 0000000..0e93e9d
--- /dev/null
@@ -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
index df119d5f0771ce2164de5c3e382d985f12255d12..74ad20c177da1d24788b296b364f830db38d7821 100755 (executable)
@@ -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:
index fb4a734bff52de6a80d6d3ad67253fe40cc3ee95..bd82cd48b19441de9b0a4bea30493338b36aaf52 100644 (file)
@@ -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
 
index 57ec8afb99db50cf9046357e5e361fe07eaa42f2..07c236057da5c2ff70ee73dd495de9395c12c7bc 100644 (file)
@@ -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 (file)
index 0000000..977272c
--- /dev/null
@@ -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.