1def set_doappend(d, var, val, sep=' '): 2 values = (d.getVar(var, True) or '').split(sep) 3 if filter(bool, values): 4 d.appendVar(var, '%s%s' %(sep, val)) 5 else: 6 d.setVar(var, val) 7 8 9def listvar_to_list(d, list_var, sep=' '): 10 return list(filter(bool, (d.getVar(list_var, True) or '').split(sep))) 11 12 13def compose_list(d, fmtvar, *listvars, **kw): 14 import itertools 15 fmt = d.getVar(fmtvar, True) 16 lists = [listvar_to_list(d, x) for x in listvars] 17 lst = [fmt.format(*x) for x in itertools.product(*lists)] 18 return (kw.get('sep') or ' ').join(lst) 19 20 21def compose_list_zip(d, fmtvar, *listvars, **kw): 22 fmt = d.getVar(fmtvar, True) 23 lists = [listvar_to_list(d, x) for x in listvars] 24 lst = [fmt.format(*x) for x in zip(*lists)] 25 return (kw.get('sep') or ' ').join(lst) 26