1.1 --- a/ImprovedMoinSearch.py Sun Oct 03 21:38:06 2010 +0200
1.2 +++ b/ImprovedMoinSearch.py Sat Feb 05 01:21:59 2011 +0100
1.3 @@ -2,7 +2,7 @@
1.4 """
1.5 MoinMoin - ImprovedMoinSearch library
1.6
1.7 - @copyright: 2010 Paul Boddie <paul@boddie.org.uk>
1.8 + @copyright: 2010, 2011 Paul Boddie <paul@boddie.org.uk>
1.9 @license: GNU GPL (v2 or later), see COPYING.txt for details.
1.10 """
1.11
1.12 @@ -15,13 +15,21 @@
1.13 paragraph_regexp = re.compile(r"(?P<paragraph>(?:^[^#=\s].*$\n)+)", re.UNICODE | re.MULTILINE)
1.14
1.15 def range_groups(min_name, max_name):
1.16 - return r"(?:\((?P<%s>-?\d+)?(?:\s*-\s*(?P<%s>-?\d+))?\))" % (min_name, max_name)
1.17 + return \
1.18 + r"(?:" # non-grouping containment of...
1.19 + r"\(" # brackets around the arguments
1.20 + r"(?P<%s>-?\d+)?" # optional first numeric argument
1.21 + r"(?:\s*-\s*" # non-grouping containment of dash and spaces
1.22 + r"(?P<%s>-?\d+)" # second numeric argument
1.23 + r")?" # end containment, making dash and numeric argument optional
1.24 + r"\)" # closing bracket
1.25 + r")?" % (min_name, max_name) # end containment, making entire bracketed region optional
1.26
1.27 format_options_regexp = re.compile(
1.28 - r"("
1.29 - r"(?P<link>(link|l):)"
1.30 - r"|(?P<strong>(strong|str|bold|b):)"
1.31 - r"|(?P<em>(emphasis|em|italic|i):)"
1.32 + r"(" # optional formatting qualifiers...
1.33 + r"(?P<link>(link|l):)" # link:
1.34 + r"|(?P<strong>(strong|str|bold|b):)" # strong:
1.35 + r"|(?P<em>(emphasis|em|italic|i):)" # emphasis:
1.36 r")*"
1.37 r"("
1.38 r"(?P<heading>(heading|title|h)\s*" + range_groups("min_heading", "max_heading") + ")"