# HG changeset patch # User Paul Boddie # Date 1341960495 -7200 # Node ID ddbddda9e2671a8d2eaf8858b76877b87acc6fdb # Parent 1af773c486012a3a17695aa5dfa396c097b87736 Added formatting-related functions from ImprovedTableParser. diff -r 1af773c48601 -r ddbddda9e267 MoinSupport.py --- a/MoinSupport.py Mon Jun 25 00:18:57 2012 +0200 +++ b/MoinSupport.py Wed Jul 11 00:48:15 2012 +0200 @@ -563,6 +563,12 @@ # Page parsing and formatting of embedded content. +def getPageParserClass(request): + + "Using 'request', return a parser class for the current page's format." + + return getParserClass(request, request.page.pi["format"]) + def getParserClass(request, format): """ @@ -575,6 +581,38 @@ except wikiutil.PluginMissingError: return wikiutil.searchAndImportPlugin(request.cfg, "parser", "plain") +def getFormatterClass(request, format): + + """ + Return a formatter class using the 'request' for the given output 'format', + returning a plain text formatter if no formatter can be found for the + specified 'format'. + """ + + try: + return wikiutil.searchAndImportPlugin(request.cfg, "formatter", format or "plain") + except wikiutil.PluginMissingError: + return wikiutil.searchAndImportPlugin(request.cfg, "formatter", "plain") + +def formatText(text, request, fmt, parser_cls=None): + + """ + Format the given 'text' using the specified 'request' and formatter 'fmt'. + Suppress line anchors in the output, and fix lists by indicating that a + paragraph has already been started. + """ + + if not parser_cls: + parser_cls = getPageParserClass(request) + parser = parser_cls(text, request, line_anchors=False) + + old_fmt = request.formatter + request.formatter = fmt + try: + return redirectedOutput(request, parser, fmt, inhibit_p=True) + finally: + request.formatter = old_fmt + def redirectedOutput(request, parser, fmt, **kw): "A fixed version of the request method of the same name."