Coverage for keyvalues1/parser.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-11 00:18 +0200

1from lark import Lark 

2 

3from keyvalues1.transformers import TreeToJson 

4from keyvalues1.types import KV1Dict 

5 

6 

7class KeyValues1: 

8 grammar = """ 

9 pair: string value 

10 value: string | dict 

11 dict: "{" (pair)* "}" 

12 string: ESCAPED_STRING 

13 

14 %import common.ESCAPED_STRING 

15 %import common.CPP_COMMENT 

16 %import common.WS 

17 %ignore CPP_COMMENT 

18 %ignore WS 

19 """ 

20 

21 parser = Lark(grammar, start="pair") 

22 

23 transformer = TreeToJson() 

24 

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])