1018 lines
23 KiB
JSON
1018 lines
23 KiB
JSON
{
|
|
"displayName": "Pug",
|
|
"name": "pug",
|
|
"patterns": [
|
|
{
|
|
"match": "^(!!!|doctype)(\\s*[-0-9A-Z_a-z]+)?",
|
|
"name": "meta.tag.sgml.doctype.html"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)//-",
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "comment.unbuffered.block.pug"
|
|
},
|
|
{
|
|
"begin": "^(\\s*)//",
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "string.comment.buffered.block.pug",
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "invalid.illegal.comment.comment.block.pug"
|
|
}
|
|
},
|
|
"match": "^\\s*(//)(?!-)",
|
|
"name": "string.comment.buffered.block.pug"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "<!--",
|
|
"end": "--\\s*>",
|
|
"name": "comment.unbuffered.block.pug",
|
|
"patterns": [
|
|
{
|
|
"match": "--",
|
|
"name": "invalid.illegal.comment.comment.block.pug"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)-$",
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.js",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(script)((\\.)$|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "entity.name.tag.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "meta.tag.other",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?=\\()",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\G(?=[#.])",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#complete_tag"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(style)((\\.)$|(?=[#(.].*\\.$))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "entity.name.tag.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "meta.tag.other",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?=\\()",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\G(?=[#.])",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#complete_tag"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "source.css"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(sass)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.sass.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.sass.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.sass"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(scss)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.scss.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.css.scss.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.css.scss"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(less)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.less.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.less.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.less"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(stylus)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.stylus.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.stylus"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.coffeescript.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.coffeescript.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.coffee"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*):(uglify-js)(?=\\(|$)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "constant.language.name.js.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"name": "source.js.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)((:(?=.))|(:)$)",
|
|
"beginCaptures": {
|
|
"4": {
|
|
"name": "invalid.illegal.empty.generic.filter.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?<=:)(?=.)",
|
|
"end": "$",
|
|
"name": "name.generic.filter.pug",
|
|
"patterns": [
|
|
{
|
|
"match": "\\G\\(",
|
|
"name": "invalid.illegal.name.generic.filter.pug"
|
|
},
|
|
{
|
|
"match": "[-\\w]",
|
|
"name": "constant.language.name.generic.filter.pug"
|
|
},
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"match": "\\W",
|
|
"name": "invalid.illegal.name.generic.filter.pug"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(?:(?=\\.$)|(?=[#.\\w].*?\\.$)(?=(?:(?:#[-\\w]+|\\.[-\\w]+)|(?:[!#]\\{[^}]*}|\\w(?:[-:\\w]+[-\\w]|[-\\w]*)))(?:#[-\\w]+|\\.[-\\w]+|(?:\\((?:[^\"'()]*(?:'(?:[^']|(?<!\\\\)\\\\')*'|\"(?:[^\"]|(?<!\\\\)\\\\\")*\"))*[^()]*\\))*)*(?:(?::\\s+|(?<=\\)))(?:(?:#[-\\w]+|\\.[-\\w]+)|(?:[!#]\\{[^}]*}|\\w(?:[-:\\w]+[-\\w]|[-\\w]*)))(?:#[-\\w]+|\\.[-\\w]+|(?:\\((?:[^\"'()]*(?:'(?:[^']|(?<!\\\\)\\\\')*'|\"(?:[^\"]|(?<!\\\\)\\\\\")*\"))*[^()]*\\))*)*)*\\.$)(?:(?:(#[-\\w]+)|(\\.[-\\w]+))|([!#]\\{[^}]*}|\\w(?:[-:\\w]+[-\\w]|[-\\w]*))))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "meta.selector.css entity.other.attribute-name.id.css.pug"
|
|
},
|
|
"3": {
|
|
"name": "meta.selector.css entity.other.attribute-name.class.css.pug"
|
|
},
|
|
"4": {
|
|
"name": "meta.tag.other entity.name.tag.pug"
|
|
}
|
|
},
|
|
"end": "^(?!(\\1\\s)|\\s*$)",
|
|
"patterns": [
|
|
{
|
|
"match": "\\.$",
|
|
"name": "storage.type.function.pug.dot-block-dot"
|
|
},
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "#complete_tag"
|
|
},
|
|
{
|
|
"begin": "^(?=.)",
|
|
"end": "$",
|
|
"name": "text.block.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#embedded_html"
|
|
},
|
|
{
|
|
"include": "#html_entity"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^\\s*",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#blocks_and_includes"
|
|
},
|
|
{
|
|
"include": "#unbuffered_code"
|
|
},
|
|
{
|
|
"include": "#mixin_definition"
|
|
},
|
|
{
|
|
"include": "#mixin_call"
|
|
},
|
|
{
|
|
"include": "#flow_control"
|
|
},
|
|
{
|
|
"include": "#flow_control_each"
|
|
},
|
|
{
|
|
"include": "#case_conds"
|
|
},
|
|
{
|
|
"begin": "\\|",
|
|
"end": "$",
|
|
"name": "text.block.pipe.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#embedded_html"
|
|
},
|
|
{
|
|
"include": "#html_entity"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#printed_expression"
|
|
},
|
|
{
|
|
"begin": "\\G(?=(#[^-{\\w])|[^#.\\w])",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"begin": "</?(?=[!#])",
|
|
"end": ">|$",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#embedded_html"
|
|
},
|
|
{
|
|
"include": "#html_entity"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#complete_tag"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"repository": {
|
|
"babel_parens": {
|
|
"begin": "\\(",
|
|
"end": "\\)|((\\{\\s*)?)$",
|
|
"patterns": [
|
|
{
|
|
"include": "#babel_parens"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"blocks_and_includes": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.import.include.pug"
|
|
},
|
|
"4": {
|
|
"name": "variable.control.import.include.pug"
|
|
}
|
|
},
|
|
"match": "(extends|include|yield|append|prepend|block( ((?:ap|pre)pend))?)\\s+(.*)$",
|
|
"name": "meta.first-class.pug"
|
|
},
|
|
"case_conds": {
|
|
"begin": "(default|when)((\\s+|(?=:))|$)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"name": "meta.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?!:)",
|
|
"end": "(?=:\\s+)|$",
|
|
"name": "js.embedded.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#case_when_paren"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": ":\\s+",
|
|
"end": "$",
|
|
"name": "tag.case.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#complete_tag"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"case_when_paren": {
|
|
"begin": "\\(",
|
|
"end": "\\)",
|
|
"name": "js.when.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#case_when_paren"
|
|
},
|
|
{
|
|
"match": ":",
|
|
"name": "invalid.illegal.name.tag.pug"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"complete_tag": {
|
|
"begin": "(?=[#.\\w])|(:\\s*)",
|
|
"end": "(\\.?)$|(?=:.)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug.dot-block-dot"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#blocks_and_includes"
|
|
},
|
|
{
|
|
"include": "#unbuffered_code"
|
|
},
|
|
{
|
|
"include": "#mixin_call"
|
|
},
|
|
{
|
|
"include": "#flow_control"
|
|
},
|
|
{
|
|
"include": "#flow_control_each"
|
|
},
|
|
{
|
|
"match": "(?<=:)\\w.*$",
|
|
"name": "invalid.illegal.name.tag.pug"
|
|
},
|
|
{
|
|
"include": "#tag_name"
|
|
},
|
|
{
|
|
"include": "#tag_id"
|
|
},
|
|
{
|
|
"include": "#tag_classes"
|
|
},
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "#tag_mixin_attributes"
|
|
},
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "invalid.illegal.end.tag.pug"
|
|
},
|
|
"4": {
|
|
"name": "invalid.illegal.end.tag.pug"
|
|
}
|
|
},
|
|
"match": "(?:((\\.)\\s+)|((:)\\s*))$"
|
|
},
|
|
{
|
|
"include": "#printed_expression"
|
|
},
|
|
{
|
|
"include": "#tag_text"
|
|
}
|
|
]
|
|
},
|
|
"embedded_html": {
|
|
"begin": "(?=<[^>]*>)",
|
|
"end": "$|(?=>)",
|
|
"name": "html",
|
|
"patterns": [
|
|
{
|
|
"include": "text.html.basic"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
"flow_control": {
|
|
"begin": "(for|if|else if|else|until|while|unless|case)(\\s+|$)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"name": "meta.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"begin": "",
|
|
"end": "$",
|
|
"name": "js.embedded.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"flow_control_each": {
|
|
"begin": "(each)(\\s+|$)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug"
|
|
}
|
|
},
|
|
"end": "$",
|
|
"name": "meta.control.flow.pug.each",
|
|
"patterns": [
|
|
{
|
|
"match": "([$_\\w]+)(?:\\s*,\\s*([$_\\w]+))?",
|
|
"name": "variable.other.pug.each-var"
|
|
},
|
|
{
|
|
"begin": "",
|
|
"end": "$",
|
|
"name": "js.embedded.control.flow.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"html_entity": {
|
|
"patterns": [
|
|
{
|
|
"match": "(&)([0-9A-Za-z]+|#[0-9]+|#x\\h+)(;)",
|
|
"name": "constant.character.entity.html.text.pug"
|
|
},
|
|
{
|
|
"match": "[\\&<>]",
|
|
"name": "invalid.illegal.html_entity.text.pug"
|
|
}
|
|
]
|
|
},
|
|
"inline_pug": {
|
|
"begin": "(?<!\\\\)(#\\[)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.function.pug"
|
|
},
|
|
"2": {
|
|
"name": "entity.name.function.pug"
|
|
}
|
|
},
|
|
"end": "(])",
|
|
"name": "inline.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#mixin_call"
|
|
},
|
|
{
|
|
"begin": "(?<!])(?=[#.\\w])|(:\\s*)",
|
|
"end": "(?=]|(:.)|[=\\s])",
|
|
"name": "tag.inline.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_name"
|
|
},
|
|
{
|
|
"include": "#tag_id"
|
|
},
|
|
{
|
|
"include": "#tag_classes"
|
|
},
|
|
{
|
|
"include": "#tag_attributes"
|
|
},
|
|
{
|
|
"include": "#tag_mixin_attributes"
|
|
},
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "invalid.illegal.tag.pug"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#unbuffered_code"
|
|
},
|
|
{
|
|
"include": "#printed_expression"
|
|
},
|
|
{
|
|
"match": "\\[",
|
|
"name": "invalid.illegal.tag.pug"
|
|
},
|
|
{
|
|
"include": "#inline_pug_text"
|
|
}
|
|
]
|
|
},
|
|
"inline_pug_text": {
|
|
"begin": "",
|
|
"end": "(?=])",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\[",
|
|
"end": "]",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug_text"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#embedded_html"
|
|
},
|
|
{
|
|
"include": "#html_entity"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
"interpolated_error": {
|
|
"match": "(?<!\\\\)[!#]\\{(?=[^}]*$)",
|
|
"name": "invalid.illegal.tag.pug"
|
|
},
|
|
"interpolated_value": {
|
|
"begin": "(?<!\\\\)[!#]\\{(?=.*?})",
|
|
"end": "}",
|
|
"name": "string.interpolated.pug",
|
|
"patterns": [
|
|
{
|
|
"match": "\\{",
|
|
"name": "invalid.illegal.tag.pug"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"js_braces": {
|
|
"begin": "\\{",
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_braces"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"js_brackets": {
|
|
"begin": "\\[",
|
|
"end": "]",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_brackets"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"js_parens": {
|
|
"begin": "\\(",
|
|
"end": "\\)",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_parens"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"mixin_call": {
|
|
"begin": "(mixin\\s+|\\+)([-\\w]+)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug"
|
|
},
|
|
"2": {
|
|
"name": "meta.tag.other entity.name.function.pug"
|
|
}
|
|
},
|
|
"end": "(?!\\()|$",
|
|
"patterns": [
|
|
{
|
|
"begin": "(?<!\\))\\(",
|
|
"end": "\\)",
|
|
"name": "args.mixin.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_parens"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "meta.tag.other entity.other.attribute-name.tag.pug"
|
|
}
|
|
},
|
|
"match": "([^(),/=\\s]+)\\s*=\\s*"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#tag_attributes"
|
|
}
|
|
]
|
|
},
|
|
"mixin_definition": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.function.pug"
|
|
},
|
|
"2": {
|
|
"name": "meta.tag.other entity.name.function.pug"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.parameters.begin.js"
|
|
},
|
|
"4": {
|
|
"name": "variable.parameter.function.js"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.definition.parameters.begin.js"
|
|
}
|
|
},
|
|
"match": "(mixin\\s+)([-\\w]+)(?:(\\()\\s*([A-Z_a-z]\\w*\\s*(?:,\\s*[A-Z_a-z]\\w*\\s*)*)(\\)))?$"
|
|
},
|
|
"printed_expression": {
|
|
"begin": "(!?=)\\s*",
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant"
|
|
}
|
|
},
|
|
"end": "(?=])|$",
|
|
"name": "source.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_brackets"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"tag_attribute_name": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.other.attribute-name.tag.pug"
|
|
}
|
|
},
|
|
"match": "([^!(),/=\\s]+)\\s*"
|
|
},
|
|
"tag_attribute_name_paren": {
|
|
"begin": "\\(\\s*",
|
|
"end": "\\)",
|
|
"name": "entity.other.attribute-name.tag.pug",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attribute_name_paren"
|
|
},
|
|
{
|
|
"include": "#tag_attribute_name"
|
|
}
|
|
]
|
|
},
|
|
"tag_attributes": {
|
|
"begin": "(\\(\\s*)",
|
|
"captures": {
|
|
"1": {
|
|
"name": "constant.name.attribute.tag.pug"
|
|
}
|
|
},
|
|
"end": "(\\))",
|
|
"name": "meta.tag.other",
|
|
"patterns": [
|
|
{
|
|
"include": "#tag_attribute_name_paren"
|
|
},
|
|
{
|
|
"include": "#tag_attribute_name"
|
|
},
|
|
{
|
|
"match": "!(?!=)",
|
|
"name": "invalid.illegal.tag.pug"
|
|
},
|
|
{
|
|
"begin": "=\\s*",
|
|
"end": "$|(?=,|\\s+[^-!%\\&*+/<>?|~]|\\))",
|
|
"name": "attribute_value",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_parens"
|
|
},
|
|
{
|
|
"include": "#js_brackets"
|
|
},
|
|
{
|
|
"include": "#js_braces"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "(?<=[-%\\&*+/:<>?|~])\\s+",
|
|
"end": "$|(?=,|\\s+[^-!%\\&*+/<>?|~]|\\))",
|
|
"name": "attribute_value2",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_parens"
|
|
},
|
|
{
|
|
"include": "#js_brackets"
|
|
},
|
|
{
|
|
"include": "#js_braces"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tag_classes": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "invalid.illegal.tag.pug"
|
|
}
|
|
},
|
|
"match": "\\.([^-\\w])?[-\\w]*",
|
|
"name": "meta.selector.css entity.other.attribute-name.class.css.pug"
|
|
},
|
|
"tag_id": {
|
|
"match": "#[-\\w]+",
|
|
"name": "meta.selector.css entity.other.attribute-name.id.css.pug"
|
|
},
|
|
"tag_mixin_attributes": {
|
|
"begin": "(&attributes\\()",
|
|
"captures": {
|
|
"1": {
|
|
"name": "entity.name.function.pug"
|
|
}
|
|
},
|
|
"end": "(\\))",
|
|
"name": "meta.tag.other",
|
|
"patterns": [
|
|
{
|
|
"match": "attributes(?=\\))",
|
|
"name": "storage.type.keyword.pug"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
},
|
|
"tag_name": {
|
|
"begin": "([!#]\\{(?=.*?}))|(\\w(([-:\\w]+[-\\w])|([-\\w]*)))",
|
|
"end": "\\G((?<!\\5[^-\\w]))|}|$",
|
|
"name": "meta.tag.other entity.name.tag.pug",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?<=\\{)",
|
|
"end": "(?=})",
|
|
"name": "meta.tag.other entity.name.tag.pug",
|
|
"patterns": [
|
|
{
|
|
"match": "\\{",
|
|
"name": "invalid.illegal.tag.pug"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"tag_text": {
|
|
"begin": "(?=.)",
|
|
"end": "$",
|
|
"patterns": [
|
|
{
|
|
"include": "#inline_pug"
|
|
},
|
|
{
|
|
"include": "#embedded_html"
|
|
},
|
|
{
|
|
"include": "#html_entity"
|
|
},
|
|
{
|
|
"include": "#interpolated_value"
|
|
},
|
|
{
|
|
"include": "#interpolated_error"
|
|
}
|
|
]
|
|
},
|
|
"unbuffered_code": {
|
|
"begin": "(-|(([0-9A-Z_a-z]+)\\s+=))",
|
|
"beginCaptures": {
|
|
"3": {
|
|
"name": "variable.parameter.javascript.embedded.pug"
|
|
}
|
|
},
|
|
"end": "(?=])|((\\{\\s*)?)$",
|
|
"name": "source.js",
|
|
"patterns": [
|
|
{
|
|
"include": "#js_brackets"
|
|
},
|
|
{
|
|
"include": "#babel_parens"
|
|
},
|
|
{
|
|
"include": "source.js"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"scopeName": "text.pug"
|
|
}
|