securityos/node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.js

397 lines
8.1 KiB
JavaScript

/*!-----------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
* 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
};