aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/ruby/tags.scm
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-04-09 08:42:49 +0000
committerBlaž Hrastnik2021-04-09 09:57:46 +0000
commit4e31d1521bf9bb59f6485954d4ada16bf853c85a (patch)
treed8d05c9303701590dee6351eea693887dbab3981 /runtime/queries/ruby/tags.scm
parentc1e5733b02e4ba39b82d7b330fab0b2ded2220f2 (diff)
Add tree-sitter queries.
Diffstat (limited to 'runtime/queries/ruby/tags.scm')
-rw-r--r--runtime/queries/ruby/tags.scm64
1 files changed, 64 insertions, 0 deletions
diff --git a/runtime/queries/ruby/tags.scm b/runtime/queries/ruby/tags.scm
new file mode 100644
index 00000000..47ba1eb5
--- /dev/null
+++ b/runtime/queries/ruby/tags.scm
@@ -0,0 +1,64 @@
+; Method definitions
+
+(
+ (comment)* @doc
+ .
+ [
+ (method
+ name: (_) @name) @definition.method
+ (singleton_method
+ name: (_) @name) @definition.method
+ ]
+ (#strip! @doc "^#\\s*")
+ (#select-adjacent! @doc @definition.method)
+)
+
+(alias
+ name: (_) @name) @definition.method
+
+(setter
+ (identifier) @ignore)
+
+; Class definitions
+
+(
+ (comment)* @doc
+ .
+ [
+ (class
+ name: [
+ (constant) @name
+ (scope_resolution
+ name: (_) @name)
+ ]) @definition.class
+ (singleton_class
+ value: [
+ (constant) @name
+ (scope_resolution
+ name: (_) @name)
+ ]) @definition.class
+ ]
+ (#strip! @doc "^#\\s*")
+ (#select-adjacent! @doc @definition.class)
+)
+
+; Module definitions
+
+(
+ (module
+ name: [
+ (constant) @name
+ (scope_resolution
+ name: (_) @name)
+ ]) @definition.module
+)
+
+; Calls
+
+(call method: (identifier) @name) @reference.call
+
+(
+ [(identifier) (constant)] @name @reference.call
+ (#is-not? local)
+ (#not-match? @name "^(lambda|load|require|require_relative|__FILE__|__LINE__)$")
+)