Files
crib/grammar/ruby.scm

322 lines
4.6 KiB
Scheme

; This is an injection test - it should hight all heredoc content as bash code
;; !bash - this part should be ignored (anything after the first wordbreak after the `!`)
(heredoc_content) @ruby_injection
;; #ffffff #000000 0 0 0 1
[
(identifier)
(global_variable)
] @variable
;; #fbb152 #000000 0 0 0 1
[
"alias"
"begin"
"do"
"end"
"ensure"
"module"
"rescue"
"then"
] @keyword
;; #fbb152 #000000 0 0 0 1
"class" @keyword.type
;; #fbb152 #000000 0 0 0 1
[
"return"
"yield"
] @keyword.return
;; #fbb152 #000000 0 0 0 1
[
"and"
"or"
"in"
"not"
] @keyword.operator
;; #fbb152 #000000 0 0 0 1
[
"def"
"undef"
] @keyword.function
(method
"end" @keyword.function)
;; #fbb152 #000000 0 0 0 1
[
"case"
"else"
"elsif"
"if"
"unless"
"when"
"then"
] @keyword.conditional
(if
"end" @keyword.conditional)
;; #fbb152 #000000 0 0 0 1
[
"for"
"until"
"while"
"break"
"redo"
"retry"
"next"
] @keyword.repeat
;; #ebda8c #000000 0 0 0 1
(constant) @constant
;; #fbb152 #000000 0 0 0 1
[
"rescue"
"ensure"
] @keyword.exception
;; #aad84c #000000 0 0 0 3
"defined?" @function
;; #aad84c #000000 0 0 0 3
(call
receiver: (constant)? @type
method: [
(identifier)
(constant)
;; #ff5689 #000000 0 0 0 2
] @function.call)
(alias
(identifier) @function)
(setter
(identifier) @function)
(method
name: [
(identifier) @function
(constant) @type
])
(singleton_method
name: [
(identifier) @function
(constant) @type
])
(class
name: (constant) @type)
(module
name: (constant) @type)
(superclass
(constant) @type)
;; #ffffff #000000 0 0 0 1
[
(class_variable)
(instance_variable)
] @variable.member
((identifier) @keyword.modifier
(#match? @keyword.modifier "^(private|protected|public)$" ))
;; #fbb152 #000000 0 0 0 3
(program
(call
(identifier) @keyword.import)
(#match? @keyword.import "^(require|require_relative|load)$"))
;; #fbb152 #000000 0 0 0 4
((identifier) @constant.builtin
(#match? @constant.builtin "^(__callee__|__dir__|__id__|__method__|__send__|__ENCODING__|__FILE__|__LINE__)$" ))
;; #aad84c #000000 0 0 0 3
((identifier) @function.builtin
(#match? @function.builtin "^(attr_reader|attr_writer|attr_accessor|module_function)$" ))
((call
!receiver
method: (identifier) @function.builtin)
(#match? @function.builtin "^(include|extend|prepend|refine|using)"))
((identifier) @keyword.exception
(#match? @keyword.exception "^(raise|fail|catch|throw)" ))
;; #ffffff #000000 0 0 0 1
[
(self)
(super)
] @variable.builtin
;; #ffffff #000000 0 0 0 1
(method_parameters
(identifier) @variable.parameter)
(lambda_parameters
(identifier) @variable.parameter)
(block_parameters
(identifier) @variable.parameter)
(splat_parameter
(identifier) @variable.parameter)
(hash_splat_parameter
(identifier) @variable.parameter)
(optional_parameter
(identifier) @variable.parameter)
(destructured_parameter
(identifier) @variable.parameter)
(block_parameter
(identifier) @variable.parameter)
(keyword_parameter
(identifier) @variable.parameter)
;; #aad84c #000000 0 0 0 1
[
(string_content)
(heredoc_content)
"\""
"`"
] @string
;; #fbb152 #000000 0 0 0 1
[
(heredoc_beginning)
(heredoc_end)
] @label
;; #bd9ae6 #000000 0 0 0 2
[
(bare_symbol)
(simple_symbol)
(delimited_symbol)
(hash_key_symbol)
] @string.special.symbol
;; #e6a24c #000000 0 0 0 2
(regex
(string_content) @string.regexp)
;; #e6a24c #000000 0 0 0 2
(escape_sequence) @string.escape
;; #ebda8c #000000 0 0 0 2
(integer) @number
;; #ebda8c #000000 0 0 0 2
(float) @number.float
;; #51eeba #000000 0 0 0 1
(true) @boolean.true
;; #ee513a #000000 0 0 0 1
(false) @boolean.false
;; #ee8757 #000000 0 0 0 1
(nil) @constant.nil
;; #AAAAAA #000000 0 1 0 1
(comment) @comment
;; #51eeba #000000 0 0 0 3
((program
.
(comment) @shebang @nospell)
(#match? @shebang "^#!/"))
;; #ffffff #000000 0 0 0 1
[
"!"
"="
">>"
"<<"
">"
"<"
"**"
"*"
"/"
"%"
"+"
"-"
"&"
"|"
"^"
"%="
"+="
"-="
"*="
"/="
"=~"
"!~"
"?"
":"
] @operator
;; #ffffff #000000 0 1 0 1
[
"=="
"==="
"<=>"
"=>"
"->"
">="
"<="
"||"
"||="
"&&="
"&&"
"!="
".."
"..."
] @operator.ligature
;; #bd9ae6 #000000 0 0 0 1
[
","
";"
"."
"&."
"::"
] @punctuation.delimiter
(pair
":" @punctuation.delimiter)
;; #bd9ae6 #000000 0 0 0 1
[
"("
")"
"["
"]"
"{"
"}"
"%w("
"%i("
] @punctuation.bracket
(regex
"/" @punctuation.bracket)
(block_parameters
"|" @punctuation.bracket)
;; #e6a24c #000000 0 0 0 2
(interpolation
"#{" @punctuation.special
"}" @punctuation.special)