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
« prev ^ index » next coverage.py v7.13.4, created at 2026-09-09 14:04 +0000
1from collections.abc import Sequence
3from renaissance.integrations.tree_sitter.adapter import TreeSitterAdapter
4from renaissance.integrations.tree_sitter.lst import LSTNode
5from renaissance.utils.ast_utils import replace_dollar
8class TreeSitterPatternFactory:
9 def __init__(self, adapter: TreeSitterAdapter, language: str = "python"):
10 self.adapter = adapter
11 self.language = language
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
20 def create_statements(self, text: str) -> Sequence[LSTNode]:
21 return self.create(text).children
23 def create_statement(self, text: str) -> LSTNode:
24 return self.create_statements(text)[-1]
26 def create_expression(self, text: str) -> LSTNode:
27 return self.create_statement(text).children[-1]