@@ -121,7 +121,7 @@ def get_global_statements(self) -> Iterator[Node]:
121121
122122
123123class TreeSitterExtractorEngine (TreeSitterBaseEngine ):
124- query : ScriptQueryBinding
124+ query : ScriptQueryBinding | BashQueryBinding
125125 language_toolkit : LanguageToolkit
126126 namespaces : set [BaseNamespace ]
127127
@@ -142,34 +142,47 @@ def __init__(
142142 self .namespaces = self .namespaces .union (additional_namespaces )
143143
144144 def get_new_object_names (self , node : Node ) -> Iterator [Node ]:
145+ if not isinstance (self .query , ScriptQueryBinding ):
146+ return
145147 cursor = QueryCursor (self .query .new_object_name )
146148 yield from self .get_captured_nodes (cursor , node )
147149
148150 def get_property_names (self , node : Node ) -> Iterator [Node ]:
151+ if not isinstance (self .query , ScriptQueryBinding ):
152+ return
149153 cursor = QueryCursor (self .query .property_name )
150154 yield from self .get_captured_nodes (cursor , node )
151155
152156 def get_processed_property_names (self , node : Node ) -> Iterator [Tuple [Node , str ]]:
153157 """Generates captured property name nodes and their associated proper names (see process_property
154158 for details), e.g.: [(node0, "StartInfo"), (node1, "RedirectStandardOutput")]."""
159+ if not isinstance (self .query , ScriptQueryBinding ):
160+ return
155161 for pt_node in self .get_property_names (node ):
156162 pt_name = self .language_toolkit .process_property (pt_node , self .get_str (pt_node ))
157163 if pt_name :
158164 yield pt_node , pt_name
159165
160166 def get_imported_constants (self , node : Node ) -> Iterator [Node ]:
167+ if not isinstance (self .query , ScriptQueryBinding ):
168+ return
161169 cursor = QueryCursor (self .query .imported_constant_name )
162170 yield from self .get_captured_nodes (cursor , node )
163171
164172 def get_processed_imported_constants (self , node : Node ) -> Iterator [Tuple [Node , str ]]:
165173 """Generates captured imported constant nodes and their associated proper names (see process_imported_constant
166174 for details), e.g.: [(node0, "ssl.CERT_NONE"), (node1, "win32con.FILE_ATTRIBUTE_HIDDEN")]."""
175+ if not isinstance (self .query , ScriptQueryBinding ):
176+ return
167177 for ic_node in self .get_imported_constants (node ):
168178 ic_name = self .language_toolkit .process_imported_constant (ic_node , self .get_str (ic_node ))
169179 if ic_name :
170180 yield ic_node , ic_name
171181
172182 def get_namespaces (self , node : Optional [Node ] = None ) -> List [Tuple [Node , str ]]:
183+ if not isinstance (self .query , ScriptQueryBinding ):
184+ return []
185+
173186 target_node = self .tree .root_node if node is None else node
174187 cursor = QueryCursor (self .query .namespace )
175188 namespace_captures : List [Tuple [Node , str ]] = []
@@ -181,10 +194,15 @@ def get_namespaces(self, node: Optional[Node] = None) -> List[Tuple[Node, str]]:
181194 return sorted (namespace_captures , key = self .get_node_capture_sort_key )
182195
183196 def get_processed_namespaces (self , node : Optional [Node ] = None ) -> Iterator [BaseNamespace ]:
197+ if not isinstance (self .query , ScriptQueryBinding ):
198+ return
184199 for ns_node , query_name in self .get_namespaces (node ):
185200 yield from self .language_toolkit .process_namespace (ns_node , query_name , self .get_str )
186201
187202 def get_direct_method_call (self , node : Node ) -> Optional [Node ]:
203+ if not isinstance (self .query , ScriptQueryBinding ):
204+ return None
205+
188206 cursor = QueryCursor (self .query .direct_method_call )
189207 captures = cursor .captures (node )
190208 for nodes in captures .values ():
0 commit comments