+ However, when {{{#!wiki or similar blocks are used, stuff breaks (since
+ that creates a second parser that doesn't get our StringIO buffer).
+ """
+ Parser = wikiutil.searchAndImportPlugin(request.cfg, "parser", 'wiki')
+ # Create a stringIO buffer, to capture the output
+ buffer = StringIO()
+ # Make the buffer look like the request, since the parser writes
+ # directly to the request
+ buffer.form = request.form
+ buffer.getText = request.getText
+ buffer.cfg = request.cfg
+ # Create a new formatter. Since we need to set its page, we can't use
+ # request.formatter.
+ from MoinMoin.formatter.text_html import Formatter
+ formatter = Formatter(request)
+ formatter.setPage(page)
+
+ # Create the parser and parse the page
+ parser = Parser(page.data, buffer)
+ parser.format(formatter)
+ # Return the captured buffer
+ return buffer.getvalue()
+
+# vim: set sw=4 sts=4 expandtab: