diff --git a/libs/grammars/ruby.json b/libs/grammars/ruby.json deleted file mode 100644 index cd74bd5..0000000 --- a/libs/grammars/ruby.json +++ /dev/null @@ -1,3181 +0,0 @@ -{ - "information_for_contributors": [ - "This file has been converted from https://github.com/Shopify/ruby-lsp/blob/master/vscode/grammars/ruby.cson.json", - "If you want to provide a fix or improvement, please create a pull request against the original repository.", - "Once accepted there, we are happy to receive an update request." - ], - "version": "https://github.com/Shopify/ruby-lsp/commit/2d5552a22f71ac75086c7f03d404df51e23f6535", - "name": "Ruby", - "scopeName": "source.ruby", - "patterns": [ - { - "captures": { - "1": { - "name": "keyword.control.class.ruby" - }, - "2": { - "name": "entity.name.type.class.ruby" - }, - "5": { - "name": "punctuation.separator.namespace.ruby" - }, - "7": { - "name": "punctuation.separator.inheritance.ruby" - }, - "8": { - "name": "entity.other.inherited-class.ruby" - }, - "11": { - "name": "punctuation.separator.namespace.ruby" - } - }, - "comment": "class Namespace::ClassName < OtherNamespace::OtherClassName", - "match": "\\b(class)\\s+(([a-zA-Z0-9_]+)((::)[a-zA-Z0-9_]+)*)\\s*((<)\\s*(([a-zA-Z0-9_]+)((::)[a-zA-Z0-9_]+)*))?", - "name": "meta.class.ruby" - }, - { - "captures": { - "1": { - "name": "keyword.control.module.ruby" - }, - "2": { - "name": "entity.name.type.module.ruby" - }, - "5": { - "name": "punctuation.separator.namespace.ruby" - } - }, - "match": "\\b(module)\\s+(([a-zA-Z0-9_]+)((::)[a-zA-Z0-9_]+)*)", - "name": "meta.module.ruby" - }, - { - "captures": { - "1": { - "name": "keyword.control.class.ruby" - }, - "2": { - "name": "punctuation.separator.inheritance.ruby" - } - }, - "match": "\\b(class)\\s*(<<)\\s*", - "name": "meta.class.ruby" - }, - { - "comment": "else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.", - "match": "(?>)=)", - "comment": "A local variable operation assignment (+=, -=, *=, /=)" - }, - { - "captures": { - "1": { - "name": "keyword.control.ruby" - }, - "3": { - "name": "variable.ruby" - }, - "4": { - "name": "keyword.operator.assignment.augmented.ruby" - } - }, - "match": "(?>)=)", - "comment": "A local variable operation assignment in a condition" - }, - { - "captures": { - "1": { - "name": "variable.ruby" - } - }, - "match": "^\\s*([_a-z][A-Za-z0-9_]*)\\s*(?==[^=>])", - "comment": "A local variable assignment" - }, - { - "captures": { - "1": { - "name": "keyword.control.ruby" - }, - "3": { - "name": "variable.ruby" - } - }, - "match": "(?]", - "comment": "A local variable assignment in a condition" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.constant.hashkey.ruby" - } - }, - "comment": "symbols as hash key (1.9 syntax)", - "match": "(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)", - "name": "constant.language.symbol.hashkey.ruby" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.constant.ruby" - } - }, - "comment": "symbols as hash key (1.8 syntax)", - "match": "(?[a-zA-Z_]\\w*(?>[?!])?)(?=\\s*=>)", - "name": "constant.language.symbol.hashkey.ruby" - }, - { - "comment": "everything being a reserved word, not a value and needing a 'end' is a..", - "match": "(?|_|\\*|\\$|\\?|:|\"|-[0adFiIlpv])", - "name": "variable.other.readwrite.global.pre-defined.ruby" - }, - { - "begin": "\\b(ENV)\\[", - "beginCaptures": { - "1": { - "name": "variable.other.constant.ruby" - } - }, - "end": "]", - "name": "meta.environment-variable.ruby", - "patterns": [ - { - "include": "$self" - } - ] - }, - { - "match": "\\b[A-Z]\\w*(?=((\\.|::)[A-Za-z]|\\[))", - "name": "support.class.ruby" - }, - { - "match": "\\b((abort|at_exit|autoload|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)\\b(?![?!])|autoload\\?|exit!)", - "name": "support.function.kernel.ruby" - }, - { - "match": "\\b[_A-Z]\\w*\\b", - "name": "variable.other.constant.ruby" - }, - { - "begin": "(->)\\(", - "beginCaptures": { - "1": { - "name": "support.function.kernel.ruby" - } - }, - "comment": "Lambda parameters.", - "end": "\\)", - "patterns": [ - { - "begin": "(?=[&*_a-zA-Z])", - "end": "(?=[,)])", - "patterns": [ - { - "include": "#method_parameters" - } - ] - }, - { - "include": "#method_parameters" - } - ] - }, - { - "begin": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\s+\n(\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n)\n\\s*(\\()", - "beginCaptures": { - "1": { - "name": "keyword.control.def.ruby" - }, - "2": { - "name": "entity.name.function.ruby" - }, - "3": { - "name": "punctuation.definition.parameters.ruby" - } - }, - "comment": "The method pattern comes from the symbol pattern. See there for an explanation.", - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.parameters.ruby" - } - }, - "name": "meta.function.method.with-arguments.ruby", - "patterns": [ - { - "begin": "(?=[&*_a-zA-Z])", - "end": "(?=[,)])", - "patterns": [ - { - "include": "#method_parameters" - } - ] - }, - { - "include": "#method_parameters" - } - ] - }, - { - "begin": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\s+\n(\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n)\n[ \\t]\n(?=[ \\t]*[^\\s#;]) # make sure the following is not comment", - "beginCaptures": { - "1": { - "name": "keyword.control.def.ruby" - }, - "2": { - "name": "entity.name.function.ruby" - } - }, - "comment": "same as the previous rule, but without parentheses around the arguments", - "end": "(?=;)|(?<=[\\w\\])}`'\"!?])(?=\\s*#|\\s*$)", - "name": "meta.function.method.with-arguments.ruby", - "patterns": [ - { - "begin": "(?=[&*_a-zA-Z])", - "end": "(?=,|;|\\s*#|\\s*$)", - "patterns": [ - { - "include": "#method_parameters" - } - ] - }, - { - "include": "#method_parameters" - } - ] - }, - { - "captures": { - "1": { - "name": "keyword.control.def.ruby" - }, - "3": { - "name": "entity.name.function.ruby" - } - }, - "comment": " the optional name is just to catch the def also without a method-name", - "match": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\b\n(\n \\s+\n (\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n ===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n )\n )\n)?", - "name": "meta.function.method.without-arguments.ruby" - }, - { - "match": "(?x)\n\\b\n(\n [\\d](?>_?\\d)* # 100_000\n (\\.(?![^[:space:][:digit:]])(?>_?\\d)*)? # fractional part\n ([eE][-+]?\\d(?>_?\\d)*)? # 1.23e-4\n |\n 0\n (?:\n [xX]\\h(?>_?\\h)*|\n [oO]?[0-7](?>_?[0-7])*|\n [bB][01](?>_?[01])*|\n [dD]\\d(?>_?\\d)*\n ) # A base indicator can only be used with an integer\n)\\b", - "name": "constant.numeric.ruby" - }, - { - "begin": ":'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "comment": "symbol literal with '' delimiter", - "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\['\\\\]", - "name": "constant.character.escape.ruby" - } - ] - }, - { - "begin": ":\"", - "beginCaptures": { - "0": { - "name": "punctuation.section.symbol.begin.ruby" - } - }, - "comment": "symbol literal with \"\" delimiter", - "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.section.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "comment": "Needs higher precedence than regular expressions.", - "match": "(?|=>|==|=~|!~|!=|;|$|\n if|else|elsif|then|do|end|unless|while|until|or|and\n )\n |\n $\n)", - "captures": { - "1": { - "name": "string.regexp.interpolated.ruby" - }, - "2": { - "name": "punctuation.section.regexp.ruby" - } - }, - "comment": "regular expression literal with interpolation", - "contentName": "string.regexp.interpolated.ruby", - "end": "((/[eimnosux]*))", - "patterns": [ - { - "include": "#regex_sub" - } - ] - }, - { - "begin": "%r{", - "beginCaptures": { - "0": { - "name": "punctuation.section.regexp.begin.ruby" - } - }, - "end": "}[eimnosux]*", - "endCaptures": { - "0": { - "name": "punctuation.section.regexp.end.ruby" - } - }, - "name": "string.regexp.interpolated.ruby", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_curly_r" - } - ] - }, - { - "begin": "%r\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.regexp.begin.ruby" - } - }, - "end": "][eimnosux]*", - "endCaptures": { - "0": { - "name": "punctuation.section.regexp.end.ruby" - } - }, - "name": "string.regexp.interpolated.ruby", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_brackets_r" - } - ] - }, - { - "begin": "%r\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.regexp.begin.ruby" - } - }, - "end": "\\)[eimnosux]*", - "endCaptures": { - "0": { - "name": "punctuation.section.regexp.end.ruby" - } - }, - "name": "string.regexp.interpolated.ruby", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_parens_r" - } - ] - }, - { - "begin": "%r<", - "beginCaptures": { - "0": { - "name": "punctuation.section.regexp.begin.ruby" - } - }, - "end": ">[eimnosux]*", - "endCaptures": { - "0": { - "name": "punctuation.section.regexp.end.ruby" - } - }, - "name": "string.regexp.interpolated.ruby", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_ltgt_r" - } - ] - }, - { - "begin": "%r([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.section.regexp.begin.ruby" - } - }, - "end": "\\1[eimnosux]*", - "endCaptures": { - "0": { - "name": "punctuation.section.regexp.end.ruby" - } - }, - "name": "string.regexp.interpolated.ruby", - "patterns": [ - { - "include": "#regex_sub" - } - ] - }, - { - "begin": "%I\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_brackets_i" - } - ] - }, - { - "begin": "%I\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_parens_i" - } - ] - }, - { - "begin": "%I<", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_ltgt_i" - } - ] - }, - { - "begin": "%I{", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_curly_i" - } - ] - }, - { - "begin": "%I([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "%i\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\]|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_brackets" - } - ] - }, - { - "begin": "%i\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\\\)|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_parens" - } - ] - }, - { - "begin": "%i<", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\>|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_ltgt" - } - ] - }, - { - "begin": "%i{", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\}|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_curly" - } - ] - }, - { - "begin": "%i([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "comment": "Cant be named because its not necessarily an escape.", - "match": "\\\\." - } - ] - }, - { - "begin": "%W\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_brackets_i" - } - ] - }, - { - "begin": "%W\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_parens_i" - } - ] - }, - { - "begin": "%W<", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_ltgt_i" - } - ] - }, - { - "begin": "%W{", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_curly_i" - } - ] - }, - { - "begin": "%W([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "%w\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\]|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_brackets" - } - ] - }, - { - "begin": "%w\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\\\)|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_parens" - } - ] - }, - { - "begin": "%w<", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\>|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_ltgt" - } - ] - }, - { - "begin": "%w{", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\}|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_curly" - } - ] - }, - { - "begin": "%w([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "comment": "Cant be named because its not necessarily an escape.", - "match": "\\\\." - } - ] - }, - { - "begin": "%[Qx]?\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_parens_i" - } - ] - }, - { - "begin": "%[Qx]?\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_brackets_i" - } - ] - }, - { - "begin": "%[Qx]?{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_curly_i" - } - ] - }, - { - "begin": "%[Qx]?<", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_ltgt_i" - } - ] - }, - { - "begin": "%[Qx]([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "%([^\\w\\s=])", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.interpolated.ruby", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "%q\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\\\)|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_parens" - } - ] - }, - { - "begin": "%q<", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\>|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_ltgt" - } - ] - }, - { - "begin": "%q\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\]|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_brackets" - } - ] - }, - { - "begin": "%q{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "match": "\\\\}|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_curly" - } - ] - }, - { - "begin": "%q([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.ruby" - } - }, - "name": "string.quoted.other.ruby", - "patterns": [ - { - "comment": "Cant be named because its not necessarily an escape.", - "match": "\\\\." - } - ] - }, - { - "begin": "%s\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\\\)|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_parens" - } - ] - }, - { - "begin": "%s<", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "end": ">", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\>|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_ltgt" - } - ] - }, - { - "begin": "%s\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "end": "]", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\]|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_brackets" - } - ] - }, - { - "begin": "%s{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "match": "\\\\}|\\\\\\\\", - "name": "constant.character.escape.ruby" - }, - { - "include": "#nest_curly" - } - ] - }, - { - "begin": "%s([^\\w])", - "beginCaptures": { - "0": { - "name": "punctuation.definition.symbol.begin.ruby" - } - }, - "end": "\\1", - "endCaptures": { - "0": { - "name": "punctuation.definition.symbol.end.ruby" - } - }, - "name": "constant.language.symbol.ruby", - "patterns": [ - { - "comment": "Cant be named because its not necessarily an escape.", - "match": "\\\\." - } - ] - }, - { - "captures": { - "1": { - "name": "punctuation.definition.constant.ruby" - } - }, - "comment": "symbols", - "match": "(?x)\n(?\n [$a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?\n |\n ===?|<=>|>[>=]?|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?\n |\n @@?[a-zA-Z_]\\w*\n)", - "name": "constant.language.symbol.ruby" - }, - { - "begin": "^=begin", - "captures": { - "0": { - "name": "punctuation.definition.comment.ruby" - } - }, - "comment": "multiline comments", - "end": "^=end", - "name": "comment.block.documentation.ruby" - }, - { - "include": "#yard" - }, - { - "begin": "(^[ \\t]+)?(?=#)", - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.comment.leading.ruby" - } - }, - "end": "(?!\\G)", - "patterns": [ - { - "begin": "#", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.ruby" - } - }, - "end": "\\n", - "name": "comment.line.number-sign.ruby" - } - ] - }, - { - "comment": "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2nd alternation = octal):\n\t\t\t?\\0 ?\\07 ?\\017\n\n\t\t\texamples (3rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (4th alternation = meta-ctrl):\n\t\t\t?\\C-a ?\\M-a ?\\C-\\M-\\C-\\M-a\n\n\t\t\texamples (4th alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?\" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t", - "match": "(?<<[-~]([\"'`]?)((?:[_\\w]+_|)HTML)\\b\\1))", - "comment": "Heredoc with embedded HTML", - "end": "(?!\\G)", - "name": "meta.embedded.block.html", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HTML)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "text.html", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "text.html.basic" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HAML)\\b\\1))", - "comment": "Heredoc with embedded HAML", - "end": "(?!\\G)", - "name": "meta.embedded.block.haml", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HAML)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "text.haml", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "text.haml" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)XML)\\b\\1))", - "comment": "Heredoc with embedded XML", - "end": "(?!\\G)", - "name": "meta.embedded.block.xml", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)XML)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "text.xml", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "text.xml" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SQL)\\b\\1))", - "comment": "Heredoc with embedded SQL", - "end": "(?!\\G)", - "name": "meta.embedded.block.sql", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SQL)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.sql", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.sql" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:GRAPHQL|GQL))\\b\\1))", - "comment": "Heredoc with embedded GraphQL", - "end": "(?!\\G)", - "name": "meta.embedded.block.graphql", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:GRAPHQL|GQL))\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.graphql", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.graphql" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CSS)\\b\\1))", - "comment": "Heredoc with embedded CSS", - "end": "(?!\\G)", - "name": "meta.embedded.block.css", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CSS)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.css", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.css" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CPP)\\b\\1))", - "comment": "Heredoc with embedded C++", - "end": "(?!\\G)", - "name": "meta.embedded.block.cpp", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CPP)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.cpp", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.cpp" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)C)\\b\\1))", - "comment": "Heredoc with embedded C", - "end": "(?!\\G)", - "name": "meta.embedded.block.c", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)C)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.c", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.c" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1))", - "comment": "Heredoc with embedded Javascript", - "end": "(?!\\G)", - "name": "meta.embedded.block.js", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.js", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.js" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)JQUERY)\\b\\1))", - "comment": "Heredoc with embedded jQuery Javascript", - "end": "(?!\\G)", - "name": "meta.embedded.block.js.jquery", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)JQUERY)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.js.jquery", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.js.jquery" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1))", - "comment": "Heredoc with embedded Shell", - "end": "(?!\\G)", - "name": "meta.embedded.block.shell", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.shell", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.shell" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)LUA)\\b\\1))", - "comment": "Heredoc with embedded Lua", - "end": "(?!\\G)", - "name": "meta.embedded.block.lua", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)LUA)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.lua", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.lua" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)RUBY)\\b\\1))", - "comment": "Heredoc with embedded Ruby", - "end": "(?!\\G)", - "name": "meta.embedded.block.ruby", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)RUBY)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.ruby", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.ruby" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:YAML|YML))\\b\\1))", - "comment": "Heredoc with embedded YAML", - "end": "(?!\\G)", - "name": "meta.embedded.block.yaml", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:YAML|YML))\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "source.yaml", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "source.yaml" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SLIM)\\b\\1))", - "comment": "Heredoc with embedded Slim", - "end": "(?!\\G)", - "name": "meta.embedded.block.slim", - "patterns": [ - { - "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SLIM)\\b\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "contentName": "text.slim", - "end": "^\\s*\\2$\\n?", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "text.slim" - }, - { - "include": "#escaped_char" - } - ] - } - ] - }, - { - "begin": "(?>=\\s*<<([\"'`]?)(\\w+)\\1)", - "beginCaptures": { - "0": { - "name": "string.definition.begin.ruby" - } - }, - "end": "^\\2$", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "contentName": "string.unquoted.heredoc.ruby", - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "(?>((<<[-~]([\"'`]?)(\\w+)\\3,\\s?)*<<[-~]([\"'`]?)(\\w+)\\5))(.*)", - "beginCaptures": { - "1": { - "name": "string.definition.begin.ruby" - }, - "7": { - "patterns": [ - { - "include": "source.ruby" - } - ] - } - }, - "comment": "heredoc with multiple inputs and indented terminator", - "end": "^\\s*\\6$", - "endCaptures": { - "0": { - "name": "string.definition.end.ruby" - } - }, - "contentName": "string.unquoted.heredoc.ruby", - "patterns": [ - { - "include": "#heredoc" - }, - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "(?<={|{\\s+|[^A-Za-z0-9_:@$]do|^do|[^A-Za-z0-9_:@$]do\\s+|^do\\s+)(\\|)", - "name": "meta.block.parameters.ruby", - "captures": { - "1": { - "name": "punctuation.separator.variable.ruby" - } - }, - "end": "(?", - "name": "punctuation.separator.key-value" - }, - { - "match": "->", - "name": "support.function.kernel.ruby" - }, - { - "match": "<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<", - "name": "keyword.operator.assignment.augmented.ruby" - }, - { - "match": "<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?", - "name": "keyword.operator.comparison.ruby" - }, - { - "match": "(?>", - "name": "keyword.operator.other.ruby" - }, - { - "match": ";", - "name": "punctuation.separator.statement.ruby" - }, - { - "match": ",", - "name": "punctuation.separator.object.ruby" - }, - { - "comment": "Mark as namespace separator if double colons followed by capital letter", - "match": "(::)\\s*(?=[A-Z])", - "captures": { - "1": { - "name": "punctuation.separator.namespace.ruby" - } - } - }, - { - "comment": "Mark as method separator if double colons not followed by capital letter", - "match": "(\\.|::)\\s*(?![A-Z])", - "captures": { - "1": { - "name": "punctuation.separator.method.ruby" - } - } - }, - { - "comment": "Must come after method and constant separators to prefer double colons", - "match": ":", - "name": "punctuation.separator.other.ruby" - }, - { - "match": "{", - "name": "punctuation.section.scope.begin.ruby" - }, - { - "match": "}", - "name": "punctuation.section.scope.end.ruby" - }, - { - "match": "\\[", - "name": "punctuation.section.array.begin.ruby" - }, - { - "match": "]", - "name": "punctuation.section.array.end.ruby" - }, - { - "match": "\\(|\\)", - "name": "punctuation.section.function.ruby" - }, - { - "name": "meta.function-call.ruby", - "begin": "(?<=[^\\.]\\.|::)(?=[a-zA-Z][a-zA-Z0-9_!?]*[^a-zA-Z0-9_!?])", - "end": "(?<=[a-zA-Z0-9_!?])(?=[^a-zA-Z0-9_!?])", - "patterns": [ - { - "name": "entity.name.function.ruby", - "match": "([a-zA-Z][a-zA-Z0-9_!?]*)(?=[^a-zA-Z0-9_!?])" - } - ] - }, - { - "begin": "([a-zA-Z]\\w*[!?]?)(\\()", - "beginCaptures": { - "1": { - "name": "entity.name.function.ruby" - }, - "2": { - "name": "punctuation.section.function.ruby" - } - }, - "end": "(\\))", - "endCaptures": { - "1": { - "name": "punctuation.section.function.ruby" - } - }, - "name": "meta.function-call.ruby", - "patterns": [ - { - "include": "$self" - } - ] - } - ], - "repository": { - "method_parameters": { - "patterns": [ - { - "include": "#parens" - }, - { - "include": "#braces" - }, - { - "include": "#brackets" - }, - { - "include": "#params" - }, - { - "include": "$self" - } - ], - "repository": { - "params": { - "captures": { - "1": { - "name": "storage.type.variable.ruby" - }, - "2": { - "name": "constant.other.symbol.hashkey.parameter.function.ruby" - }, - "3": { - "name": "punctuation.definition.constant.ruby" - }, - "4": { - "name": "variable.parameter.function.ruby" - } - }, - "match": "\\G(&|\\*\\*?)?(?:([_a-zA-Z]\\w*[?!]?(:))|([_a-zA-Z]\\w*))" - }, - "braces": { - "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.section.scope.begin.ruby" - } - }, - "end": "\\}", - "endCaptures": { - "0": { - "name": "punctuation.section.scope.end.ruby" - } - }, - "patterns": [ - { - "include": "#parens" - }, - { - "include": "#braces" - }, - { - "include": "#brackets" - }, - { - "include": "$self" - } - ] - }, - "brackets": { - "begin": "\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.array.begin.ruby" - } - }, - "end": "\\]", - "endCaptures": { - "0": { - "name": "punctuation.section.array.end.ruby" - } - }, - "patterns": [ - { - "include": "#parens" - }, - { - "include": "#braces" - }, - { - "include": "#brackets" - }, - { - "include": "$self" - } - ] - }, - "parens": { - "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.function.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.function.end.ruby" - } - }, - "patterns": [ - { - "include": "#parens" - }, - { - "include": "#braces" - }, - { - "include": "#brackets" - }, - { - "include": "$self" - } - ] - } - } - }, - "escaped_char": { - "match": "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)", - "name": "constant.character.escape.ruby" - }, - "heredoc": { - "begin": "^<<[-~]?\\w+", - "end": "$", - "patterns": [ - { - "include": "$self" - } - ] - }, - "interpolated_ruby": { - "patterns": [ - { - "begin": "#{", - "beginCaptures": { - "0": { - "name": "punctuation.section.embedded.begin.ruby" - } - }, - "contentName": "source.ruby", - "end": "}", - "endCaptures": { - "0": { - "name": "punctuation.section.embedded.end.ruby" - } - }, - "name": "meta.embedded.line.ruby", - "patterns": [ - { - "include": "#nest_curly_and_self" - }, - { - "include": "$self" - } - ] - }, - { - "captures": { - "1": { - "name": "punctuation.definition.variable.ruby" - } - }, - "match": "(#@)[a-zA-Z_]\\w*", - "name": "variable.other.readwrite.instance.ruby" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.variable.ruby" - } - }, - "match": "(#@@)[a-zA-Z_]\\w*", - "name": "variable.other.readwrite.class.ruby" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.variable.ruby" - } - }, - "match": "(#\\$)[a-zA-Z_]\\w*", - "name": "variable.other.readwrite.global.ruby" - } - ] - }, - "nest_brackets": { - "begin": "\\[", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "]", - "patterns": [ - { - "include": "#nest_brackets" - } - ] - }, - "nest_brackets_i": { - "begin": "\\[", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "]", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_brackets_i" - } - ] - }, - "nest_brackets_r": { - "begin": "\\[", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "]", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_brackets_r" - } - ] - }, - "nest_curly": { - "begin": "{", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "}", - "patterns": [ - { - "include": "#nest_curly" - } - ] - }, - "nest_curly_and_self": { - "patterns": [ - { - "begin": "{", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "}", - "patterns": [ - { - "include": "#nest_curly_and_self" - } - ] - }, - { - "include": "$self" - } - ] - }, - "nest_curly_i": { - "begin": "{", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "}", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_curly_i" - } - ] - }, - "nest_curly_r": { - "begin": "{", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "}", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_curly_r" - } - ] - }, - "nest_ltgt": { - "begin": "<", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": ">", - "patterns": [ - { - "include": "#nest_ltgt" - } - ] - }, - "nest_ltgt_i": { - "begin": "<", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": ">", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_ltgt_i" - } - ] - }, - "nest_ltgt_r": { - "begin": "<", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": ">", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_ltgt_r" - } - ] - }, - "nest_parens": { - "begin": "\\(", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "\\)", - "patterns": [ - { - "include": "#nest_parens" - } - ] - }, - "nest_parens_i": { - "begin": "\\(", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "\\)", - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "include": "#nest_parens_i" - } - ] - }, - "nest_parens_r": { - "begin": "\\(", - "captures": { - "0": { - "name": "punctuation.section.scope.ruby" - } - }, - "end": "\\)", - "patterns": [ - { - "include": "#regex_sub" - }, - { - "include": "#nest_parens_r" - } - ] - }, - "regex_sub": { - "patterns": [ - { - "include": "#interpolated_ruby" - }, - { - "include": "#escaped_char" - }, - { - "captures": { - "1": { - "name": "punctuation.definition.arbitrary-repetition.ruby" - }, - "3": { - "name": "punctuation.definition.arbitrary-repetition.ruby" - } - }, - "match": "({)\\d+(,\\d+)?(})", - "name": "string.regexp.arbitrary-repetition.ruby" - }, - { - "begin": "\\[(?:\\^?])?", - "captures": { - "0": { - "name": "punctuation.definition.character-class.ruby" - } - }, - "end": "]", - "name": "string.regexp.character-class.ruby", - "patterns": [ - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "\\(\\?#", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.begin.ruby" - } - }, - "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.end.ruby" - } - }, - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#escaped_char" - } - ] - }, - { - "begin": "\\(", - "captures": { - "0": { - "name": "punctuation.definition.group.ruby" - } - }, - "end": "\\)", - "name": "string.regexp.group.ruby", - "patterns": [ - { - "include": "#regex_sub" - } - ] - }, - { - "begin": "(?<=^|\\s)(#)\\s(?=[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$)", - "beginCaptures": { - "1": { - "name": "punctuation.definition.comment.ruby" - } - }, - "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.", - "end": "$\\n?", - "endCaptures": { - "0": { - "name": "punctuation.definition.comment.ruby" - } - }, - "name": "comment.line.number-sign.ruby" - } - ] - }, - "yard": { - "patterns": [ - { - "include": "#yard_comment" - }, - { - "include": "#yard_param_types" - }, - { - "include": "#yard_option" - }, - { - "include": "#yard_tag" - }, - { - "include": "#yard_types" - }, - { - "include": "#yard_directive" - }, - { - "include": "#yard_see" - }, - { - "include": "#yard_macro_attribute" - } - ] - }, - "yard_see": { - "comment": "separate rule for @see because name could contain url", - "begin": "^(\\s*)(#)(\\s*)(@)(see)(?=\\s)(\\s+(.+?))?(?=\\s|$)", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "7": { - "name": "comment.line.parameter.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_macro_attribute": { - "comment": "separate rule for attribute and macro tags because name goes after []", - "begin": "^(\\s*)(#)(\\s*)(@!)(attribute|macro)(\\s+((\\[).+(])))?(?=\\s)(\\s+([a-z_]\\w*:?))?", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "7": { - "name": "comment.line.type.yard.ruby" - }, - "8": { - "name": "comment.line.punctuation.yard.ruby" - }, - "9": { - "name": "comment.line.punctuation.yard.ruby" - }, - "11": { - "name": "comment.line.parameter.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_comment": { - "comment": "For YARD tags that follow the tag-comment pattern", - "begin": "^(\\s*)(#)(\\s*)(@)(abstract|api|author|deprecated|example|macro|note|overload|since|todo|version)(?=\\s|$)", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_param_types": { - "comment": "For YARD tags that follow the tag-name-types-description or tag-types-name-description pattern", - "begin": "^(\\s*)(#)(\\s*)(@)(attr|attr_reader|attr_writer|yieldparam|param)(?=\\s)(?>\\s+(?>([a-z_]\\w*:?)|((\\[).+(]))))?(?>\\s+(?>((\\[).+(]))|([a-z_]\\w*:?)))?", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "6": { - "name": "comment.line.parameter.yard.ruby" - }, - "7": { - "name": "comment.line.type.yard.ruby" - }, - "8": { - "name": "comment.line.punctuation.yard.ruby" - }, - "9": { - "name": "comment.line.punctuation.yard.ruby" - }, - "10": { - "name": "comment.line.type.yard.ruby" - }, - "11": { - "name": "comment.line.punctuation.yard.ruby" - }, - "12": { - "name": "comment.line.punctuation.yard.ruby" - }, - "13": { - "name": "comment.line.parameter.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_option": { - "comment": "For YARD option tag that follow the tag-name-types-key-(value)-description pattern", - "begin": "^(\\s*)(#)(\\s*)(@)(option)(?=\\s)(?>\\s+([a-z_]\\w*:?))?(?>\\s+((\\[).+(])))?(?>\\s+((\\S*)))?(?>\\s+((\\().+(\\))))?", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "6": { - "name": "comment.line.parameter.yard.ruby" - }, - "7": { - "name": "comment.line.type.yard.ruby" - }, - "8": { - "name": "comment.line.punctuation.yard.ruby" - }, - "9": { - "name": "comment.line.punctuation.yard.ruby" - }, - "10": { - "name": "comment.line.keyword.yard.ruby" - }, - "11": { - "name": "comment.line.hashkey.yard.ruby" - }, - "12": { - "name": "comment.line.defaultvalue.yard.ruby" - }, - "13": { - "name": "comment.line.punctuation.yard.ruby" - }, - "14": { - "name": "comment.line.punctuation.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_tag": { - "comment": "For YARD tags that are just the tag", - "match": "^(\\s*)(#)(\\s*)(@)(private)$", - "captures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - } - }, - "name": "comment.line.number-sign.ruby" - }, - "yard_types": { - "comment": "For YARD tags that follow the tag-types-comment pattern", - "begin": "^(\\s*)(#)(\\s*)(@)(raise|return|yield(?:return)?)(?=\\s)(\\s+((\\[).+(])))?", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "7": { - "name": "comment.line.type.yard.ruby" - }, - "8": { - "name": "comment.line.punctuation.yard.ruby" - }, - "9": { - "name": "comment.line.punctuation.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_directive": { - "comment": "For YARD directives", - "begin": "^(\\s*)(#)(\\s*)(@!)(endgroup|group|method|parse|scope|visibility)(\\s+((\\[).+(])))?(?=\\s)", - "beginCaptures": { - "2": { - "name": "punctuation.definition.comment.ruby" - }, - "4": { - "name": "comment.line.keyword.punctuation.yard.ruby" - }, - "5": { - "name": "comment.line.keyword.yard.ruby" - }, - "7": { - "name": "comment.line.type.yard.ruby" - }, - "8": { - "name": "comment.line.punctuation.yard.ruby" - }, - "9": { - "name": "comment.line.punctuation.yard.ruby" - } - }, - "end": "^(?!\\s*#\\3\\s{2,}|\\s*#\\s*$)", - "contentName": "comment.line.string.yard.ruby", - "name": "comment.line.number-sign.ruby", - "patterns": [ - { - "include": "#yard" - }, - { - "include": "#yard_continuation" - } - ] - }, - "yard_continuation": { - "match": "^\\s*#", - "name": "punctuation.definition.comment.ruby" - } - } -}