123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- /*!-----------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
- * Released under the MIT license
- * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
- *-----------------------------------------------------------------------------*/
- // src/basic-languages/pug/pug.ts
- var conf = {
- comments: {
- lineComment: "//"
- },
- brackets: [
- ["{", "}"],
- ["[", "]"],
- ["(", ")"]
- ],
- autoClosingPairs: [
- { open: '"', close: '"', notIn: ["string", "comment"] },
- { open: "'", close: "'", notIn: ["string", "comment"] },
- { open: "{", close: "}", notIn: ["string", "comment"] },
- { open: "[", close: "]", notIn: ["string", "comment"] },
- { open: "(", close: ")", notIn: ["string", "comment"] }
- ],
- folding: {
- offSide: true
- }
- };
- var language = {
- defaultToken: "",
- tokenPostfix: ".pug",
- ignoreCase: true,
- brackets: [
- { token: "delimiter.curly", open: "{", close: "}" },
- { token: "delimiter.array", open: "[", close: "]" },
- { token: "delimiter.parenthesis", open: "(", close: ")" }
- ],
- keywords: [
- "append",
- "block",
- "case",
- "default",
- "doctype",
- "each",
- "else",
- "extends",
- "for",
- "if",
- "in",
- "include",
- "mixin",
- "typeof",
- "unless",
- "var",
- "when"
- ],
- tags: [
- "a",
- "abbr",
- "acronym",
- "address",
- "area",
- "article",
- "aside",
- "audio",
- "b",
- "base",
- "basefont",
- "bdi",
- "bdo",
- "blockquote",
- "body",
- "br",
- "button",
- "canvas",
- "caption",
- "center",
- "cite",
- "code",
- "col",
- "colgroup",
- "command",
- "datalist",
- "dd",
- "del",
- "details",
- "dfn",
- "div",
- "dl",
- "dt",
- "em",
- "embed",
- "fieldset",
- "figcaption",
- "figure",
- "font",
- "footer",
- "form",
- "frame",
- "frameset",
- "h1",
- "h2",
- "h3",
- "h4",
- "h5",
- "h6",
- "head",
- "header",
- "hgroup",
- "hr",
- "html",
- "i",
- "iframe",
- "img",
- "input",
- "ins",
- "keygen",
- "kbd",
- "label",
- "li",
- "link",
- "map",
- "mark",
- "menu",
- "meta",
- "meter",
- "nav",
- "noframes",
- "noscript",
- "object",
- "ol",
- "optgroup",
- "option",
- "output",
- "p",
- "param",
- "pre",
- "progress",
- "q",
- "rp",
- "rt",
- "ruby",
- "s",
- "samp",
- "script",
- "section",
- "select",
- "small",
- "source",
- "span",
- "strike",
- "strong",
- "style",
- "sub",
- "summary",
- "sup",
- "table",
- "tbody",
- "td",
- "textarea",
- "tfoot",
- "th",
- "thead",
- "time",
- "title",
- "tr",
- "tracks",
- "tt",
- "u",
- "ul",
- "video",
- "wbr"
- ],
- symbols: /[\+\-\*\%\&\|\!\=\/\.\,\:]+/,
- escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
- tokenizer: {
- root: [
- [
- /^(\s*)([a-zA-Z_-][\w-]*)/,
- {
- cases: {
- "$2@tags": {
- cases: {
- "@eos": ["", "tag"],
- "@default": ["", { token: "tag", next: "@tag.$1" }]
- }
- },
- "$2@keywords": ["", { token: "keyword.$2" }],
- "@default": ["", ""]
- }
- }
- ],
- [
- /^(\s*)(#[a-zA-Z_-][\w-]*)/,
- {
- cases: {
- "@eos": ["", "tag.id"],
- "@default": ["", { token: "tag.id", next: "@tag.$1" }]
- }
- }
- ],
- [
- /^(\s*)(\.[a-zA-Z_-][\w-]*)/,
- {
- cases: {
- "@eos": ["", "tag.class"],
- "@default": ["", { token: "tag.class", next: "@tag.$1" }]
- }
- }
- ],
- [/^(\s*)(\|.*)$/, ""],
- { include: "@whitespace" },
- [
- /[a-zA-Z_$][\w$]*/,
- {
- cases: {
- "@keywords": { token: "keyword.$0" },
- "@default": ""
- }
- }
- ],
- [/[{}()\[\]]/, "@brackets"],
- [/@symbols/, "delimiter"],
- [/\d+\.\d+([eE][\-+]?\d+)?/, "number.float"],
- [/\d+/, "number"],
- [/"/, "string", '@string."'],
- [/'/, "string", "@string.'"]
- ],
- tag: [
- [/(\.)(\s*$)/, [{ token: "delimiter", next: "@blockText.$S2." }, ""]],
- [/\s+/, { token: "", next: "@simpleText" }],
- [
- /#[a-zA-Z_-][\w-]*/,
- {
- cases: {
- "@eos": { token: "tag.id", next: "@pop" },
- "@default": "tag.id"
- }
- }
- ],
- [
- /\.[a-zA-Z_-][\w-]*/,
- {
- cases: {
- "@eos": { token: "tag.class", next: "@pop" },
- "@default": "tag.class"
- }
- }
- ],
- [/\(/, { token: "delimiter.parenthesis", next: "@attributeList" }]
- ],
- simpleText: [
- [/[^#]+$/, { token: "", next: "@popall" }],
- [/[^#]+/, { token: "" }],
- [
- /(#{)([^}]*)(})/,
- {
- cases: {
- "@eos": [
- "interpolation.delimiter",
- "interpolation",
- {
- token: "interpolation.delimiter",
- next: "@popall"
- }
- ],
- "@default": ["interpolation.delimiter", "interpolation", "interpolation.delimiter"]
- }
- }
- ],
- [/#$/, { token: "", next: "@popall" }],
- [/#/, ""]
- ],
- attributeList: [
- [/\s+/, ""],
- [
- /(\w+)(\s*=\s*)("|')/,
- ["attribute.name", "delimiter", { token: "attribute.value", next: "@value.$3" }]
- ],
- [/\w+/, "attribute.name"],
- [
- /,/,
- {
- cases: {
- "@eos": {
- token: "attribute.delimiter",
- next: "@popall"
- },
- "@default": "attribute.delimiter"
- }
- }
- ],
- [/\)$/, { token: "delimiter.parenthesis", next: "@popall" }],
- [/\)/, { token: "delimiter.parenthesis", next: "@pop" }]
- ],
- whitespace: [
- [/^(\s*)(\/\/.*)$/, { token: "comment", next: "@blockText.$1.comment" }],
- [/[ \t\r\n]+/, ""],
- [/<!--/, { token: "comment", next: "@comment" }]
- ],
- blockText: [
- [
- /^\s+.*$/,
- {
- cases: {
- "($S2\\s+.*$)": { token: "$S3" },
- "@default": { token: "@rematch", next: "@popall" }
- }
- }
- ],
- [/./, { token: "@rematch", next: "@popall" }]
- ],
- comment: [
- [/[^<\-]+/, "comment.content"],
- [/-->/, { token: "comment", next: "@pop" }],
- [/<!--/, "comment.content.invalid"],
- [/[<\-]/, "comment.content"]
- ],
- string: [
- [
- /[^\\"'#]+/,
- {
- cases: {
- "@eos": { token: "string", next: "@popall" },
- "@default": "string"
- }
- }
- ],
- [
- /@escapes/,
- {
- cases: {
- "@eos": { token: "string.escape", next: "@popall" },
- "@default": "string.escape"
- }
- }
- ],
- [
- /\\./,
- {
- cases: {
- "@eos": {
- token: "string.escape.invalid",
- next: "@popall"
- },
- "@default": "string.escape.invalid"
- }
- }
- ],
- [/(#{)([^}]*)(})/, ["interpolation.delimiter", "interpolation", "interpolation.delimiter"]],
- [/#/, "string"],
- [
- /["']/,
- {
- cases: {
- "$#==$S2": { token: "string", next: "@pop" },
- "@default": { token: "string" }
- }
- }
- ]
- ],
- value: [
- [
- /[^\\"']+/,
- {
- cases: {
- "@eos": { token: "attribute.value", next: "@popall" },
- "@default": "attribute.value"
- }
- }
- ],
- [
- /\\./,
- {
- cases: {
- "@eos": { token: "attribute.value", next: "@popall" },
- "@default": "attribute.value"
- }
- }
- ],
- [
- /["']/,
- {
- cases: {
- "$#==$S2": { token: "attribute.value", next: "@pop" },
- "@default": { token: "attribute.value" }
- }
- }
- ]
- ]
- }
- };
- export {
- conf,
- language
- };
|