# HG changeset patch # User Paul Boddie # Date 1303852177 -7200 # Node ID 31563ff29eb19046ce9f88920078f3d7bbcd8356 # Parent afddbe14481f44c74415a148bc879eff2c2359c1 Attempted to support more Wiki syntax in summaries/titles using parsers and formatters. This doesn't always work, particularly where WikiNames are in use. diff -r afddbe14481f -r 31563ff29eb1 EventAggregatorSupport.py --- a/EventAggregatorSupport.py Mon Apr 18 23:43:22 2011 +0200 +++ b/EventAggregatorSupport.py Tue Apr 26 23:09:37 2011 +0200 @@ -68,16 +68,6 @@ timezone_olson_regexp = re.compile(timezone_olson_str, re.UNICODE) timezone_offset_regexp = re.compile(timezone_offset_str, re.UNICODE) -verbatim_regexp = re.compile(ur'(?:' - ur'<.*?)\)>>' - ur'|' - ur'\[\[Verbatim\((?P.*?)\)\]\]' - ur'|' - ur'`(?P.*?)`' - ur'|' - ur'{{{(?P.*?)}}}' - ur')', re.UNICODE) - # Utility functions. def getCategoryPattern(request): @@ -273,17 +263,29 @@ tmtuple.tm_sec ) -def getSimpleWikiText(text): +def getSimpleWikiText(text, event_page): """ - Return the plain text representation of the given 'text' which may employ - certain Wiki syntax features, such as those providing verbatim or monospaced - text. + Return the plain text representation of the given 'text' from the given + 'event_page'. """ - # NOTE: Re-implementing support for verbatim text and linking avoidance. - - return "".join([s for s in verbatim_regexp.split(text) if s is not None]) + # Get a parser for the page and a formatter for plain text. + + page = event_page.page + request = page.request + parser_cls = getParserClass(request, event_page.getFormat()) + old_fmt = page.formatter or request.formatter + + try: + fmt = getFormatter(request, "text/plain", page) + + # Return the formatted text. + + return formatText(text, request, fmt, parser_cls) + + finally: + restoreFormatter(request, old_fmt, page) def getEncodedWikiText(text): @@ -530,12 +532,12 @@ # Lists (whose elements may be quoted). elif term in ("topics", "categories"): - desc = [getSimpleWikiText(value.strip()) for value in desc.split(",") if value.strip()] + desc = [value.strip() for value in desc.split(",") if value.strip()] # Labels which may well be quoted. elif term in ("title", "summary", "description", "location"): - desc = getSimpleWikiText(desc.strip()) + desc = desc.strip() if desc is not None: @@ -2179,4 +2181,12 @@ return request.redirectedOutput(parser.format, fmt, inhibit_p=True) +def restoreFormatter(request, fmt, page): + + """ + Using 'request', restore formatter 'fmt' on the request and on the given 'page'. + """ + + request.formatter = page.formatter = fmt + # vim: tabstop=4 expandtab shiftwidth=4 diff -r afddbe14481f -r 31563ff29eb1 actions/EventAggregatorSummary.py --- a/actions/EventAggregatorSummary.py Mon Apr 18 23:43:22 2011 +0200 +++ b/actions/EventAggregatorSummary.py Tue Apr 26 23:09:37 2011 +0200 @@ -339,7 +339,7 @@ else: request.write("DTEND;VALUE=DATE:%04d%02d%02d\r\n" % end.next_day().as_date().as_tuple()) - request.write("SUMMARY:%s\r\n" % getQuotedText(event_summary)) + request.write("SUMMARY:%s\r\n" % getQuotedText(getSimpleWikiText(event_summary, event_page))) # Optional details. @@ -396,7 +396,7 @@ link = event_page.getPageURL(request) request.write('\r\n') - request.write('%s\r\n' % wikiutil.escape(event_summary)) + request.write('%s\r\n' % wikiutil.escape(getSimpleWikiText(event_summary, event_page))) request.write('%s\r\n' % link) # Write a description according to the preferred source of diff -r afddbe14481f -r 31563ff29eb1 macros/EventAggregator.py --- a/macros/EventAggregator.py Mon Apr 18 23:43:22 2011 +0200 +++ b/macros/EventAggregator.py Tue Apr 26 23:09:37 2011 +0200 @@ -584,7 +584,7 @@ if is_ambiguous: output.append(fmt.icon("/!\\")) - output.append(event_page.linkToPage(request, event_summary)) + output.append(event_page.linkToPage(request, getSimpleWikiText(event_summary, event_page))) output.append(fmt.div(on=0)) # Add a pop-up element for long summaries. @@ -594,7 +594,7 @@ if is_ambiguous: output.append(fmt.icon("/!\\")) - output.append(event_page.linkToPage(request, event_summary)) + output.append(event_page.linkToPage(request, getSimpleWikiText(event_summary, event_page))) output.append(fmt.div(on=0)) output.append(fmt.div(on=0)) @@ -1413,7 +1413,7 @@ # Link to the page using the summary. output.append(fmt.table_cell(on=1, attrs=attrs)) - output.append(event_page.linkToPage(request, event_summary)) + output.append(event_page.linkToPage(request, getSimpleWikiText(event_summary, event_page))) output.append(fmt.table_cell(on=0)) output.append(fmt.table_row(on=0)) @@ -1591,7 +1591,7 @@ # Link to the page using the summary. output.append(fmt.listitem(on=1)) - output.append(event_page.linkToPage(request, event_summary)) + output.append(event_page.linkToPage(request, getSimpleWikiText(event_summary, event_page))) output.append(fmt.listitem(on=0)) output.append(fmt.bullet_list(on=0)) @@ -1647,7 +1647,7 @@ # Link to the page using the summary. output.append(fmt.paragraph(on=1)) - output.append(event_page.linkToPage(request, event_summary)) + output.append(event_page.linkToPage(request, getSimpleWikiText(event_summary, event_page))) output.append(fmt.paragraph(on=0)) # Start and end dates.