Coverage for gws-app/gws/spec/generator/strings.py: 91%
23 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
1import re
3from . import base, util
6def collect(gen: base.Generator):
7 strings_dct = {}
9 for typ in gen.serverTypes:
10 _add_string(strings_dct, 'en', typ.name, typ.doc)
11 if typ.enumDocs:
12 for k, v in typ.enumDocs.items():
13 _add_string(strings_dct, 'en', typ.name + '.' + k, v)
15 for path in util.find_files(gen.rootDir, pattern=r'/strings(\..+)?\.ini$', deep=True):
16 base.log.debug(f'parsing strings from {path!r}')
17 d = util.parse_ini(util.read_file(path))
18 for lang, strs in d.items():
19 for uid, text in strs.items():
20 _add_string(strings_dct, lang, uid, text)
22 return strings_dct
25def _add_string(strings_dct, lang, uid, text):
26 """Add a docstring to the dict.
28 If the string starts with a [xx], override the given language.
29 """
31 text = (text or '').strip()
32 m = re.match(r'^\[(\w\w)](.+)$', text)
33 if m:
34 lang = m.group(1)
35 text = m.group(2).strip()
36 strings_dct.setdefault(lang, {})[uid] = text.replace('\\n', '\n')