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

246 lines
8.5 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/scss/scss.ts
var conf = {
wordPattern: /(#?-?\d*\.\d\w*%?)|([@$#!.:]?[\w-?]+%?)|[@#!.]/g,
comments: {
blockComment: ["/*", "*/"],
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"] }
],
surroundingPairs: [
{ open: "{", close: "}" },
{ open: "[", close: "]" },
{ open: "(", close: ")" },
{ open: '"', close: '"' },
{ open: "'", close: "'" }
],
folding: {
markers: {
start: new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),
end: new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")
}
}
};
var language = {
defaultToken: "",
tokenPostfix: ".scss",
ws: "[ \n\r\f]*",
identifier: "-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",
brackets: [
{ open: "{", close: "}", token: "delimiter.curly" },
{ open: "[", close: "]", token: "delimiter.bracket" },
{ open: "(", close: ")", token: "delimiter.parenthesis" },
{ open: "<", close: ">", token: "delimiter.angle" }
],
tokenizer: {
root: [{ include: "@selector" }],
selector: [
{ include: "@comments" },
{ include: "@import" },
{ include: "@variabledeclaration" },
{ include: "@warndebug" },
["[@](include)", { token: "keyword", next: "@includedeclaration" }],
[
"[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",
{ token: "keyword", next: "@keyframedeclaration" }
],
["[@](page|content|font-face|-moz-document)", { token: "keyword" }],
["[@](charset|namespace)", { token: "keyword", next: "@declarationbody" }],
["[@](function)", { token: "keyword", next: "@functiondeclaration" }],
["[@](mixin)", { token: "keyword", next: "@mixindeclaration" }],
["url(\\-prefix)?\\(", { token: "meta", next: "@urldeclaration" }],
{ include: "@controlstatement" },
{ include: "@selectorname" },
["[&\\*]", "tag"],
["[>\\+,]", "delimiter"],
["\\[", { token: "delimiter.bracket", next: "@selectorattribute" }],
["{", { token: "delimiter.curly", next: "@selectorbody" }]
],
selectorbody: [
["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))", "attribute.name", "@rulevalue"],
{ include: "@selector" },
["[@](extend)", { token: "keyword", next: "@extendbody" }],
["[@](return)", { token: "keyword", next: "@declarationbody" }],
["}", { token: "delimiter.curly", next: "@pop" }]
],
selectorname: [
["#{", { token: "meta", next: "@variableinterpolation" }],
["(\\.|#(?=[^{])|%|(@identifier)|:)+", "tag"]
],
selectorattribute: [{ include: "@term" }, ["]", { token: "delimiter.bracket", next: "@pop" }]],
term: [
{ include: "@comments" },
["url(\\-prefix)?\\(", { token: "meta", next: "@urldeclaration" }],
{ include: "@functioninvocation" },
{ include: "@numbers" },
{ include: "@strings" },
{ include: "@variablereference" },
["(and\\b|or\\b|not\\b)", "operator"],
{ include: "@name" },
["([<>=\\+\\-\\*\\/\\^\\|\\~,])", "operator"],
[",", "delimiter"],
["!default", "literal"],
["\\(", { token: "delimiter.parenthesis", next: "@parenthizedterm" }]
],
rulevalue: [
{ include: "@term" },
["!important", "literal"],
[";", "delimiter", "@pop"],
["{", { token: "delimiter.curly", switchTo: "@nestedproperty" }],
["(?=})", { token: "", next: "@pop" }]
],
nestedproperty: [
["[*_]?@identifier@ws:", "attribute.name", "@rulevalue"],
{ include: "@comments" },
["}", { token: "delimiter.curly", next: "@pop" }]
],
warndebug: [["[@](warn|debug)", { token: "keyword", next: "@declarationbody" }]],
import: [["[@](import)", { token: "keyword", next: "@declarationbody" }]],
variabledeclaration: [
["\\$@identifier@ws:", "variable.decl", "@declarationbody"]
],
urldeclaration: [
{ include: "@strings" },
["[^)\r\n]+", "string"],
["\\)", { token: "meta", next: "@pop" }]
],
parenthizedterm: [
{ include: "@term" },
["\\)", { token: "delimiter.parenthesis", next: "@pop" }]
],
declarationbody: [
{ include: "@term" },
[";", "delimiter", "@pop"],
["(?=})", { token: "", next: "@pop" }]
],
extendbody: [
{ include: "@selectorname" },
["!optional", "literal"],
[";", "delimiter", "@pop"],
["(?=})", { token: "", next: "@pop" }]
],
variablereference: [
["\\$@identifier", "variable.ref"],
["\\.\\.\\.", "operator"],
["#{", { token: "meta", next: "@variableinterpolation" }]
],
variableinterpolation: [
{ include: "@variablereference" },
["}", { token: "meta", next: "@pop" }]
],
comments: [
["\\/\\*", "comment", "@comment"],
["\\/\\/+.*", "comment"]
],
comment: [
["\\*\\/", "comment", "@pop"],
[".", "comment"]
],
name: [["@identifier", "attribute.value"]],
numbers: [
["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?", { token: "number", next: "@units" }],
["#[0-9a-fA-F_]+(?!\\w)", "number.hex"]
],
units: [
[
"(em|ex|ch|rem|fr|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?",
"number",
"@pop"
]
],
functiondeclaration: [
["@identifier@ws\\(", { token: "meta", next: "@parameterdeclaration" }],
["{", { token: "delimiter.curly", switchTo: "@functionbody" }]
],
mixindeclaration: [
["@identifier@ws\\(", { token: "meta", next: "@parameterdeclaration" }],
["@identifier", "meta"],
["{", { token: "delimiter.curly", switchTo: "@selectorbody" }]
],
parameterdeclaration: [
["\\$@identifier@ws:", "variable.decl"],
["\\.\\.\\.", "operator"],
[",", "delimiter"],
{ include: "@term" },
["\\)", { token: "meta", next: "@pop" }]
],
includedeclaration: [
{ include: "@functioninvocation" },
["@identifier", "meta"],
[";", "delimiter", "@pop"],
["(?=})", { token: "", next: "@pop" }],
["{", { token: "delimiter.curly", switchTo: "@selectorbody" }]
],
keyframedeclaration: [
["@identifier", "meta"],
["{", { token: "delimiter.curly", switchTo: "@keyframebody" }]
],
keyframebody: [
{ include: "@term" },
["{", { token: "delimiter.curly", next: "@selectorbody" }],
["}", { token: "delimiter.curly", next: "@pop" }]
],
controlstatement: [
[
"[@](if|else|for|while|each|media)",
{ token: "keyword.flow", next: "@controlstatementdeclaration" }
]
],
controlstatementdeclaration: [
["(in|from|through|if|to)\\b", { token: "keyword.flow" }],
{ include: "@term" },
["{", { token: "delimiter.curly", switchTo: "@selectorbody" }]
],
functionbody: [
["[@](return)", { token: "keyword" }],
{ include: "@variabledeclaration" },
{ include: "@term" },
{ include: "@controlstatement" },
[";", "delimiter"],
["}", { token: "delimiter.curly", next: "@pop" }]
],
functioninvocation: [["@identifier\\(", { token: "meta", next: "@functionarguments" }]],
functionarguments: [
["\\$@identifier@ws:", "attribute.name"],
["[,]", "delimiter"],
{ include: "@term" },
["\\)", { token: "meta", next: "@pop" }]
],
strings: [
['~?"', { token: "string.delimiter", next: "@stringenddoublequote" }],
["~?'", { token: "string.delimiter", next: "@stringendquote" }]
],
stringenddoublequote: [
["\\\\.", "string"],
['"', { token: "string.delimiter", next: "@pop" }],
[".", "string"]
],
stringendquote: [
["\\\\.", "string"],
["'", { token: "string.delimiter", next: "@pop" }],
[".", "string"]
]
}
};
export {
conf,
language
};