aboutsummaryrefslogtreecommitdiff
path: root/plugins
Commit message (Collapse)AuthorAge
* function injection overhaulJoey Hess2008-10-21
| | | | | | | | | | | Add an inject function, that can be used by plugins that want to replace one of ikiwiki's functions with their own version. (This is a scary thing that grubs through the symbol table, and replaces all exported occurances of a function with the injected version.) external: RPC functions can be injected to replace exported functions. Removed the stupid displaytime hook, and use injection instead.
* change example to override a real functionJoey Hess2008-10-21
|
* add getsetup hookJoey Hess2008-08-06
| | | | in python, even, wow
* scan hook works, remove NotImplemented exceptionmartin f. krafft2008-03-21
| | | | Signed-off-by: martin f. krafft <madduck@madduck.net>
* Do not output xml-rpc debuggingmartin f. krafft2008-03-21
| | | | Signed-off-by: martin f. krafft <madduck@madduck.net>
* Flesh out pythondemomartin f. krafft2008-03-21
| | | | | | | This implements most hooks with stupid demo code, and also still has some TODO items. Signed-off-by: martin f. krafft <madduck@madduck.net>
* Handle going down with an exceptionmartin f. krafft2008-03-21
| | | | | | | | We previously used None as a sentinel to exit, but None is now a proper value, so now it's the job of an exception-like object (except it isn't an exception). Signed-off-by: martin f. krafft <madduck@madduck.net>
* put XMLStreamParser in public namespacemartin f. krafft2008-03-21
| | | | | | | Since we might throw sub-class exceptions, the class should be in the public namespace, meaning its name should not be prefixed with _. Signed-off-by: martin f. krafft <madduck@madduck.net>
* Allow individual hook registration to override IDmartin f. krafft2008-03-21
| | | | | | | | | The preprocessor hooks need to specify IDs different from the ID used to initialise the proxy. Thus, the hook function now takes an optional id keyword argument and uses the ID used during initialisation if none is provided. Signed-off-by: martin f. krafft <madduck@madduck.net>
* Refactor remote procedure calls in the proxymartin f. krafft2008-03-21
| | | | | | | | | | | Add an rpc() method to the proxy to allow users to call remote procedures, and route the proxy's own import registration via this function. Also, implement convenience functions for the RPC calls exported in the IkiWiki::XML::RPC namespace. Signed-off-by: martin f. krafft <madduck@madduck.net>
* Make proxy object available to hook functionsmartin f. krafft2008-03-21
| | | | | | | Hook functions now get the proxy object as first argument to be able to use RPC via the proxy. Signed-off-by: martin f. krafft <madduck@madduck.net>
* add last parameter to plugin registrationmartin f. krafft2008-03-21
| | | | Signed-off-by: martin f. krafft <madduck@madduck.net>
* Allow external plugins to return no valuemartin f. krafft2008-03-21
| | | | | | | | | | | | | Instead of using the XML-RPC v2 extension <nil/>, which Perl's XML::RPC::Parser does not (yet) support (Joey's patch is pending), we agreed on a sentinel: {'null':''}, that is, a hash with a single key "null" pointing to the empty string. The Python proxy automatically converts None appropriately and raises an exception if a hook function should, by weird coincidence, attempt to return {'null':''}. Signed-off-by: martin f. krafft <madduck@madduck.net>
* first implementation of a python demomartin f. krafft2008-03-17
| | | | (cherry picked from commit bbdf127917a13b81cef50995098f479ef4fe1cf9)
* force data written to stdout to be a stringmartin f. krafft2008-03-17
| | | | (cherry picked from commit 65c24d4aeca6188f4423ad1809f2415285843155)
* Print traceback for unhandled exceptionsmartin f. krafft2008-03-17
| | | | (cherry picked from commit 10574a324e03cd0533e77f46ead6e4c6a6e5568f)
* rename register_hook to just hook, for consistency with the perlJoey Hess2008-03-15
|
* does not need to be executableJoey Hess2008-03-15
|
* fix debug methodmartin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit e924b6777ac0b6d04116f563f0fe749595e03d13)
* improve debug outputmartin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit 63c7e393692b44bfa69d8b78a936f58beadef2b2)
* remove todo comment about refactoringmartin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit c6e7416f65285eba154a6a9b08c1401490f68bd1)
* fix meta datamartin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit 4b039b81deef852759f2aa88ae04f38d792b9bf8)
* Bump rst plugin version to 0.3martin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit 338cacc006d3b58bc827a8009e9a991b0cabf367)
* Rewrite rst plugin for Python xml-rpc proxymartin f. krafft2008-03-15
| | | | | Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit c877e9b4b93b550710cb26e2b0bafad4922ff209)
* Provide XML-RPC proxy abstraction for Python pluginsmartin f. krafft2008-03-15
| | | | | | | | | The proxy module provides an abstraction to facilitate writing ikiwiki plugins in Python. Signed-off-by: martin f. krafft <madduck@madduck.net> (cherry picked from commit f347e83d82f26cdc59de17b754a78db58a933ea6)
* add debbug reference to SimpleXMLRPCDispatcher workaroundmartin f. krafft2008-03-12
| | | | Signed-off-by: martin f. krafft <madduck@madduck.net>
* Handle SimpleXMLRPCDispatcher arg count change in Py2.5martin f. krafft2008-03-12
| | | | | | | | SimpleXMLRPCDispatcher.__init__ takes 3 arguments instead of 1 since python 2.5, so we check for that with a hack, for I found no better way, other than catching a TypeError exception. Signed-off-by: martin f. krafft <madduck@madduck.net>
* * Rewritten rst plugin by madduck is a python program that communicates withjoey2007-10-15
| | | | | | ikiwiki via XML RPC. This should be much faster than the old plugin that had to fork python for every rst page render. Note that if you use the rst plugin, you now need to have the RPC::XML perl module installed.
* improve commentjoey2007-10-13
|
* memoization for injected RPC functions is a very, very good thingjoey2007-08-13
|
* * Fix --libdir to work at the command line.joey2007-08-13
* Plugins can now be written as standalone external programs, which can be written in any language that can do XML::RPC.