# HG changeset patch # User Paul Boddie # Date 1296865319 -3600 # Node ID d9316d0e772d1e4f371ede45f4a2ad05241cf98d # Parent 1e0cdf78d59c731532c1821fe7bd860fc897a89f Made "invocation"-style bracketed arguments optional for formatting terms that employ range information. Added regular expression commentary. diff -r 1e0cdf78d59c -r d9316d0e772d ImprovedMoinSearch.py --- a/ImprovedMoinSearch.py Sun Oct 03 21:38:06 2010 +0200 +++ b/ImprovedMoinSearch.py Sat Feb 05 01:21:59 2011 +0100 @@ -2,7 +2,7 @@ """ MoinMoin - ImprovedMoinSearch library - @copyright: 2010 Paul Boddie + @copyright: 2010, 2011 Paul Boddie @license: GNU GPL (v2 or later), see COPYING.txt for details. """ @@ -15,13 +15,21 @@ paragraph_regexp = re.compile(r"(?P(?:^[^#=\s].*$\n)+)", re.UNICODE | re.MULTILINE) def range_groups(min_name, max_name): - return r"(?:\((?P<%s>-?\d+)?(?:\s*-\s*(?P<%s>-?\d+))?\))" % (min_name, max_name) + return \ + r"(?:" # non-grouping containment of... + r"\(" # brackets around the arguments + r"(?P<%s>-?\d+)?" # optional first numeric argument + r"(?:\s*-\s*" # non-grouping containment of dash and spaces + r"(?P<%s>-?\d+)" # second numeric argument + r")?" # end containment, making dash and numeric argument optional + r"\)" # closing bracket + r")?" % (min_name, max_name) # end containment, making entire bracketed region optional format_options_regexp = re.compile( - r"(" - r"(?P(link|l):)" - r"|(?P(strong|str|bold|b):)" - r"|(?P(emphasis|em|italic|i):)" + r"(" # optional formatting qualifiers... + r"(?P(link|l):)" # link: + r"|(?P(strong|str|bold|b):)" # strong: + r"|(?P(emphasis|em|italic|i):)" # emphasis: r")*" r"(" r"(?P(heading|title|h)\s*" + range_groups("min_heading", "max_heading") + ")"