pokemon/tools/parse/generic/macro_line.py
Zack Buhman a921a44b66 parse: move tokenize_line/tokenize_lines to a new module
At times I forget what I have already written. I hope that this might help keep
things more organized.
2023-07-31 16:23:55 -07:00

23 lines
680 B
Python

def tokenize_params(params):
for param in params:
if '|' in param:
yield [p.strip() for p in param.split(' |')]
else:
yield param.strip()
def tokenize_line(line):
line = line.split(';')[0].strip()
key_params = line.split(' ', maxsplit=1)
if len(key_params) == 1:
return tuple(key_params)
else:
key, params = key_params
params = [p.strip() for p in params.split(',')]
return key, list(tokenize_params(params))
def tokenize_lines(lines, prefix=""):
for line in filter(bool, lines):
line = line.strip()
if line.startswith(prefix):
yield tokenize_line(line)