{"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*:)"}}}
