My omnium-gatherom of scripts and source code.
at main 40 lines 1.1 kB view raw
1import re 2import itertools 3 4def ltrim(s: str, target = " ") -> str: 5 return ''.join(list(itertools.dropwhile(lambda x: x == target, s))) 6 7def param_to_pt(param: str) -> (str, str): 8 pr = re.search("\w*$", param).span() 9 n = param[pr[0]:pr[1]].strip() 10 t = param[:pr[0]].strip() 11 return (n, t) 12 13def fn_name(fn: str) -> str: 14 return re.search("\w*\(", fn).group()[:-1] 15 16def fn_out(fn: str) -> str: 17 return fn[:re.search("\w*\(", fn).span()[0]].rstrip() 18 19def params(fn: str) -> [str]: 20 param_list = re.search("\(.*\)", fn).group()[:-1][1:].split(',') 21 return list(map(param_to_pt, param_list)) 22 23def build_param_list(plist: (str, str)) -> str: 24 out = "" 25 comma = "" 26 for p in plist: 27 out += comma + p[0] + ": " + p[1] 28 comma = ", " 29 return out 30 31def build_fn(fn: str) -> str: 32 name = fn_name(fn) 33 out = fn_out(fn) 34 ps = build_param_list(params(fn)) 35 return "export @symbol(\"%s\") fn %s(%s) %s;" % (name, name, ps, out) 36 37file = "process.txt" 38with open(file) as file: 39 for item in file: 40 print(build_fn(item))