alias: add syntax to handle default variable replacement
This commit is contained in:
parent
c3f2c89c7c
commit
2334bc502a
@ -76,7 +76,7 @@ def get_variable(name, msg=None):
|
|||||||
elif name in context.data.getNode("variables").index:
|
elif name in context.data.getNode("variables").index:
|
||||||
return context.data.getNode("variables").index[name]["value"]
|
return context.data.getNode("variables").index[name]["value"]
|
||||||
else:
|
else:
|
||||||
return ""
|
return None
|
||||||
|
|
||||||
|
|
||||||
def list_variables(user=None):
|
def list_variables(user=None):
|
||||||
@ -108,12 +108,12 @@ def set_variable(name, value, creator):
|
|||||||
context.save()
|
context.save()
|
||||||
|
|
||||||
|
|
||||||
def replace_variables(cnts, msg=None):
|
def replace_variables(cnts, msg):
|
||||||
"""Replace variables contained in the content
|
"""Replace variables contained in the content
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
cnt -- content where search variables
|
cnt -- content where search variables
|
||||||
msg -- optional message where pick some variables
|
msg -- Message where pick some variables
|
||||||
"""
|
"""
|
||||||
|
|
||||||
unsetCnt = list()
|
unsetCnt = list()
|
||||||
@ -122,12 +122,12 @@ def replace_variables(cnts, msg=None):
|
|||||||
resultCnt = list()
|
resultCnt = list()
|
||||||
|
|
||||||
for cnt in cnts:
|
for cnt in cnts:
|
||||||
for res in re.findall("\\$\{(?P<name>[a-zA-Z0-9:]+)\}", cnt):
|
for res, name, default in re.findall("\\$\{(([a-zA-Z0-9:]+)(?:-([^}]+))?)\}", cnt):
|
||||||
rv = re.match("([0-9]+)(:([0-9]*))?", res)
|
rv = re.match("([0-9]+)(:([0-9]*))?", name)
|
||||||
if rv is not None:
|
if rv is not None:
|
||||||
varI = int(rv.group(1)) - 1
|
varI = int(rv.group(1)) - 1
|
||||||
if varI > len(msg.args):
|
if varI >= len(msg.args):
|
||||||
cnt = cnt.replace("${%s}" % res, "", 1)
|
cnt = cnt.replace("${%s}" % res, default, 1)
|
||||||
elif rv.group(2) is not None:
|
elif rv.group(2) is not None:
|
||||||
if rv.group(3) is not None and len(rv.group(3)):
|
if rv.group(3) is not None and len(rv.group(3)):
|
||||||
varJ = int(rv.group(3)) - 1
|
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)
|
cnt = cnt.replace("${%s}" % res, msg.args[varI], 1)
|
||||||
unsetCnt.append(varI)
|
unsetCnt.append(varI)
|
||||||
else:
|
else:
|
||||||
cnt = cnt.replace("${%s}" % res, get_variable(res), 1)
|
cnt = cnt.replace("${%s}" % res, get_variable(name) or default, 1)
|
||||||
resultCnt.append(cnt)
|
resultCnt.append(cnt)
|
||||||
|
|
||||||
|
# Remove used content
|
||||||
for u in sorted(set(unsetCnt), reverse=True):
|
for u in sorted(set(unsetCnt), reverse=True):
|
||||||
msg.args.pop(u)
|
msg.args.pop(u)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user