summaryrefslogtreecommitdiffstats
path: root/util/lang_conv.py
blob: a0da6c392d274896a39a67fc91dcf886faf442d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from pathlib import Path

langs = set()
files = Path('quantum/keymap_extras/').glob('keymap_*.h')
for file in files:
    langs.add(file.stem.replace('keymap_', ''))

for lang in langs:
    try:
        file = Path(f'quantum/keymap_extras/keymap_{lang}.h')
        print(f'Reading:{file}')
        collect = None
        out = []
        out += ['{']
        out += ['    "aliases": {']
        lines = file.read_text(encoding='utf-8').split('\n')
        for line in lines:

            if line.startswith("// Row"):
                # print(line)
                continue
            elif line.startswith("/*******************************************************************************"):
                raise Exception(f'Skipping:{file}')
            elif '/*' in line:
                collect = [line]
            elif '*/' in line:
                collect += [line]
                if 'copyright' in collect[0].lower():
                    collect = None
                    continue
                out += collect
                collect = None
            elif collect:
                collect += [line]

            elif '#define' in line:
                define = line.split()
                while len(define) < 5:
                    define.append("")

                if define[4] == "(backslash)":
                    define[4] = '\\\\'

                define[4] = " ".join(define[4:]).strip()
                define[4] = define[4].replace('"', '\\"')

                if define[4]:
                    out += [f'        "{define[2]}": {{']
                    out += [f'            "key": "{define[1]}",']
                    out += [f'            "label": "{define[4]}",']
                    out += [f'        }}']
                else:
                    out += [f'        "{define[2]}": {{']
                    out += [f'            "key": "{define[1]}"']
                    out += [f'        }}']

        out += ['    }']
        out += ['}']

        dump = Path(f'data/constants/keycodes/extras/keycodes_{lang}_0.0.1.hjson')
        print(f'Writing:{dump}')
        dump.write_text("\n".join(out), encoding='utf-8')

    except Exception as e:
        print(e)