Coverage for src/renaissance/integrations/tree_sitter/factory.py: 95%
20 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-02 13:12 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-10-02 13:12 +0000
1"""AI: Factory for building tree-sitter AST patterns from text."""
3from collections.abc import Sequence
5from renaissance.integrations.tree_sitter.adapter import TreeSitterAdapter
6from renaissance.integrations.tree_sitter.lst import LSTNode
7from renaissance.utils.ast_utils import replace_dollar
10class TreeSitterPatternFactory:
11 """AI: Factory for building tree-sitter AST patterns from text."""
13 def __init__(self, adapter: TreeSitterAdapter, language: str = "python"):
14 """AI: Prepare a pattern factory for creating tree-sitter AST patterns from text."""
15 self.adapter = adapter
16 self.language = language
18 def create(self, text: str) -> LSTNode:
19 """AI: Parse text with tree-sitter and return the root node of the resulting LST."""
20 text = replace_dollar(text)
21 if isinstance(self.adapter, TreeSitterAdapter):
22 tree = self.adapter.parse_code(text)
23 return self.adapter.to_lst(text, tree).root
24 return self.adapter.to_lst(text).root
26 def create_statements(self, text: str) -> Sequence[LSTNode]:
27 """AI: Parse text and return its top-level statement nodes."""
28 return self.create(text).children
30 def create_statement(self, text: str) -> LSTNode:
31 """AI: Parse text and return its last top-level statement node."""
32 return self.create_statements(text)[-1]
34 def create_expression(self, text: str) -> LSTNode:
35 """AI: Parse text and return the last expression node of its last statement."""
36 return self.create_statement(text).children[-1]