123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /*!-----------------------------------------------------------------------------
- * 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/coffee/coffee.ts
- var conf = {
- wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
- comments: {
- blockComment: ["###", "###"],
- lineComment: "#"
- },
- brackets: [
- ["{", "}"],
- ["[", "]"],
- ["(", ")"]
- ],
- autoClosingPairs: [
- { open: "{", close: "}" },
- { open: "[", close: "]" },
- { open: "(", close: ")" },
- { open: '"', close: '"' },
- { open: "'", close: "'" }
- ],
- surroundingPairs: [
- { open: "{", close: "}" },
- { open: "[", close: "]" },
- { open: "(", close: ")" },
- { open: '"', close: '"' },
- { open: "'", close: "'" }
- ],
- folding: {
- markers: {
- start: new RegExp("^\\s*#region\\b"),
- end: new RegExp("^\\s*#endregion\\b")
- }
- }
- };
- var language = {
- defaultToken: "",
- ignoreCase: true,
- tokenPostfix: ".coffee",
- brackets: [
- { open: "{", close: "}", token: "delimiter.curly" },
- { open: "[", close: "]", token: "delimiter.square" },
- { open: "(", close: ")", token: "delimiter.parenthesis" }
- ],
- regEx: /\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,
- keywords: [
- "and",
- "or",
- "is",
- "isnt",
- "not",
- "on",
- "yes",
- "@",
- "no",
- "off",
- "true",
- "false",
- "null",
- "this",
- "new",
- "delete",
- "typeof",
- "in",
- "instanceof",
- "return",
- "throw",
- "break",
- "continue",
- "debugger",
- "if",
- "else",
- "switch",
- "for",
- "while",
- "do",
- "try",
- "catch",
- "finally",
- "class",
- "extends",
- "super",
- "undefined",
- "then",
- "unless",
- "until",
- "loop",
- "of",
- "by",
- "when"
- ],
- symbols: /[=><!~?&%|+\-*\/\^\.,\:]+/,
- escapes: /\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
- tokenizer: {
- root: [
- [/\@[a-zA-Z_]\w*/, "variable.predefined"],
- [
- /[a-zA-Z_]\w*/,
- {
- cases: {
- this: "variable.predefined",
- "@keywords": { token: "keyword.$0" },
- "@default": ""
- }
- }
- ],
- [/[ \t\r\n]+/, ""],
- [/###/, "comment", "@comment"],
- [/#.*$/, "comment"],
- ["///", { token: "regexp", next: "@hereregexp" }],
- [/^(\s*)(@regEx)/, ["", "regexp"]],
- [/(\()(\s*)(@regEx)/, ["@brackets", "", "regexp"]],
- [/(\,)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\=)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\:)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\[)(\s*)(@regEx)/, ["@brackets", "", "regexp"]],
- [/(\!)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\&)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\|)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\?)(\s*)(@regEx)/, ["delimiter", "", "regexp"]],
- [/(\{)(\s*)(@regEx)/, ["@brackets", "", "regexp"]],
- [/(\;)(\s*)(@regEx)/, ["", "", "regexp"]],
- [
- /}/,
- {
- cases: {
- "$S2==interpolatedstring": {
- token: "string",
- next: "@pop"
- },
- "@default": "@brackets"
- }
- }
- ],
- [/[{}()\[\]]/, "@brackets"],
- [/@symbols/, "delimiter"],
- [/\d+[eE]([\-+]?\d+)?/, "number.float"],
- [/\d+\.\d+([eE][\-+]?\d+)?/, "number.float"],
- [/0[xX][0-9a-fA-F]+/, "number.hex"],
- [/0[0-7]+(?!\d)/, "number.octal"],
- [/\d+/, "number"],
- [/[,.]/, "delimiter"],
- [/"""/, "string", '@herestring."""'],
- [/'''/, "string", "@herestring.'''"],
- [
- /"/,
- {
- cases: {
- "@eos": "string",
- "@default": { token: "string", next: '@string."' }
- }
- }
- ],
- [
- /'/,
- {
- cases: {
- "@eos": "string",
- "@default": { token: "string", next: "@string.'" }
- }
- }
- ]
- ],
- string: [
- [/[^"'\#\\]+/, "string"],
- [/@escapes/, "string.escape"],
- [/\./, "string.escape.invalid"],
- [/\./, "string.escape.invalid"],
- [
- /#{/,
- {
- cases: {
- '$S2=="': {
- token: "string",
- next: "root.interpolatedstring"
- },
- "@default": "string"
- }
- }
- ],
- [
- /["']/,
- {
- cases: {
- "$#==$S2": { token: "string", next: "@pop" },
- "@default": "string"
- }
- }
- ],
- [/#/, "string"]
- ],
- herestring: [
- [
- /("""|''')/,
- {
- cases: {
- "$1==$S2": { token: "string", next: "@pop" },
- "@default": "string"
- }
- }
- ],
- [/[^#\\'"]+/, "string"],
- [/['"]+/, "string"],
- [/@escapes/, "string.escape"],
- [/\./, "string.escape.invalid"],
- [/#{/, { token: "string.quote", next: "root.interpolatedstring" }],
- [/#/, "string"]
- ],
- comment: [
- [/[^#]+/, "comment"],
- [/###/, "comment", "@pop"],
- [/#/, "comment"]
- ],
- hereregexp: [
- [/[^\\\/#]+/, "regexp"],
- [/\\./, "regexp"],
- [/#.*$/, "comment"],
- ["///[igm]*", { token: "regexp", next: "@pop" }],
- [/\//, "regexp"]
- ]
- }
- };
- export {
- conf,
- language
- };
|