{ "name": "Ruby Haml", "scopeName": "text.haml", "patterns": [ { "begin": "^\\s*==", "end": "$\\n?", "patterns": [ { "include": "#interpolated_ruby" } ], "captures": { "1": { "name": "string.quoted.double.ruby" } } }, { "include": "#continuation" }, { "name": "meta.prolog.haml", "match": "^(!!!)($|\\s.*)", "captures": { "1": { "name": "punctuation.definition.prolog.haml" } } }, { "name": "meta.embedded.ruby", "match": "(?\u003c=\\#\\{)([^#]+)(?=\\})", "captures": { "1": { "patterns": [ {} ] } } }, { "name": "comment.line.slash.haml", "match": "^(\\s*)(\\/\\[[^\\]].*?$\\n?)", "captures": { "1": { "name": "punctuation.section.comment.haml" } } }, { "name": "comment.line.slash.haml", "begin": "^(\\s*)(\\-\\#|\\/|\\-\\s*\\/\\*+)", "end": "^(?!\\1\\s+|$\\n?)", "captures": { "2": { "name": "punctuation.section.comment.haml" } } }, { "begin": "^\\s*(?:((%)([-\\w:]+))|(?=\\.|#))", "end": "$|(?!\\.|#|\\{|\\(|\\[|\u0026amp;|=|-|~|!=|\u0026=|/)", "patterns": [ { "name": "string.quoted.double.ruby", "contentName": "string.quoted.double.ruby", "begin": "==", "end": "$\\n?", "patterns": [ { "include": "#interpolated_ruby" } ] }, { "name": "entity.name.tag.class.haml", "match": "\\.[\\w-]+" }, { "name": "entity.name.tag.id.haml", "match": "#[\\w-]+" }, { "name": "meta.section.attributes.haml", "begin": "(?\u003c!\\#)\\{(?=.+(,|(do)|\\{|\\}|\\||(\\#.*))\\s*)", "end": "\\s*\\}(?!,)", "patterns": [ { "include": "#continuation" }, {}, { "include": "#rubyline" } ] }, { "name": "meta.section.attributes.haml", "begin": "\\(", "end": "\\)", "patterns": [ { "name": "constant.other.symbol.ruby", "match": "([\\w-]+)" }, { "name": "punctuation", "match": "\\=" }, { "include": "#variables" }, { "name": "string.quoted.double.ruby", "begin": "\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.ruby", "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)" }, { "include": "#interpolated_ruby" } ] }, { "name": "string.quoted.double.ruby", "begin": "'", "end": "'", "patterns": [ { "name": "constant.character.escape.ruby", "match": "\\\\(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)" }, { "include": "#interpolated_ruby" } ] }, { "include": "#interpolated_ruby" } ] }, { "name": "meta.section.object.haml", "begin": "\\[(?=.+(,|\\[|\\]|\\||(\\#.*))\\s*)", "end": "\\s*\\](?!.*(?!\\#\\[)\\])", "patterns": [ { "include": "#continuation" }, {}, { "include": "#rubyline" } ] }, { "include": "#rubyline" }, { "name": "punctuation.terminator.tag.haml", "match": "/" } ], "captures": { "1": { "name": "meta.tag.haml" }, "2": { "name": "punctuation.definition.tag.haml" }, "3": { "name": "entity.name.tag.haml" } } }, { "match": "^\\s*(\\.)", "captures": { "1": { "name": "meta.escape.haml" } } }, { "begin": "^\\s*(?==|-|~|!=|\u0026=)", "end": "$", "patterns": [ { "include": "#rubyline" } ] }, { "name": "meta.embedded.php", "begin": "^(\\s*)(:php)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "text.html.php#language" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.ruby", "begin": "^(\\s*)(:ruby)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.ruby" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.markdown", "begin": "^(\\s*)(:markdown)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.gfm" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.coffee", "begin": "^(\\s*)(:coffee(script)?)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.coffee" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.js", "begin": "^(\\s*)(:(javascript|es6))$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.js" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.css", "begin": "^(\\s*)(:(css|styles?))$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.css" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.ruby2js", "begin": "^(\\s*)(:ruby2js)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.ruby" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.sass", "begin": "^(\\s*)(:sass)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.sass" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } }, { "name": "meta.embedded.scss", "begin": "^(\\s*)(:scss)$", "end": "^(?!\\1\\s+|\\n)", "patterns": [ { "include": "source.scss" } ], "captures": { "2": { "name": "entity.name.tag.haml" } } } ], "repository": { "continuation": { "match": "(\\|)\\s*$\\n?", "captures": { "1": { "name": "punctuation.separator.continuation.haml" } } }, "interpolated_ruby": { "patterns": [ { "name": "meta.section.object.haml", "begin": "\\#\\{", "end": "\\}", "patterns": [ { "include": "#nest_curly_and_self" }, { "include": "source.ruby" } ], "captures": { "1": { "name": "punctuation.section.embedded.ruby" } } }, { "include": "#variables" } ] }, "nest_curly_and_self": { "patterns": [ { "name": "meta.section.object.haml", "begin": "\\{", "end": "\\}", "patterns": [ { "include": "#nest_curly_and_self" }, { "include": "source.ruby" } ], "captures": { "0": { "name": "punctuation.section.scope.ruby" } } } ] }, "rubyline": { "name": "meta.line.ruby.haml", "contentName": "source.ruby.embedded.haml", "begin": "(\u0026amp|!)?(=|-|~)", "end": "((do|\\{)( \\|[.*]+\\|)?)$|$|^(?!.*\\|\\s*)$\\n?", "patterns": [ { "match": "\\s+((elseif|foreach|switch|declare|default|use))(?=\\s|\\()", "captures": { "1": { "name": "keyword.control.php" } } }, { "match": "\\s+(require_once|include_once)(?=\\s|\\()", "captures": { "1": { "name": "keyword.control.import.include.php" } } }, { "name": "keyword.control.exception.php", "match": "\\s+(catch|try|throw|exception|finally|die)(?=\\s|\\(|\\n)" }, { "match": "\\s+(function\\s*)((?=\\())", "captures": { "1": { "name": "storage.type.function.php" } } }, { "match": "\\s+(use\\s*)((?=\\())", "captures": { "1": { "name": "keyword.control.php" } } }, { "name": "string.quoted.double.ruby", "begin": "\"", "end": "\"", "patterns": [ { "include": "source.ruby#interpolated_ruby" }, { "include": "source.ruby#escaped_char" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.ruby" } } }, { "name": "source.ruby", "match": "(\\||,|\u003c|do|\\{)\\s*(\\#.*)?$\\n?", "captures": { "0": { "patterns": [ { "include": "#rubyline" } ] } } }, { "name": "comment.line.number-sign.ruby", "match": "#.*$" }, {}, { "include": "#continuation" } ], "endCaptures": { "1": { "name": "source.ruby.embedded.haml" }, "2": { "name": "keyword.control.ruby.start-block" } } }, "variables": { "patterns": [ { "name": "variable.other.readwrite.instance.ruby", "match": "(@)[a-zA-Z_]\\w+", "captures": { "1": { "name": "punctuation.definition.variable.ruby" } } }, { "name": "variable.other.readwrite.class.ruby", "match": "(@@)[a-zA-Z_]\\w+", "captures": { "1": { "name": "punctuation.definition.variable.ruby" } } }, { "name": "variable.other.readwrite.global.ruby", "match": "(\\$)[a-zA-Z_]\\w+", "captures": { "1": { "name": "punctuation.definition.variable.ruby" } } } ] } } }