From d0d7f71576d6b1d98302a9c78b9817fdea7c2cc1 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Thu, 6 Mar 2014 16:47:53 +0100 Subject: [PATCH] [wiki/macro] LostSoulsInGroups : gestion des cas [[|]] --- wiki/macro/LostSoulsInGroups.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/wiki/macro/LostSoulsInGroups.py b/wiki/macro/LostSoulsInGroups.py index 42740497..c9803767 100644 --- a/wiki/macro/LostSoulsInGroups.py +++ b/wiki/macro/LostSoulsInGroups.py @@ -31,15 +31,25 @@ def macro_LostSoulsInGroups(macro, args): isgroup = request.cfg.cache.page_group_regex.search 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%s)" % wikiname_expr + # Cas où il est avec des [[]], éventuellement avec un | + wikiname_aliased = "\[\[([^|]+\|)?(?P%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: pged = PageEditor(request, pg) pagelines = pged.getlines() for lin in pagelines: srchS = srch.match(lin) if srchS: - st = srchS.group() - st = st[3:] + dic = srchS.groupdict() + st = dic["wikiname"] or dic["wikiname2"] try: usr = userlist.index(st) except ValueError: