]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/plugins/write/external.mdwn
* external: Add getargv and setargv methods to allow access to ikiwiki's
[ikiwiki.git] / doc / plugins / write / external.mdwn
index e699e43e15464f4972789b1369fcddb75e5ff07e..2ee841e612d149dbddf3036f2474c5ff1803609c 100644 (file)
@@ -8,6 +8,9 @@ written in perl, but is intended to be an example of how to write an
 external plugin in your favorite programming language. Wow us at how much
 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 ]]
 
 ## How external plugins use XML RPC
@@ -45,6 +48,14 @@ to access any such global hash. To get the "url" configuration value,
 call `getvar("config", "url")`. To set it, call 
 `setvar("config", "url", "http://example.com/)`.
 
+The `%pagestate` is a special hash with a more complex format. To access
+it, external plugins can use the `getstate` and `setstate` RPCs. To access
+stored state, call `getstate("page", "id", "key")`, and to store state,
+call `setstate("page", "id", "key", "value")`.
+
+To access ikiwiki's ARGV, call `getargv()`. To change its ARGV, call
+`setargv(value)`.
+
 ## Notes on function parameters
 
 The [[plugin_interface_documentation|write]] talks about functions that take
@@ -87,13 +98,10 @@ to 1.
 
 Since XML RPC can't pass around references to objects, it can't be used
 with functions that take or return such references. That means you can't
-use XML RPC for `cgi` or `formbuilder` hooks (which are passed CGI and
+100% use XML RPC for `cgi` or `formbuilder` hooks (which are passed CGI and
 FormBuilder perl objects), or use it to call `template()` (which returns a
 perl HTML::Template object).
 
-Also. the `getopt` hook doesn't work, as ARGV is not available to the external
-plugin.
-
 ## Performance issues
 
 Since each external plugin is a separate process, when ikiwiki is