Coverage for keyvalues1/parser.py: 100%
12 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-11 00:18 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-11 00:18 +0200
1from lark import Lark
3from keyvalues1.transformers import TreeToJson
4from keyvalues1.types import KV1Dict
7class KeyValues1:
8 grammar = """
9 pair: string value
10 value: string | dict
11 dict: "{" (pair)* "}"
12 string: ESCAPED_STRING
14 %import common.ESCAPED_STRING
15 %import common.CPP_COMMENT
16 %import common.WS
17 %ignore CPP_COMMENT
18 %ignore WS
19 """
21 parser = Lark(grammar, start="pair")
23 transformer = TreeToJson()
25 @classmethod
26 def parse(cls, raw_steam_app_info: str) -> KV1Dict:
27 tree = cls.parser.parse(raw_steam_app_info)
28 pair = cls.transformer.transform(tree)
29 return dict([pair])