UNPKG

tm-grammars

Version:
2,076 lines (2,075 loc) 75 kB
{ "displayName": "Ruby", "name": "ruby", "patterns": [ { "captures": { "1": { "name": "keyword.control.class.ruby" }, "11": { "name": "punctuation.separator.namespace.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" } }, "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" }, { "match": "(?<!\\.)\\belse(\\s)+if\\b", "name": "invalid.deprecated.ruby" }, { "captures": { "1": { "name": "variable.ruby" }, "3": { "name": "keyword.operator.assignment.augmented.ruby" } }, "match": "^\\s*([a-z]([A-Za-z0-9_])*)\\s*((&&|\\|\\|)=)" }, { "captures": { "1": { "name": "keyword.control.ruby" }, "3": { "name": "variable.ruby" }, "5": { "name": "keyword.operator.assignment.augmented.ruby" } }, "match": "(?<!\\.)\\b(case|if|elsif|unless|until|while)\\b\\s*(\\()*?\\s*([a-z]([A-Za-z0-9_])*)\\s*((&&|\\|\\|)=)" }, { "captures": { "1": { "name": "variable.ruby" }, "3": { "name": "keyword.operator.assignment.augmented.ruby" } }, "match": "^\\s*([a-z]([A-Za-z0-9_])*)\\s*((\\+|\\*|-|\\/|%|\\*\\*|&|\\||\\^|<<|>>)=)" }, { "captures": { "1": { "name": "keyword.control.ruby" }, "3": { "name": "variable.ruby" }, "5": { "name": "keyword.operator.assignment.augmented.ruby" } }, "match": "(?<!\\.)\\b(case|if|elsif|unless|until|while)\\b\\s*(\\()*?\\s*([a-z]([A-Za-z0-9_])*)\\s*((\\+|\\*|-|\\/|%|\\*\\*|&|\\||\\^|<<|>>)=)" }, { "captures": { "1": { "name": "variable.ruby" } }, "match": "^\\s*([a-z]([A-Za-z0-9_])*)\\s*=[^=>]" }, { "captures": { "1": { "name": "keyword.control.ruby" }, "3": { "name": "variable.ruby" } }, "match": "(?<!\\.)\\b(case|if|elsif|unless|until|while)\\b\\s*(\\()*?\\s*([a-z]([A-Za-z0-9_])*)\\s*=[^=>]" }, { "captures": { "1": { "name": "punctuation.definition.constant.hashkey.ruby" } }, "match": "(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)", "name": "constant.language.symbol.hashkey.ruby" }, { "captures": { "1": { "name": "punctuation.definition.constant.ruby" } }, "match": "(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!])?)(?=\\s*=>)", "name": "constant.language.symbol.hashkey.ruby" }, { "match": "(?<!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\b(?![?!])", "name": "keyword.control.ruby" }, { "match": "(?<!\\.)\\bdo\\b", "name": "keyword.control.start-block.ruby" }, { "match": "(?<={)(\\s+)", "name": "meta.syntax.ruby.start-block" }, { "match": "(?<!\\.)\\b(alias|alias_method|break|next|redo|retry|return|super|undef|yield)\\b(?![?!])|\\bdefined\\?|\\b(block_given|iterator)\\?", "name": "keyword.control.pseudo-method.ruby" }, { "match": "\\bnil\\b(?![?!])", "name": "constant.language.nil.ruby" }, { "match": "\\b(true|false)\\b(?![?!])", "name": "constant.language.boolean.ruby" }, { "match": "\\b(__(FILE|LINE)__)\\b(?![?!])", "name": "variable.language.ruby" }, { "match": "\\bself\\b(?![?!])", "name": "variable.language.self.ruby" }, { "match": "\\b(initialize|new|loop|include|extend|prepend|raise|fail|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|private_class_method|module_function|public|public_class_method|protected|refine|using)\\b(?![?!])", "name": "keyword.other.special-method.ruby" }, { "begin": "\\b(?<!\\.|::)(require|require_relative)\\b(?![?!])", "captures": { "1": { "name": "keyword.other.special-method.ruby" } }, "end": "$|(?=#|})", "name": "meta.require.ruby", "patterns": [ { "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" }, { "captures": { "1": { "name": "punctuation.definition.variable.ruby" } }, "match": "(\\$)(!|@|&|`|'|\\+|\\d+|~|=|/|\\\\|,|;|\\.|<|>|_|\\*|\\$|\\?|:|\"|-[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" } }, "end": "\\)", "patterns": [ { "begin": "(?=[&*_a-zA-Z])", "end": "(?=[,)])", "patterns": [ { "include": "#method_parameters" } ] }, { "include": "#method_parameters" } ] }, { "begin": "(?=def\\b)(?<=^|\\s)(def)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?))\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.control.def.ruby" }, "2": { "name": "entity.name.function.ruby" }, "3": { "name": "punctuation.definition.parameters.ruby" } }, "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": "(?=def\\b)(?<=^|\\s)(def)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?))[ \\t](?=[ \\t]*[^\\s#;])", "beginCaptures": { "1": { "name": "keyword.control.def.ruby" }, "2": { "name": "entity.name.function.ruby" } }, "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" } }, "match": "(?=def\\b)(?<=^|\\s)(def)\\b(\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?)))?", "name": "meta.function.method.without-arguments.ruby" }, { "match": "\\b([\\d](?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0(?:[xX]\\h(?>_?\\h)*|[oO]?[0-7](?>_?[0-7])*|[bB][01](?>_?[01])*|[dD]\\d(?>_?\\d)*))\\b", "name": "constant.numeric.ruby" }, { "begin": ":'", "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" } ] }, { "begin": ":\"", "beginCaptures": { "0": { "name": "punctuation.section.symbol.begin.ruby" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.section.symbol.end.ruby" } }, "name": "constant.language.symbol.interpolated.ruby", "patterns": [ { "include": "#interpolated_ruby" }, { "include": "#escaped_char" } ] }, { "match": "(?<!\\()/=", "name": "keyword.operator.assignment.augmented.ruby" }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.quoted.single.ruby", "patterns": [ { "match": "\\\\'|\\\\\\\\", "name": "constant.character.escape.ruby" } ] }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.quoted.double.interpolated.ruby", "patterns": [ { "include": "#interpolated_ruby" }, { "include": "#escaped_char" } ] }, { "begin": "(?<!\\.)`", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "end": "`", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.interpolated.ruby", "patterns": [ { "include": "#interpolated_ruby" }, { "include": "#escaped_char" } ] }, { "begin": "(?<![\\w)])((/))(?![?*+])(?=(?:\\\\/|[^/])*+/[eimnosux]*\\s*(?:[)\\]}#.,?:]|\\|\\||&&|<=>|=>|==|=~|!~|!=|;|$|if|else|elsif|then|do|end|unless|while|until|or|and)|$)", "captures": { "1": { "name": "string.regexp.interpolated.ruby" }, "2": { "name": "punctuation.section.regexp.ruby" } }, "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": [ { "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": [ { "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": [ { "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": [ { "match": "\\\\." } ] }, { "captures": { "1": { "name": "punctuation.definition.constant.ruby" } }, "match": "(?<!:)(:)(?>[$a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?|===?|<=>|>[>=]?|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[]=?|@@?[a-zA-Z_]\\w*)", "name": "constant.language.symbol.ruby" }, { "begin": "^=begin", "captures": { "0": { "name": "punctuation.definition.comment.ruby" } }, "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" } ] }, { "match": "(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|0[0-7]{0,2}(?![0-7])\\b|[^x0MC])|(\\\\[MC]-)+\\w|[^\\s\\\\])", "name": "constant.numeric.ruby" }, { "begin": "^__END__\\n", "captures": { "0": { "name": "string.unquoted.program-block.ruby" } }, "contentName": "text.plain", "end": "(?=not)impossible", "patterns": [ { "begin": "(?=<?xml|<(?i:html\\b)|!DOCTYPE (?i:html\\b))", "end": "(?=not)impossible", "name": "text.html.embedded.ruby", "patterns": [ { "include": "text.html.basic" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HTML)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.html", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HTML)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "text.html", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "text.html.basic" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HAML)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.haml", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)HAML)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "text.haml", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "text.haml" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)XML)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.xml", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)XML)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "text.xml", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "text.xml" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SQL)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.sql", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SQL)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.sql", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.sql" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:GRAPHQL|GQL))\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.graphql", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:GRAPHQL|GQL))\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.graphql", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.graphql" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CSS)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.css", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CSS)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.css", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.css" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CPP)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.cpp", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)CPP)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.cpp", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.cpp" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)C)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.c", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)C)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.c", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.c" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.js", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.js", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.js" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)JQUERY)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.js.jquery", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)JQUERY)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.js.jquery", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.js.jquery" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.shell", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.shell", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.shell" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)LUA)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.lua", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)LUA)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.lua", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.lua" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)RUBY)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.ruby", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)RUBY)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.ruby", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.ruby" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:YAML|YML))\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.yaml", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)(?:YAML|YML))\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "source.yaml", "end": "^\\s*\\2$\\n?", "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "name": "string.unquoted.heredoc.ruby", "patterns": [ { "include": "#heredoc" }, { "include": "#interpolated_ruby" }, { "include": "source.yaml" }, { "include": "#escaped_char" } ] } ] }, { "begin": "(?=(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SLIM)\\b\\1))", "end": "(?!\\G)", "name": "meta.embedded.block.slim", "patterns": [ { "begin": "(?><<[-~]([\"'`]?)((?:[_\\w]+_|)SLIM)\\b\\1)", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.ruby" } }, "contentName": "text.slim", "end": "^\\s*\\2$\\n?",