Terminata implementazione fixata del cmdString

master
Guido Longoni 2019-09-27 20:40:13 +02:00
parent 92bc86c48b
commit 1d4d9d5a37
1 changed files with 5 additions and 4 deletions

View File

@ -7,6 +7,7 @@ Created on Fri Sep 27 14:35:31 2019
""" """
import commands as cmd import commands as cmd
import functools
import re import re
@ -24,12 +25,12 @@ def cmdString(cmdName, **cmdArgs):
raise Warning('Forniti argomenti sconosciuti!') raise Warning('Forniti argomenti sconosciuti!')
argDict = { ** { a: cmdArgs[a] for a in mandatory_args}, argDict = { ** { a: cmdArgs[a] for a in mandatory_args},
** { a: cmdArgs[a] if a in my_args else '' for a in optional_args} } ** { a: cmdArgs[a] if a in my_args else '' for a in optional_args} }
command = cmdDict['command']
arg_groups = [i.group(1) for i in re.finditer(r'[^;]((\{[^}]*\};)+\{[^}]*\})[^;]',cmd.MKPcommands[cmdName]['command'])] arg_groups = [i.group(1) for i in re.finditer(r'[^;]((\{[^}]*\};)+\{[^}]*\})[^;]',command)]
replacements = [(g,';'.join([a.format(**argDict) for a in g.split(';') if len(a.format(**argDict)) > 0])) for g in arg_groups] replacements = [(g,';'.join([a.format(**argDict) for a in g.split(';') if len(a.format(**argDict)) > 0])) for g in arg_groups]
command = functools.reduce(lambda x,y: x.replace(y[0],y[1]),replacements,command).format(**argDict)
return str(cmd.DEFprefix['begin'] if cmdDict['defPrefix'] else cmdDict['begin']) \ return str(cmd.DEFprefix['begin'] if cmdDict['defPrefix'] else cmdDict['begin']) \
+ re.sub(r';+', ';', cmdDict['command'].format(**argDict)) \ + command \
+ str(cmd.DEFprefix['end'] + str(cmd.DEFprefix['end']
if cmdDict['defPrefix'] else cmdDict['end']) if cmdDict['defPrefix'] else cmdDict['end'])