Hi Alex,
The only example of a macro that I have at the moment is the quick toc macro (Native_SimpleWiki::macro_quicktoc($node)), the implementation of which you can find in the Native_SimpleWiki module.
The macro callback function is passed a pointer to the macro node, by the emitter, meaning that all parsing has been completed (the document tree has been created) and emitting has been processed to the point of this node. The entire tree can be traversed by the macro method through parent and children properties of the macro node.
The macro code implements its effects by modifying these document tree nodes as needed to get desired results. You'll see that my quicktoc macro (warts and all), actually generates some wiki markup, calls another instance of simplewiki to process it, and then jams the resulting html in the node's "output" property.
What properties are available on a node and how should they be modified you ask?? <grin> I'm currently working on documenting this whole thing, and I will release the documentation within days or at most weeks. Best I can do for now.
Since the macro is called by the emitter, no further parsing (other than some link parsing from what I can see - this will also be documented) takes place at this stage, unless you call the parser yourself, as I have done with the quicktoc macro.
When the macro function is registered, php just passes a pointer. However the macro function would of course have to be loaded in memory for the pointer to be available, so if you want to avoid that you'll have to think of a way of making those decisions outside the simplewiki scope.
Hope this helps a bit. I'll notify here when I publish documentation. I'm using Doxygen and it's going pretty well, so I should be able to just copy the generated html documentation pages to the
simplewiki.org website. And since the documentation is generated from structured annotation, the code will itself be better documented.
In general I'm currently working toward an RC1 release (release candidate 1).
Best,
- Henrik