plugin.
What should the plugin do? Let's make it calculate and output the Fibonachi
-sequense. To output the next number in the sequence, all a user has to do
+sequence. To output the next number in the sequence, all a user has to do
is write this on a wiki page:
- \[[fib ]]
+ [[fib ]]
When the page is built, that'll be replaced by the next number in the
sequence.
}
This has hooked our plugin into the preprocess hook, which ikiwiki uses to
-expand [[PreprocessorDirectives|preprocessordirectives]]. Notice that "fib"
-has shown up again. It doesn't actually have to match the module name this
-time, but it generally will. This "fib" is telling ikiwiki what kind of
-PreprocessorDirective to handle, namely one that looks like this:
+expand [[PreprocessorDirectives|ikiwiki/preprocessordirective]]. Notice
+that "fib" has shown up again. It doesn't actually have to match the module
+name this time, but it generally will. This "fib" is telling ikiwiki what
+kind of PreprocessorDirective to handle, namely one that looks like this:
- \[[fib ]]
+ [[fib ]]
Notice the `\&preprocess`? This is how you pass a reference to a function,
and the `preprocess` function is the one that ikiwiki will call to expand
Feel free to try it out with a simple page like this:
- \[[fib ]], \[[fib ]], \[[fib ]], \[[fib ]], \[[fib ]]
+ [[fib ]], [[fib ]], [[fib ]], [[fib ]], [[fib ]]
Looks like it works ok, doesn't it? That creates a page that lists:
Obviously, using a global `$last` veriable was a bad idea. It would
work ok in a more regular cgi-based wiki, which only outputs one page per
run. But since ikiwiki is a wiki *compiler*, things are a bit more
-complicated. It't not very hard to fix, though, if we do want the seqense
+complicated. It's not very hard to fix, though, if we do want the sequence
to start from 1 in every page that uses it.
my %last;
}
As these security problems have demonstrated, even a simple input from the
-user needs to be checked thuroughly before being used by an ikiwiki plugin.
+user needs to be checked thoroughly before being used by an ikiwiki plugin.