infiniloom_engine/parser/
queries.rs1pub const PYTHON: &str = r#"
8 (function_definition
9 name: (identifier) @name) @function
10
11 (class_definition
12 name: (identifier) @name) @class
13
14 (class_definition
15 body: (block
16 (function_definition
17 name: (identifier) @name))) @method
18"#;
19
20pub const JAVASCRIPT: &str = r#"
22 (function_declaration
23 name: (_) @name) @function
24
25 (class_declaration
26 name: (identifier) @name) @class
27
28 (method_definition
29 name: (property_identifier) @name) @method
30
31 (arrow_function) @function
32
33 (variable_declarator
34 name: (identifier) @name
35 value: (arrow_function)) @function
36
37 (export_statement
38 (function_declaration
39 name: (identifier) @name)) @function
40"#;
41
42pub const TYPESCRIPT: &str = r#"
44 (function_declaration
45 name: (identifier) @name) @function
46
47 (class_declaration
48 name: (type_identifier) @name) @class
49
50 (method_definition
51 name: (property_identifier) @name) @method
52
53 (interface_declaration
54 name: (type_identifier) @name) @interface
55
56 (type_alias_declaration
57 name: (type_identifier) @name) @type
58
59 (arrow_function) @function
60
61 (variable_declarator
62 name: (identifier) @name
63 value: (arrow_function)) @function
64"#;
65
66pub const RUST: &str = r#"
68 (function_item
69 name: (identifier) @name) @function
70
71 (struct_item
72 name: (type_identifier) @name) @struct
73
74 (enum_item
75 name: (type_identifier) @name) @enum
76
77 (impl_item
78 type: (type_identifier) @name) @impl
79
80 (trait_item
81 name: (type_identifier) @name) @trait
82
83 (mod_item
84 name: (identifier) @name) @module
85
86 (macro_definition
87 name: (identifier) @name) @macro
88"#;
89
90pub const GO: &str = r#"
92 (function_declaration
93 name: (identifier) @name) @function
94
95 (method_declaration
96 name: (field_identifier) @name) @method
97
98 (type_declaration
99 (type_spec
100 name: (type_identifier) @name)) @type
101
102 (type_declaration
103 (type_spec
104 name: (type_identifier) @name
105 type: (struct_type))) @struct
106
107 (type_declaration
108 (type_spec
109 name: (type_identifier) @name
110 type: (interface_type))) @interface
111"#;
112
113pub const JAVA: &str = r#"
115 (method_declaration
116 name: (identifier) @name) @method
117
118 (class_declaration
119 name: (identifier) @name) @class
120
121 (interface_declaration
122 name: (identifier) @name) @interface
123
124 (enum_declaration
125 name: (identifier) @name) @enum
126
127 (constructor_declaration
128 name: (identifier) @name) @constructor
129"#;
130
131pub const C: &str = r#"
133 (function_definition
134 declarator: (function_declarator
135 declarator: (identifier) @name)) @function
136
137 (declaration
138 declarator: (function_declarator
139 declarator: (identifier) @name)) @function
140
141 (struct_specifier
142 name: (type_identifier) @name) @struct
143
144 (enum_specifier
145 name: (type_identifier) @name) @enum
146
147 (type_definition
148 declarator: (type_identifier) @name) @type
149"#;
150
151pub const CPP: &str = r#"
153 (function_definition
154 declarator: (function_declarator
155 declarator: (identifier) @name)) @function
156
157 (function_definition
158 declarator: (function_declarator
159 declarator: (qualified_identifier
160 name: (identifier) @name))) @function
161
162 (class_specifier
163 name: (type_identifier) @name) @class
164
165 (struct_specifier
166 name: (type_identifier) @name) @struct
167
168 (enum_specifier
169 name: (type_identifier) @name) @enum
170
171 (namespace_definition
172 name: (identifier) @name) @namespace
173
174 (template_declaration
175 (function_definition
176 declarator: (function_declarator
177 declarator: (identifier) @name))) @function
178"#;
179
180pub const CSHARP: &str = r#"
182 (method_declaration
183 name: (identifier) @name) @method
184
185 (class_declaration
186 name: (identifier) @name) @class
187
188 (interface_declaration
189 name: (identifier) @name) @interface
190
191 (struct_declaration
192 name: (identifier) @name) @struct
193
194 (enum_declaration
195 name: (identifier) @name) @enum
196
197 (property_declaration
198 name: (identifier) @name) @property
199
200 (namespace_declaration
201 name: (identifier) @name) @namespace
202"#;
203
204pub const RUBY: &str = r#"
206 (method
207 name: (identifier) @name) @method
208
209 (singleton_method
210 name: (identifier) @name) @method
211
212 (class
213 name: (constant) @name) @class
214
215 (module
216 name: (constant) @name) @module
217
218 (alias
219 name: (identifier) @name) @alias
220"#;
221
222pub const BASH: &str = r#"
224 (function_definition
225 name: (word) @name) @function
226"#;
227
228pub const PHP: &str = r#"
230 (function_definition
231 name: (name) @name) @function
232
233 (method_declaration
234 name: (name) @name) @method
235
236 (class_declaration
237 name: (name) @name) @class
238
239 (interface_declaration
240 name: (name) @name) @interface
241
242 (trait_declaration
243 name: (name) @name) @trait
244"#;
245
246pub const KOTLIN: &str = r#"
248 (function_declaration
249 (simple_identifier) @name) @function
250
251 (class_declaration
252 (type_identifier) @name) @class
253
254 (object_declaration
255 (type_identifier) @name) @class
256
257 (interface_declaration
258 (type_identifier) @name) @interface
259"#;
260
261pub const SWIFT: &str = r#"
263 (function_declaration
264 name: (simple_identifier) @name) @function
265
266 (class_declaration
267 name: (type_identifier) @name) @class
268
269 (struct_declaration
270 name: (type_identifier) @name) @struct
271
272 (enum_declaration
273 name: (type_identifier) @name) @enum
274
275 (protocol_declaration
276 name: (type_identifier) @name) @protocol
277"#;
278
279pub const SCALA: &str = r#"
281 (function_definition
282 name: (identifier) @name) @function
283
284 (class_definition
285 name: (identifier) @name) @class
286
287 (object_definition
288 name: (identifier) @name) @object
289
290 (trait_definition
291 name: (identifier) @name) @trait
292"#;
293
294pub const HASKELL: &str = r#"
296 (function
297 name: (variable) @name) @function
298
299 (signature
300 name: (variable) @name) @signature
301
302 (type_synomym
303 name: (type) @name) @type
304
305 (newtype
306 name: (type) @name) @newtype
307
308 (adt
309 name: (type) @name) @data
310
311 (class
312 name: (type) @name) @class
313"#;
314
315pub const ELIXIR: &str = r#"
317 (call
318 target: (identifier) @keyword
319 (arguments
320 (call
321 target: (identifier) @name)))
322
323 (call
324 target: (identifier) @keyword
325 (arguments
326 (identifier) @name))
327
328 (call
329 target: (identifier) @keyword
330 (arguments
331 (alias) @name))
332"#;
333
334pub const CLOJURE: &str = r#"
336 (list_lit
337 (sym_lit) @keyword
338 (sym_lit) @name)
339"#;
340
341pub const OCAML: &str = r#"
343 (value_definition
344 (let_binding
345 pattern: (value_name) @name)) @function
346
347 (type_definition
348 (type_binding
349 name: (type_constructor) @name)) @type
350
351 (module_definition
352 (module_binding
353 name: (module_name) @name)) @module
354"#;
355
356pub const LUA: &str = r#"
358 (function_declaration
359 name: (identifier) @name) @function
360
361 (function_declaration
362 name: (dot_index_expression
363 field: (identifier) @name)) @function
364
365 (local_function_declaration
366 name: (identifier) @name) @function
367
368 (function_definition_statement
369 name: (identifier) @name) @function
370"#;
371
372pub const R: &str = r#"
374 (left_assignment
375 name: (identifier) @name
376 value: (function_definition)) @function
377
378 (equals_assignment
379 name: (identifier) @name
380 value: (function_definition)) @function
381"#;
382
383#[cfg(test)]
384mod tests {
385 use super::*;
386
387 #[allow(clippy::const_is_empty)]
390 #[test]
391 fn test_query_strings_not_empty() {
392 assert!(!PYTHON.is_empty());
393 assert!(!JAVASCRIPT.is_empty());
394 assert!(!TYPESCRIPT.is_empty());
395 assert!(!RUST.is_empty());
396 assert!(!GO.is_empty());
397 assert!(!JAVA.is_empty());
398 assert!(!C.is_empty());
399 assert!(!CPP.is_empty());
400 assert!(!CSHARP.is_empty());
401 assert!(!RUBY.is_empty());
402 assert!(!BASH.is_empty());
403 assert!(!PHP.is_empty());
404 assert!(!KOTLIN.is_empty());
405 assert!(!SWIFT.is_empty());
406 assert!(!SCALA.is_empty());
407 assert!(!HASKELL.is_empty());
408 assert!(!ELIXIR.is_empty());
409 assert!(!CLOJURE.is_empty());
410 assert!(!OCAML.is_empty());
411 assert!(!LUA.is_empty());
412 assert!(!R.is_empty());
413 }
414}