ya2 · news · projects · code · about

some planning
[pmachines.git] / ya2 / tools / apply_gloss.py
CommitLineData
8ee66edd
FC
1import sys
2
3if len(sys.argv) != 2:
4 print('Usage: apply_gloss.py filename.egg')
5 sys.exit(0)
6
7
8def __process_line(idx, line, _out_lines):
9 if line.strip() != '<Scalar> envtype { GLOSS }':
10 mth = __process_nongloss_line
11 else: mth = __process_gloss_line
12 return mth(idx, line, _out_lines)
13
14
15def __process_nongloss_line(idx, line, _out_lines):
16 is_scal = line.strip().startswith('<Scalar> alpha-file { ')
17 if not idx or not (line.strip() == _out_lines[-1].strip() and is_scal):
18 _out_lines += [line.rstrip()]
19 return _out_lines
20
21
22def __process_gloss_line(idx, line, _out_lines):
23 _out_lines += [line.rstrip()]
24 outl = ''
25 for char in line:
26 if char == ' ': outl += ' '
27 else: break
28 outl += '<Scalar> alpha-file { %s }' % lines[idx - 1].strip()
29 return _out_lines + [outl]
30
31
32out_lines = []
33with open(sys.argv[1]) as fin:
34 lines = fin.readlines()
35 for _idx, _line in enumerate(lines):
36 out_lines = __process_line(_idx, _line, out_lines)
37
38
39with open(sys.argv[1], 'w') as fout:
40 list(map(lambda outl: fout.write(outl + '\n'), out_lines))