; Keywords [ "alias" "and" "begin" "break" "case" "class" "def" "do" "else" "elsif" "end" "ensure" "for" "if" "in" "module" "next" "or" "rescue" "retry" "return" "then" "unless" "until" "when" "while" "yield" ] @keyword (identifier) @variable ((identifier) @keyword (.match? @keyword "^(private|protected|public)$")) ; Function calls ((identifier) @function.method.builtin (.eq? @function.method.builtin "require")) "defined?" @function.method.builtin (call method: [(identifier) (constant)] @function.method) ; Function definitions (alias (identifier) @function.method) (setter (identifier) @function.method) (method name: [(identifier) (constant)] @function.method) (singleton_method name: [(identifier) (constant)] @function.method) ; Identifiers [ (class_variable) (instance_variable) ] @property ((identifier) @constant.builtin (.match? @constant.builtin "^__(FILE|LINE|ENCODING)__$")) (file) @constant.builtin (line) @constant.builtin (encoding) @constant.builtin (hash_splat_nil "**" @operator ) @constant.builtin ((constant) @constant (.match? @constant "^[A-Z\\d_]+$")) (constant) @type (self) @variable.special (super) @variable.special ; Literals [ (string) (bare_string) (subshell) (heredoc_body) (heredoc_beginning) ] @string [ (simple_symbol) (delimited_symbol) (hash_key_symbol) (bare_symbol) ] @string.special.symbol (regex) @string.regex (escape_sequence) @escape [ (integer) (float) ] @number [ (nil) (true) (false) ] @constant.builtin (comment) @comment ; Operators [ "!" "~" "+" "-" "**" "*" "/" "%" "<<" ">>" "&" "|" "^" ">" "<" "<=" ">=" "==" "!=" "=~" "!~" "<=>" "||" "&&" ".." "..." "=" "**=" "*=" "/=" "%=" "+=" "-=" "<<=" ">>=" "&&=" "&=" "||=" "|=" "^=" "=>" "->" (operator) ] @operator [ "," ";" "." ] @punctuation.delimiter [ "(" ")" "[" "]" "{" "}" "%w(" "%i(" ] @punctuation.bracket (interpolation "#{" @punctuation.special "}" @punctuation.special) @embedded