[wiki/macro] LostSoulsInGroups : gestion des cas [[|]]

This commit is contained in:
Vincent Le Gallic 2014-03-06 16:47:53 +01:00
parent f8e0ced954
commit d0d7f71576

View file

@ -31,15 +31,25 @@ def macro_LostSoulsInGroups(macro, args):
isgroup = request.cfg.cache.page_group_regex.search isgroup = request.cfg.cache.page_group_regex.search
grouppages = request.rootpage.getPageList(user='', filter=isgroup) grouppages = request.rootpage.getPageList(user='', filter=isgroup)
srch = re.compile("^ \* [^ ]*", re.M) # Expression matchant un WikiNom
wikiname_expr = "[^][| ]+"
# Cas où le wikinom est tout seul
wikiname_alone = "(?P<wikiname>%s)" % wikiname_expr
# Cas où il est avec des [[]], éventuellement avec un |
wikiname_aliased = "\[\[([^|]+\|)?(?P<wikiname2>%s)\]\]" % wikiname_expr
# Fusion des cas
wikiname = "(%s|%s)" % (wikiname_alone, wikiname_aliased)
# Contexte
srch = "^ \* %s" % wikiname
srch = re.compile(srch)
for pg in grouppages: for pg in grouppages:
pged = PageEditor(request, pg) pged = PageEditor(request, pg)
pagelines = pged.getlines() pagelines = pged.getlines()
for lin in pagelines: for lin in pagelines:
srchS = srch.match(lin) srchS = srch.match(lin)
if srchS: if srchS:
st = srchS.group() dic = srchS.groupdict()
st = st[3:] st = dic["wikiname"] or dic["wikiname2"]
try: try:
usr = userlist.index(st) usr = userlist.index(st)
except ValueError: except ValueError: