X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/40f88c9240a994fbcc5efccce69f6766da8613ed..df22dd5cbdb50f5686d15af7d288de05c4629029:/doc/plugins/write/external.mdwn diff --git a/doc/plugins/write/external.mdwn b/doc/plugins/write/external.mdwn index 47834567a..272f74a7c 100644 --- a/doc/plugins/write/external.mdwn +++ b/doc/plugins/write/external.mdwn @@ -13,7 +13,7 @@ easier you can do the same thing in your favorite language. ;-) There's now a second external plugin, the [[rst]] plugin, written in python. It uses a `proxy.py`, a helper library for ikiwiki python plugins. -[[toc ]] +[[!toc ]] ## How external plugins use XML RPC @@ -29,7 +29,7 @@ stdin, using XML RPC. Dispatch the command, and return its result to stdout, also using XML RPC. After reading a command, and before returning the result, the plugin can output XML RPC requests of its own, calling functions in ikiwiki. Note: *Never* make an XML RPC request at any other -time. Ikiwiki won't be listening for it, and you will deadlock. +time. IkiWiki won't be listening for it, and you will deadlock. When ikiwiki starts up an external plugin, the first RPC it will make is to call the plugin's `import()` function. That function typically makes @@ -44,7 +44,7 @@ supported in ikiwiki version 2.6. ## Accessing data structures -Ikiwiki has a few global data structures such as `%config`, which holds +IkiWiki has a few global data structures such as `%config`, which holds its configuration. External plugins can use the `getvar` and `setvar` RPCs to access any such global hash. To get the "url" configuration value, call `getvar("config", "url")`. To set it, call @@ -85,7 +85,7 @@ language as part of their XML RPC interface. XML RPC has a limitation that it does not have a way to pass undef/NULL/None. There is an extension to the protocol that supports this, -but it is not yet available in the [[cpan XML::RPC]] library used by +but it is not yet available in the [[!cpan XML::RPC]] library used by ikiwiki. Until the extension is available, ikiwiki allows undef to be communicated @@ -134,12 +134,12 @@ large quantity of data conversion going on. In contrast, `preprocess` hooks are called generally rarely, and pass around minimal data. External plugins should avoid making RPC calls unnecessarily (ie, in a loop). -Memoizing the results of appropriate RPC calls is one good way to minimise the +Memoizing the results of appropriate RPC calls is one good way to minimize the number of calls. Injecting a replacement for a commonly called ikiwiki function could result in a lot more RPC calls than expected and slow -eveything down. `pagetitle`, for instance, is called about 100 times +everything down. `pagetitle`, for instance, is called about 100 times per page build. Whenever possible, you should tell ikiwiki to memoize injected functions.