{ "name": "Ruby Slim", "scopeName": "text.slim", "patterns": [ { "name": "text.ruby.filter.slim", "begin": "^(\\s*)(ruby):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.ruby" } ], "beginCaptures": { "2": { "name": "constant.language.name.ruby.filter.slim" } } }, { "name": "source.js.filter.slim", "begin": "^(\\s*)(javascript):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.js" } ], "beginCaptures": { "2": { "name": "constant.language.name.javascript.filter.slim" } } }, { "name": "source.yaml.meta.slim", "begin": "^(---)\\s*\\n", "end": "^(---)\\s*\\n", "patterns": [ { "include": "source.yaml" } ], "beginCaptures": { "1": { "name": "storage.frontmatter.slim" } }, "endCaptures": { "1": { "name": "storage.frontmatter.slim" } } }, { "name": "text.coffeescript.filter.slim", "begin": "^(\\s*)(coffee):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.coffee" } ], "beginCaptures": { "2": { "name": "constant.language.name.coffeescript.filter.slim" } } }, { "name": "text.markdown.filter.slim", "begin": "^(\\s*)(markdown):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.gfm" } ], "beginCaptures": { "2": { "name": "constant.language.name.markdown.filter.slim" } } }, { "name": "text.css.filter.slim", "begin": "^(\\s*)(css):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.css" } ], "beginCaptures": { "2": { "name": "constant.language.name.css.filter.slim" } } }, { "name": "text.sass.filter.slim", "begin": "^(\\s*)(sass):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.sass" } ], "beginCaptures": { "2": { "name": "constant.language.name.sass.filter.slim" } } }, { "name": "text.scss.filter.slim", "begin": "^(\\s*)(scss):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.scss" } ], "beginCaptures": { "2": { "name": "constant.language.name.scss.filter.slim" } } }, { "name": "text.less.filter.slim", "begin": "^(\\s*)(less):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "source.css.less" } ], "beginCaptures": { "2": { "name": "constant.language.name.less.filter.slim" } } }, { "name": "text.erb.filter.slim", "begin": "^(\\s*)(erb):$", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "text.html.erb" } ], "beginCaptures": { "2": { "name": "constant.language.name.erb.filter.slim" } } }, { "name": "meta.prolog.slim", "match": "^(! )($|\\s.*)", "captures": { "1": { "name": "punctuation.definition.prolog.slim" } } }, { "name": "comment.block.slim", "begin": "^(\\s*)(/)\\s*.*$", "end": "^(?!(\\1\\s)|\\s*$)", "beginCaptures": { "2": { "name": "comment.line.slash.slim" } } }, { "begin": "^\\s*(?=-)", "end": "$", "patterns": [ { "include": "#rubyline" } ] }, { "begin": "(?==+|~)", "end": "$", "patterns": [ { "include": "#rubyline" } ] }, { "include": "#tag-attribute" }, { "include": "#embedded-ruby" }, { "begin": "^(\\s*)(\\||')\\s*", "end": "^(?!(\\1\\s)|\\s*$)", "patterns": [ { "include": "text.html.basic" }, { "include": "#embedded-ruby" } ] }, { "name": "meta.tag", "begin": "^\\s*(\\.|#|[-a-zA-Z0-9]+)([\\w-]+)?", "end": "$|(?!\\.|#|:|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])", "patterns": [ { "name": "entity.name.tag.slim", "begin": "(:[\\w\\d]+)+", "end": "$|\\s" }, { "begin": "(:\\s)(\\.|#|[a-zA-Z0-9]+)([\\w-]+)?", "end": "$|(?!\\.|#|=|-|~|/|\\}|\\]|\\*|\\s?[\\*\\{])", "patterns": [ { "include": "#root-class-id-tag" }, { "include": "#tag-attribute" } ], "captures": { "1": { "name": "punctuation.definition.tag.end.slim" }, "2": { "name": "entity.name.tag.slim" }, "3": { "name": "entity.other.attribute-name.event.slim" } } }, { "name": "source.ruby.embedded.slim", "begin": "(\\*\\{)(?=.*\\}|.*\\|\\s*$)", "end": "(\\})|$|^(?!.*\\|\\s*$)", "patterns": [ { "include": "#embedded-ruby" } ], "beginCaptures": { "1": { "name": "punctuation.section.embedded.ruby" } }, "endCaptures": { "1": { "name": "punctuation.section.embedded.ruby" } } }, { "include": "#root-class-id-tag" }, { "include": "#rubyline" }, { "name": "punctuation.terminator.tag.slim", "match": "/" } ], "captures": { "1": { "name": "entity.name.tag.slim" }, "2": { "name": "entity.other.attribute-name.event.slim" } } }, { "match": "^\\s*(\\\\.)", "captures": { "1": { "name": "meta.escape.slim" } } }, { "begin": "^\\s*(?=\\||')", "end": "$", "patterns": [ { "include": "#embedded-ruby" }, { "include": "text.html.basic" } ] }, { "begin": "(?=\u003c[\\w\\d\\:]+)", "end": "$|\\/\\\u003e", "patterns": [ { "include": "text.html.basic" } ] } ], "repository": { "continuation": { "match": "([\\\\,])\\s*\\n", "captures": { "1": { "name": "punctuation.separator.continuation.slim" } } }, "delimited-ruby-a": { "name": "source.ruby.embedded.slim", "begin": "=\\(", "end": "\\)(?=( \\w|$))", "patterns": [ {} ] }, "delimited-ruby-b": { "name": "source.ruby.embedded.slim", "begin": "=\\[", "end": "\\](?=( \\w|$))", "patterns": [ {} ] }, "delimited-ruby-c": { "name": "source.ruby.embedded.slim", "begin": "=\\{", "end": "\\}(?=( \\w|$))", "patterns": [ {} ] }, "embedded-ruby": { "name": "source.ruby.embedded.html", "begin": "(?\u003c!\\\\)#\\{{1,2}", "end": "\\}{1,2}", "patterns": [ {} ], "beginCaptures": { "0": { "name": "punctuation.section.embedded.ruby" } }, "endCaptures": { "0": { "name": "punctuation.section.embedded.ruby" } } }, "entities": { "patterns": [ { "name": "constant.character.entity.html", "match": "(\u0026)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)", "captures": { "1": { "name": "punctuation.definition.entity.html" }, "3": { "name": "punctuation.definition.entity.html" } } }, { "name": "invalid.illegal.bad-ampersand.html", "match": "\u0026" } ] }, "interpolated-ruby": { "name": "source.ruby.embedded.html", "begin": "=(?=\\b)", "end": "\\s|\\w$" }, "root-class-id-tag": { "match": "(\\.|#)([\\w\\d\\-]+)", "captures": { "1": { "name": "punctuation.separator.key-value.html" }, "2": { "name": "entity.other.attribute-name.html" } } }, "rubyline": { "name": "meta.line.ruby.slim", "contentName": "source.ruby.embedded.slim", "begin": "(==|=)(\u003c\u003e|\u003e\u003c|\u003c'|'\u003c|\u003c|\u003e)?|-", "end": "(do\\s*\\n$)|(?\u003c!\\\\|,|,\\n|\\\\\\n)$", "patterns": [ { "name": "comment.line.number-sign.ruby", "match": "#.*$" }, { "include": "#continuation" }, {} ], "endCaptures": { "1": { "name": "keyword.control.start-block.ruby" } } }, "string-double-quoted": { "name": "string.quoted.double.html", "contentName": "meta.toc-list.id.html", "begin": "(\")(?=.*\")", "end": "\"", "patterns": [ { "include": "#embedded-ruby" }, { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.html" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.html" } } }, "string-single-quoted": { "name": "string.quoted.single.html", "contentName": "meta.toc-list.id.html", "begin": "(')(?=.*')", "end": "'", "patterns": [ { "include": "#embedded-ruby" }, { "include": "#entities" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.html" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.html" } } }, "tag-attribute": { "name": "meta.attribute-with-value.slim", "begin": "([\\w.#_-]+)(=)(?!\\s)(true|false|nil)?(\\s*\\(|\\{)?", "end": "\\}|\\)|$", "patterns": [ { "include": "#tag-stuff" }, { "include": "#string-double-quoted" }, { "include": "#string-single-quoted" } ], "captures": { "1": { "name": "entity.other.attribute-name.event.slim" }, "2": { "name": "punctuation.separator.key-value.html" }, "3": { "name": "constant.language.slim" } } }, "tag-stuff": { "patterns": [ { "include": "#tag-attribute" }, { "include": "#interpolated-ruby" }, { "include": "#delimited-ruby-a" }, { "include": "#delimited-ruby-b" }, { "include": "#delimited-ruby-c" }, { "include": "#rubyline" }, { "include": "#embedded-ruby" } ] } } }