reviewed this again

master
Joey Hess 2008-07-10 00:36:57 -04:00
parent 73c7c4ebf7
commit 8cafbc5de6
1 changed files with 27 additions and 25 deletions

View File

@ -46,11 +46,13 @@ being edited.
Plugins should, when imported, call `hook()` to hook into ikiwiki's Plugins should, when imported, call `hook()` to hook into ikiwiki's
processing. The function uses named parameters, and use varies depending on processing. The function uses named parameters, and use varies depending on
the type of hook being registered -- see below. Note that a plugin can call the type of hook being registered -- see below. A plugin can call
the function more than once to register multiple hooks. All calls to the function more than once to register multiple hooks.
`hook()` should be passed a "type" parameter, which gives the type of
hook, a "id" paramter, which should be a unique string for this plugin, and All calls to `hook()` should be passed a "type" parameter, which gives the
a "call" parameter, which tells what function to call for the hook. type of hook, a "id" parameter, which should be a unique string for this
plugin, and a "call" parameter, which tells what function to call for the
hook.
An optional "last" parameter, if set to a true value, makes the hook run An optional "last" parameter, if set to a true value, makes the hook run
after all other hooks of its type. Useful if the hook depends on some other after all other hooks of its type. Useful if the hook depends on some other
@ -99,6 +101,18 @@ built when the wiki is refreshed. The function is passed a reference to an
array of pages that will be rebuilt, and can modify the array, either array of pages that will be rebuilt, and can modify the array, either
adding or removing files from it. adding or removing files from it.
### scan
hook(type => "scan", id => "foo", call => \&scan);
This hook is called early in the process of building the wiki, and is used
as a first pass scan of the page, to collect metadata about the page. It's
mostly used to scan the page for WikiLinks, and add them to `%links`.
Present in IkiWiki 2.40 and later.
The function is passed named parameters "page" and "content". Its return
value is ignored.
### filter ### filter
hook(type => "filter", id => "foo", call => \&filter); hook(type => "filter", id => "foo", call => \&filter);
@ -154,23 +168,11 @@ and later.
Plugins that implement linkify must also implement a scan hook, that scans Plugins that implement linkify must also implement a scan hook, that scans
for the links on the page and adds them to `%links`. for the links on the page and adds them to `%links`.
### scan
hook(type => "scan", id => "foo", call => \&scan);
This hook is called early in the process of building the wiki, and is used
as a first pass scan of the page, to collect metadata about the page. It's
mostly used to scan the page for WikiLinks, and add them to `%links`.
Present in IkiWiki 2.40 and later.
The function is passed named parameters "page" and "content". Its return
value is ignored.
### htmlize ### htmlize
hook(type => "htmlize", id => "ext", call => \&htmlize); hook(type => "htmlize", id => "ext", call => \&htmlize);
Runs on the raw source of a page and turns it into html. The id parameter Runs on the source of a page and turns it into html. The id parameter
specifies the filename extension that a file must have to be htmlized using specifies the filename extension that a file must have to be htmlized using
this plugin. This is how you can add support for new and exciting markup this plugin. This is how you can add support for new and exciting markup
languages to ikiwiki. languages to ikiwiki.
@ -258,9 +260,9 @@ state is loaded, and with no session information.
hook(type => "auth", id => "foo", call => \&auth); hook(type => "auth", id => "foo", call => \&auth);
This hook can be used to implement a different authentication method than This hook can be used to implement an authentication method. When a user
the standard web form. When a user needs to be authenticated, each registered needs to be authenticated, each registered auth hook is called in turn, and
auth hook is called in turn, and passed a CGI object and a session object. passed a CGI object and a session object.
If the hook is able to authenticate the user, it should set the session If the hook is able to authenticate the user, it should set the session
object's "name" parameter to the authenticated user's name. Note that object's "name" parameter to the authenticated user's name. Note that
@ -331,7 +333,7 @@ called. It can be used to validate the form, but should not display it.
hook(type => "savestate", id => "foo", call => \&savestate); hook(type => "savestate", id => "foo", call => \&savestate);
This hook is called wheneven ikiwiki normally saves its state, just before This hook is called whenever ikiwiki normally saves its state, just before
the state is saved. The function can save other state, modify values before the state is saved. The function can save other state, modify values before
they're saved, etc. they're saved, etc.
@ -339,7 +341,7 @@ they're saved, etc.
To import the ikiwiki plugin interface: To import the ikiwiki plugin interface:
use IkiWiki '1.00'; use IkiWiki '2.00';
This will import several variables and functions into your plugin's This will import several variables and functions into your plugin's
namespace. These variables and functions are the ones most plugins need, namespace. These variables and functions are the ones most plugins need,
@ -411,8 +413,8 @@ function that is called after the error message is printed, to do any final
cleanup. cleanup.
Note that while any plugin can use this for a fatal error, plugins should Note that while any plugin can use this for a fatal error, plugins should
try to avoid dying on bad input, as that will halt the entire wiki build try to avoid dying on bad input when building a page, as that will halt
and make the wiki unusable. So for example, if a the entire wiki build and make the wiki unusable. So for example, if a
[[ikiwiki/PreProcessorDirective]] is passed bad parameters, it's better to [[ikiwiki/PreProcessorDirective]] is passed bad parameters, it's better to
return an error message, which can appear on the wiki page, rather than return an error message, which can appear on the wiki page, rather than
calling error(). calling error().