{ "scopeName": "source.sassdoc", "name": "SassDoc", "patterns": [ { "match": "(?x)\n((@)(?:access))\n\\s+\n(private|public)\n\\b", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "constant.language.access-type.sassdoc" } } }, { "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "entity.name.type.instance.sassdoc" }, "4": { "name": "punctuation.definition.bracket.angle.begin.sassdoc" }, "5": { "name": "constant.other.email.link.underline.sassdoc" }, "6": { "name": "punctuation.definition.bracket.angle.end.sassdoc" } } }, { "name": "meta.example.css.scss.sassdoc", "begin": "(?x)\n((@)example)\n\\s+\n(css|scss)", "end": "(?=@|///$)", "beginCaptures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "variable.other.sassdoc" } }, "patterns": [ { "match": "^///\\s+" }, { "match": "[^\\s@*](?:[^*]|\\*[^/])*", "captures": { "0": { "name": "source.embedded.css.scss", "patterns": [ { "include": "source.css.scss" } ] } } } ] }, { "name": "meta.example.html.sassdoc", "begin": "(?x)\n((@)example)\n\\s+\n(markup)", "end": "(?=@|///$)", "beginCaptures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "variable.other.sassdoc" } }, "patterns": [ { "match": "^///\\s+" }, { "match": "[^\\s@*](?:[^*]|\\*[^/])*", "captures": { "0": { "name": "source.embedded.html", "patterns": [ { "include": "source.html" } ] } } } ] }, { "name": "meta.example.js.sassdoc", "begin": "(?x)\n((@)example)\n\\s+\n(javascript)", "end": "(?=@|///$)", "beginCaptures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "variable.other.sassdoc" } }, "patterns": [ { "match": "^///\\s+" }, { "match": "[^\\s@*](?:[^*]|\\*[^/])*", "captures": { "0": { "name": "source.embedded.js", "patterns": [ { "include": "source.js" } ] } } } ] }, { "match": "(?x)\n((@)link)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n)", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "variable.other.link.underline.sassdoc" }, "4": { "name": "entity.name.type.instance.sassdoc" } } }, { "match": "(?x)\n(\n (@)\n (?:arg|argument|param|parameter|requires?|see|colors?|fonts?|ratios?|sizes?)\n)\n\\s+\n(\n [A-Za-z_$%]\n [\\-\\w$.\\[\\]]*\n)", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "variable.other.sassdoc" } } }, { "begin": "((@)(?:arg|argument|param|parameter|prop|property|requires?|see|sizes?))\\s+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" } }, "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", "patterns": [ { "include": "#sassdoctype" }, { "match": "([A-Za-z_$%][\\-\\w$.\\[\\]]*)", "name": "variable.other.sassdoc" }, { "name": "variable.other.sassdoc", "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else (sorry)\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))", "captures": { "1": { "name": "punctuation.definition.optional-value.begin.bracket.square.sassdoc" }, "2": { "name": "keyword.operator.assignment.sassdoc" }, "3": { "name": "source.embedded.js", "patterns": [ { "include": "source.js" } ] }, "4": { "name": "punctuation.definition.optional-value.end.bracket.square.sassdoc" }, "5": { "name": "invalid.illegal.syntax.sassdoc" } } } ] }, { "begin": "(?x)\n(\n (@)\n (?:returns?|throws?|exception|outputs?)\n)\n\\s+(?={)", "beginCaptures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" } }, "end": "(?=\\s|[^{}\\[\\]A-Za-z_$])", "patterns": [ { "include": "#sassdoctype" } ] }, { "match": "(?x)\n(\n (@)\n (?:type)\n)\n\\s+\n(\n (?:\n [A-Za-z |]+\n )\n)", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "entity.name.type.instance.sassdoc", "patterns": [ { "include": "#sassdoctypedelimiter" } ] } } }, { "match": "(?x)\n(\n (@)\n (?:alias|group|name|requires?|see|icons?)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)", "captures": { "1": { "name": "storage.type.class.sassdoc" }, "2": { "name": "punctuation.definition.block.tag.sassdoc" }, "3": { "name": "entity.name.type.instance.sassdoc" } } }, { "name": "storage.type.class.sassdoc", "match": "(?x)\n(@)\n(?:access|alias|author|content|deprecated|example|exception|group\n|ignore|name|prop|property|requires?|returns?|see|since|throws?|todo\n|type|outputs?)\n\\b", "captures": { "1": { "name": "punctuation.definition.block.tag.sassdoc" } } } ], "repository": { "brackets": { "patterns": [ { "begin": "{", "end": "}|(?=$)", "patterns": [ { "include": "#brackets" } ] }, { "begin": "\\[", "end": "\\]|(?=$)", "patterns": [ { "include": "#brackets" } ] } ] }, "sassdoctypedelimiter": { "match": "(\\|)", "captures": { "1": { "name": "punctuation.definition.delimiter.sassdoc" } } }, "sassdoctype": { "patterns": [ { "name": "invalid.illegal.type.sassdoc", "match": "\\G{(?:[^}*]|\\*[^/}])+$" }, { "begin": "\\G({)", "beginCaptures": { "0": { "name": "entity.name.type.instance.sassdoc" }, "1": { "name": "punctuation.definition.bracket.curly.begin.sassdoc" } }, "contentName": "entity.name.type.instance.sassdoc", "end": "((}))\\s*|(?=$)", "endCaptures": { "1": { "name": "entity.name.type.instance.sassdoc" }, "2": { "name": "punctuation.definition.bracket.curly.end.sassdoc" } }, "patterns": [ { "include": "#brackets" } ] } ] } } }