Use this to implement html sanitization or anything else that needs to
modify the body of a page after it has been fully converted to html.
-The function is passed named parameters: "page" and "content", and
-should return the sanitized content.
+The function is passed named parameters: "page", "destpage", and "content",
+and should return the sanitized content.
### format
The difference between format and sanitize is that sanitize only acts on
the page body, while format can modify the entire html page including the
-header and footer inserted by ikiwiki, the html document type, etc.
+header and footer inserted by ikiwiki, the html document type, etc. (It
+should not rely on always being passed the entire page, as it won't be
+when the page is being previewed.)
The function is passed named parameters: "page" and "content", and
should return the formatted content.
Passed a page and an extension, returns the filename that page will be
rendered to.
-## Internal use pages
+## Miscellaneous
+
+### Internal use pages
Sometimes it's useful to put pages in the wiki without the overhead of
having them be rendered to individual html files. Such internal use pages
PageSpecs glob patterns, but instead only by a special `internal()`
[[ikiwiki/PageSpec]].
-## RCS plugins
+### RCS plugins
ikiwiki's support for [[revision_control_systems|rcs]] also uses pluggable
perl modules. These are in the `IkiWiki::RCS` namespace, for example
See [[RCS_details|rcs/details]] for some more info.
-## PageSpec plugins
+### PageSpec plugins
It's also possible to write plugins that add new functions to
[[PageSpecs|ikiwiki/PageSpec]]. Such a plugin should add a function to the
against. It may also be passed additional, named parameters. It should return
a IkiWiki::SuccessReason object if the match succeeds, or an
IkiWiki::FailReason object if the match fails.
+
+### Setup plugins
+
+The ikiwiki setup file is loaded using a pluggable mechanism. If you
+look at the top of [[ikiwiki.setup]], it starts with
+'use IkiWiki::Setup::Standard', and the rest of the file is passed to
+that module's import method.
+
+It's possible to write other modules in the `IkiWiki::Setup::` namespace that
+can be used to configure ikiwiki in different ways. These modules should,
+when imported, populate `$IkiWiki::Setup::raw_setup` with a reference
+to a hash containing all the config items.
+
+By the way, to parse a ikiwiki setup file, a program just needs to
+do something like `use IkiWiki::Setup; my %setup=IkiWiki::Setup::load($filename)`