]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/plugins/write/external.mdwn
Merge branch 'aggregateinternal'
[git.ikiwiki.info.git] / doc / plugins / write / external.mdwn
index fd343bda6bc89b1dc2b6886d6a46e31146ea5773..bda34b77188301c67cdf30c7dc85ac5ab492c008 100644 (file)
@@ -53,6 +53,9 @@ 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")`.
 
 stored state, call `getstate("page", "id", "key")`, and to store state,
 call `setstate("page", "id", "key", "value")`.
 
+To access ikiwiki's ARGV array, call `getargv()`. To change its ARGV, call
+`setargv(array)`.
+
 ## Notes on function parameters
 
 The [[plugin_interface_documentation|write]] talks about functions that take
 ## Notes on function parameters
 
 The [[plugin_interface_documentation|write]] talks about functions that take
@@ -76,6 +79,19 @@ Other languages might not find it so easy. If not, it might be a good idea
 to convert these named parameters into something more natural for the
 language as part of their XML RPC interface.
 
 to convert these named parameters into something more natural for the
 language as part of their XML RPC interface.
 
+## undef
+
+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
+ikiwiki.
+
+Until the extension is available, ikiwiki allows undef to be communicated
+over XML RPC by passing a sentinal value, a hash with a single key "null"
+with a value of an empty string. External plugins that need to communicate
+null values to or from ikiwiki will have to translate between undef and
+the sentinal.
+
 ## Function injection
 
 Some parts of ikiwiki are extensible by adding functions. For example, the
 ## Function injection
 
 Some parts of ikiwiki are extensible by adding functions. For example, the
@@ -99,9 +115,6 @@ with functions that take or return such references. That means you can't
 FormBuilder perl objects), or use it to call `template()` (which returns a
 perl HTML::Template object).
 
 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
 ## Performance issues
 
 Since each external plugin is a separate process, when ikiwiki is