Coverage for src / renaissance / integrations / tree_sitter / factory.py: 95%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-09-09 14:04 +0000

1from collections.abc import Sequence 

2 

3from renaissance.integrations.tree_sitter.adapter import TreeSitterAdapter 

4from renaissance.integrations.tree_sitter.lst import LSTNode 

5from renaissance.utils.ast_utils import replace_dollar 

6 

7 

8class TreeSitterPatternFactory: 

9 def __init__(self, adapter: TreeSitterAdapter, language: str = "python"): 

10 self.adapter = adapter 

11 self.language = language 

12 

13 def create(self, text: str) -> LSTNode: 

14 text = replace_dollar(text) 

15 if isinstance(self.adapter, TreeSitterAdapter): 

16 tree = self.adapter.parse_code(text) 

17 return self.adapter.to_lst(text, tree).root 

18 return self.adapter.to_lst(text).root 

19 

20 def create_statements(self, text: str) -> Sequence[LSTNode]: 

21 return self.create(text).children 

22 

23 def create_statement(self, text: str) -> LSTNode: 

24 return self.create_statements(text)[-1] 

25 

26 def create_expression(self, text: str) -> LSTNode: 

27 return self.create_statement(text).children[-1]