My omnium-gatherom of scripts and source code.
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))