From 2334bc502af2ed2b19b327963c048c3161120977 Mon Sep 17 00:00:00 2001 From: nemunaire Date: Tue, 11 Jul 2017 07:31:53 +0200 Subject: [PATCH] alias: add syntax to handle default variable replacement --- modules/alias.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/alias.py b/modules/alias.py index b4ab4ca..701639c 100644 --- a/modules/alias.py +++ b/modules/alias.py @@ -76,7 +76,7 @@ def get_variable(name, msg=None): elif name in context.data.getNode("variables").index: return context.data.getNode("variables").index[name]["value"] else: - return "" + return None def list_variables(user=None): @@ -108,12 +108,12 @@ def set_variable(name, value, creator): context.save() -def replace_variables(cnts, msg=None): +def replace_variables(cnts, msg): """Replace variables contained in the content Arguments: cnt -- content where search variables - msg -- optional message where pick some variables + msg -- Message where pick some variables """ unsetCnt = list() @@ -122,12 +122,12 @@ def replace_variables(cnts, msg=None): resultCnt = list() for cnt in cnts: - for res in re.findall("\\$\{(?P[a-zA-Z0-9:]+)\}", cnt): - rv = re.match("([0-9]+)(:([0-9]*))?", res) + for res, name, default in re.findall("\\$\{(([a-zA-Z0-9:]+)(?:-([^}]+))?)\}", cnt): + rv = re.match("([0-9]+)(:([0-9]*))?", name) if rv is not None: varI = int(rv.group(1)) - 1 - if varI > len(msg.args): - cnt = cnt.replace("${%s}" % res, "", 1) + if varI >= len(msg.args): + cnt = cnt.replace("${%s}" % res, default, 1) elif rv.group(2) is not None: if rv.group(3) is not None and len(rv.group(3)): varJ = int(rv.group(3)) - 1 @@ -142,9 +142,10 @@ def replace_variables(cnts, msg=None): cnt = cnt.replace("${%s}" % res, msg.args[varI], 1) unsetCnt.append(varI) else: - cnt = cnt.replace("${%s}" % res, get_variable(res), 1) + cnt = cnt.replace("${%s}" % res, get_variable(name) or default, 1) resultCnt.append(cnt) + # Remove used content for u in sorted(set(unsetCnt), reverse=True): msg.args.pop(u)