rearrange special function

This commit is contained in:
un-pogaz 2022-10-16 15:01:11 +02:00
parent 62cda3ea2f
commit 983bd742ab

View File

@ -896,36 +896,34 @@ class FormatterFuncsCaller():
if func_name: if func_name:
def call(*args, **kargs): def call(*args, **kargs):
args = [str('' if a is None else a) for a in args] def n(d):
kargs = {k:str('' if v is None else v) for k,v in kargs.items()} return str('' if d is None else d)
args = [n(a) for a in args]
kargs = {n(k):v for k,v in kargs.items()}
def raise_error(msg): def raise_error(msg):
raise ValueError(msg) raise ValueError(msg)
def raise_mixed(args, kargs):
if args and kargs:
raise_error(_('Invalid mixing keyword arguments and positional arguments'))
try: try:
# special function # special function
if func_name == 'set_globals': if func_name in ['arguments', 'globals', 'set_globals']:
raise_mixed(args, kargs) if args and kargs:
raise_error(_('Invalid mixing keyword arguments and positional arguments'))
kargs.update({a:'' for a in args}) kargs.update({a:'' for a in args})
formatter.global_vars.update(kargs)
rslt = kargs if func_name == 'arguments':
args = formatter.python_context_object.arguments or []
elif func_name == 'globals': for i,k in enumerate(kargs.keys()):
raise_mixed(args, kargs) if i == len(args): break
kargs.update({a:'' for a in args}) kargs[k] = str(args[i])
rslt = {k:formatter.global_vars.get(k, d) for k,d in kargs.items()}
elif func_name == 'globals':
elif func_name == 'arguments': kargs = {k:formatter.global_vars.get(k, d) for k,d in kargs.items()}
raise_mixed(args, kargs)
kargs.update({a:'' for a in args}) elif func_name == 'set_globals':
args = formatter.python_context_object.arguments if formatter.python_context_object.arguments else [] formatter.global_vars.update(kargs)
for i,k in enumerate(kargs.keys()):
if i == len(args): break
kargs[k] = str(args[i])
rslt = kargs rslt = kargs
else: else: