{ "name": "Fancy", "scopeName": "source.fancy", "patterns": [ { "name": "meta.class.fancy", "match": "^\\s*(class)\\s+(([.a-zA-Z0-9_:]+(\\s*(:)\\s*[.a-zA-Z0-9_:\\s]+)?))", "captures": { "1": { "name": "keyword.control.class.fancy" }, "2": { "name": "variable.other.constant.fancy" }, "4": { "name": "entity.other.inherited-class.fancy" }, "5": { "name": "punctuation.separator.inheritance.fancy" }, "6": { "name": "variable.other.object.fancy" } } }, { "name": "meta.function.method.fancy.self", "begin": "(?x)\n (?=def\\b) # an optimization to help Oniguruma fail fast\n (?\u003c=^|\\s)(def)\\s+ # the def keyword\n (self)\\s+ # a method definition prefix in this case self\n (([a-z]?\\w+[?!]?:?)\n |===|\u003e[\u003e=]?|\u003c=\u003e|\u003c[\u003c=]?|[%\u0026`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]|=\\?)\\s+ # the method name\n ", "end": "$", "patterns": [ { "include": "$self" }, { "include": "#arg_name" } ], "beginCaptures": { "1": { "name": "keyword.control.def.fancy" }, "2": { "name": "variable.language.fancy" }, "3": { "name": "entity.name.function.fancy" } } }, { "name": "meta.function.method.fancy", "begin": "(?x)\n (?=def\\b) # an optimization to help Oniguruma fail fast\n (?\u003c=^|\\s)(def)\\s+ # the def keyword\n (((?\u003e[A-Z_-]\\w*(?\u003e\\s+))?)+) # a method definition prefix\n (([a-z]?\\w+[?!]?:?)\n |===|\u003e[\u003e=]?|\u003c=\u003e|\u003c[\u003c=]?|[%\u0026`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]|=\\?)\\s+ # the method name\n ", "end": "$", "patterns": [ { "include": "$self" }, { "include": "#arg_name" } ], "beginCaptures": { "1": { "name": "keyword.control.def.fancy" }, "2": { "name": "variable.other.constant.fancy" }, "4": { "name": "entity.name.function.fancy" } } }, { "name": "meta.require.fancy", "begin": "\\b(require:)", "end": "$|(?=#)", "patterns": [ { "include": "$self" } ], "captures": { "1": { "name": "keyword.other.special-method.fancy" } } }, { "name": "meta.include.fancy", "begin": "\\b(include:)", "end": "$|(?=#)", "patterns": [ { "include": "$self" } ], "captures": { "1": { "name": "keyword.other.special-method.fancy" } } }, { "name": "keyword.control.fancy", "match": "\\b(return|return_local|match|case|try|catch|finally|retry)\\b:?" }, { "name": "meta.message.fancy", "match": "([a-z_-]\\w*[?!]?:)", "captures": { "0": { "name": "entity.name.function.fancy" } } }, { "name": "constant.language.fancy", "match": "\\b(false|nil|true)\\b(?![?!])" }, { "name": "constant.other.symbol.fancy", "match": "'([^'\\s\\[\\]\\(\\)\\{\\},]+|\\[\\])", "captures": { "0": { "name": "punctuation.definition.constant.fancy" } } }, { "name": "constant.other.dynvar.fancy", "match": "\\*[a-zA-Z0-9_-]+\\*", "captures": { "0": { "name": "punctuation.definition.constant.fancy" } } }, { "name": "constant.language.fancy", "match": "\\b(__(FILE|LINE)__|self|super)\\b(?![?!])" }, { "name": "variable.other.constant.fancy", "match": "\\b[A-Z]\\w*\\b" }, { "name": "variable.other.readwrite.instance.fancy", "match": "(@)[a-zA-Z_]\\w*", "captures": { "1": { "name": "punctuation.definition.variable.fancy" } } }, { "name": "variable.other.readwrite.class.fancy", "match": "(@@)[a-zA-Z_]\\w*", "captures": { "1": { "name": "punctuation.definition.variable.fancy" } } }, { "name": "punctuation.section.hash.fancy", "match": "(\u003c\\[|\\]\u003e)", "captures": { "1": { "name": "punctuation.section.array.fancy" } } }, { "name": "string.regexp.classic.fancy", "match": "(/[^/]*/)", "captures": { "1": { "name": "string.regexp.classic.fancy" } } }, { "name": "keyword.operator.assignment.augmented.fancy", "match": "\u003c\u003c=|%=|\u0026=|\\*=|\\*\\*=|\\+=|\\-=|\\^=|\\|{1,2}=|\u003c\u003c" }, { "name": "keyword.operator.comparison.fancy", "match": "\u003c=\u003e|\u003c(?!\u003c|=)|\u003e(?!\u003c|=|\u003e)|\u003c=|\u003e=|===|==|=~|!=|!~|(?\u003c=[ \\t])\\?" }, { "name": "keyword.operator.logical.fancy", "match": "\\b(not|and|or)\\b:|(?\u003c=[ \\t])!+|\u0026\u0026|\\|\\||\\^" }, { "name": "keyword.operator.arithmetic.fancy", "match": "(%|\u0026|\\*\\*|\\*|\\+|\\-|/)" }, { "name": "keyword.operator.assignment.fancy", "match": "=" }, { "name": "punctuation.separator.statement.fancy", "match": "\\;" }, { "name": "punctuation.separator.object.fancy", "match": "," }, { "name": "punctuation.separator.method.ruby", "match": "\\s" }, { "name": "punctuation.section.array.fancy", "match": "\\[|\\]" }, { "name": "string.quoted.double.fancy", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.fancy", "match": "\\\\." } ] }, { "name": "comment.line.number-sign.fancy", "match": "(?:^[ \\t]+)?(#).*$\\n?" }, { "name": "constant.numeric.fancy", "match": "\\b(0[xX][0-9A-Fa-f](?\u003e_?[0-9A-Fa-f])*|\\d(?\u003e_?\\d)*(\\.(?![^[:space:][:digit:]])(?\u003e_?\\d)*)?([eE][-+]?\\d(?\u003e_?\\d)*)?|0[bB][01]+)\\b" } ], "repository": { "arg_name": { "name": "entity.name.function.fancy", "match": "([a-z_-]\\w*:)" } } }