Skip to content

Commit 50c4307

Browse files
committed
chore: Update tree-sitter to 0.25
Fixes #183
1 parent cd716e0 commit 50c4307

File tree

3 files changed

+63
-80
lines changed

3 files changed

+63
-80
lines changed

keymap_drawer/dts.py

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import tree_sitter_devicetree as ts
1717
from pcpp.preprocessor import Action, OutputDirective, Preprocessor # type: ignore
18-
from tree_sitter import Language, Node, Parser, Tree
18+
from tree_sitter import Language, Node, Parser, Query, QueryCursor, Tree
1919

2020
logger = logging.getLogger(__name__)
2121

@@ -115,6 +115,10 @@ class DeviceTree:
115115

116116
_custom_data_header = "__keymap_drawer_data__"
117117

118+
_root_query = Query(TS_LANG, '(document (node name: (identifier) @nodename (#eq? @nodename "/")) @rootnode)')
119+
_override_query = Query(TS_LANG, "(document (node name: (reference label: (identifier))) @overridenode)")
120+
_chosen_query = Query(TS_LANG, '(node name: (identifier) @nodename (#eq? @nodename "chosen")) @chosennode')
121+
118122
def __init__(
119123
self,
120124
in_str: str,
@@ -144,55 +148,25 @@ def __init__(
144148
self.override_nodes = [DTNode(node, self.ts_buffer) for node in self._find_override_ts_nodes(tree)]
145149
self.chosen_nodes = [DTNode(node, self.ts_buffer) for node in self._find_chosen_ts_nodes(tree)]
146150

147-
@staticmethod
148-
def _find_root_ts_nodes(tree: Tree) -> list[Node]:
151+
@classmethod
152+
def _find_root_ts_nodes(cls, tree: Tree) -> list[Node]:
149153
return sorted(
150-
TS_LANG.query(
151-
"""
152-
(document
153-
(node
154-
name: (identifier) @nodename
155-
(#eq? @nodename "/")
156-
) @rootnode
157-
)
158-
"""
159-
)
160-
.captures(tree.root_node)
161-
.get("rootnode", []),
154+
QueryCursor(cls._root_query).captures(tree.root_node).get("rootnode", []),
162155
key=lambda node: node.start_byte,
163156
)
164157

165-
@staticmethod
166-
def _find_override_ts_nodes(tree: Tree) -> list[Node]:
158+
@classmethod
159+
def _find_override_ts_nodes(cls, tree: Tree) -> list[Node]:
167160
return sorted(
168-
TS_LANG.query(
169-
"""
170-
(document
171-
(node
172-
name: (reference
173-
label: (identifier)
174-
)
175-
) @overridenode
176-
)
177-
"""
178-
)
179-
.captures(tree.root_node)
180-
.get("overridenode", []),
161+
QueryCursor(cls._override_query).captures(tree.root_node).get("overridenode", []),
181162
key=lambda node: node.start_byte,
182163
)
183164

184-
@staticmethod
185-
def _find_chosen_ts_nodes(tree: Tree) -> list[Node]:
165+
@classmethod
166+
def _find_chosen_ts_nodes(cls, tree: Tree) -> list[Node]:
186167
return sorted(
187-
TS_LANG.query(
188-
"""
189-
(node
190-
name: (identifier) @nodename
191-
(#eq? @nodename "chosen")
192-
) @chosennode
193-
"""
194-
)
195-
.set_max_start_depth(2)
168+
QueryCursor(cls._chosen_query)
169+
.set_max_start_depth(2) # type: ignore
196170
.captures(tree.root_node)
197171
.get("chosennode", []),
198172
key=lambda node: node.start_byte,
@@ -225,13 +199,15 @@ def on_error_handler(file, line, msg): # type: ignore
225199

226200
def get_compatible_nodes(self, compatible_value: str) -> list[DTNode]:
227201
"""Return a list of nodes that have the given compatible value."""
228-
query = TS_LANG.query(
229-
rf"""
230-
(node
231-
(property name: (identifier) @prop value: (string_literal) @propval)
232-
(#eq? @prop "compatible") (#eq? @propval "\"{compatible_value}\"")
233-
) @node
234-
"""
202+
query = QueryCursor(
203+
Query(
204+
TS_LANG,
205+
rf"""
206+
(node (property name: (identifier) @prop value: (string_literal) @propval)
207+
(#eq? @prop "compatible") (#eq? @propval "\"{compatible_value}\"")
208+
) @node
209+
""",
210+
)
235211
)
236212
nodes = chain.from_iterable(query.captures(node).get("node", []) for node in self.root_nodes)
237213
return sorted(

poetry.lock

Lines changed: 38 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ dependencies = [
1212
"pyyaml ~= 6.0",
1313
"platformdirs ~= 4.0",
1414
"pydantic-settings ~= 2.2",
15-
"tree-sitter ~= 0.24.0",
15+
"tree-sitter ~= 0.25.0",
1616
"tree-sitter-devicetree ~= 0.14.0",
1717
"pyparsing ~= 3.2"
1818
]

0 commit comments

Comments
 (0)