{"mappings":"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","names":["globalKey","prismGlobal","plainTextGrammar","rest","tokenize","languages","prismGlobal","plainTextGrammar","_clone","o","visited","copy","t","toString","key","rest","tokenize","i","l","clone","extend","id","redef","languages","insertBefore","grammar","before","insert","temp","token","clikeComment","clikeString","boolean","dotPunctuation","maybeClassName","languages","clikeComment","rest","clikeString","dotPunctuation","pattern","boolean","comment","interpolation","coffee","languages","extend","insertBefore"],"sources":["../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/core.js","../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/utils/language.js","../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/utils/patterns.js","../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/languages/javascript.js","../esm/npm/@cyfung1031/prism-code-editor@5.2.0-cdn-esm.2/node_modules/@cyfung1031/prism-code-editor/src/prism/languages/coffeescript.js"],"sourcesContent":["// Slimmed down Prism core with most high level functions removed\n\nvar globalKey = Symbol.for(\"prism-code-editor.prism\");\nvar prismGlobal = globalThis[globalKey] || (globalThis[globalKey] = {});\n\nvar plainTextGrammar = prismGlobal.plainTextGrammar || (prismGlobal.plainTextGrammar = {});\nvar rest = prismGlobal.rest || (prismGlobal.rest = Symbol.for(\"prism-code-editor.prism.rest\"));\nvar tokenize =\n\tprismGlobal.tokenize || (prismGlobal.tokenize = Symbol.for(\"prism-code-editor.prism.tokenize\"));\n\n/** @param {*} id */\nvar resolve = id =\u003e typeof id == 'string' ? languages[id] : id;\n\n/** @type {Record\u003cstring, any\u003e} */\nvar languages =\n\tprismGlobal.languages ||\n\t(prismGlobal.languages = {\n\t\tplain: plainTextGrammar,\n\t\tplaintext: plainTextGrammar,\n\t\ttext: plainTextGrammar,\n\t\ttxt: plainTextGrammar,\n\t});\n\n/**\n * @param {string} text\n * @param {any} grammar\n */\nvar tokenizeText = (text, grammar) =\u003e (grammar[tokenize] || withoutTokenizer)(text, grammar);\n\n/**\n * @param {string} text\n * @param {any} grammar\n */\nvar withoutTokenizer = (text, grammar) =\u003e {\n\t/** @type {LinkedListNode} */\n\tvar startNode = [text];\n\tvar restGrammar;\n\t/** @type {(string | Token)[]} */\n\tvar array = [], i = 0;\n\twhile (restGrammar = resolve(grammar[rest])) {\n\t\tdelete grammar[rest];\n\t\tObject.assign(grammar, restGrammar);\n\t}\n\n\tmatchGrammar(text, grammar, startNode, 0);\n\n\twhile (array[i++] = startNode[0], startNode = startNode[1]);\n\treturn array;\n};\n\n/**\n * @param {string} string\n * @param {RegExp} pattern\n * @param {string} replacement\n */\nvar escapeHtml = (string, pattern, replacement) =\u003e {\n\treturn string.replace(/\u0026/g, '\u0026amp;').replace(pattern, replacement);\n};\n\nvar closingTag = '\u003c/span\u003e';\nvar openingTags = '';\nvar closingTags = '';\n\n/** @param {(string | Token)[]} tokens */\nvar highlightTokens = tokens =\u003e {\n\tvar str = '', token, i = 0;\n\twhile (token = tokens[i++]) str += stringify(token);\n\treturn str;\n};\n\n/**\n * @param {string | Token | (string | Token)[]} token\n * @returns {string}\n */\nvar stringify = token =\u003e {\n\tif (token instanceof Token) {\n\t\tvar { type, alias, content } = token;\n\t\tvar prevOpening = openingTags;\n\t\tvar prevClosing = closingTags;\n\t\tvar opening = `\u003cspan class=\"token ${\n\t\t\ttype + (alias ? ' ' + alias : '') +\n\t\t\t(type == 'keyword' \u0026\u0026 typeof content == 'string' ? ' keyword-' + content : '')\n\t\t}\"\u003e`;\n\n\t\tclosingTags += closingTag;\n\t\topeningTags += opening;\n\t\tvar contentStr = stringify(content);\n\t\topeningTags = prevOpening;\n\t\tclosingTags = prevClosing;\n\t\treturn opening + contentStr + closingTag;\n\t}\n\n\tif (typeof token != 'string') return highlightTokens(token);\n\n\ttoken = escapeHtml(token, /\u003c/g, '\u0026lt;');\n\tif (closingTags \u0026\u0026 token.includes('\\n')) {\n\t\treturn token.replace(/\\n/g, closingTags + '\\n' + openingTags);\n\t}\n\treturn token;\n};\n\n/**\n * @param {string} text\n * @param {*} ref\n */\nvar highlightText = (text, ref) =\u003e highlightTokens(tokenizeText(text, resolve(ref)));\n\n/**\n * @param {string} text\n * @param {any} grammar\n * @param {LinkedListNode} startNode\n * @param {number} startPos\n * @param {[string, number, number]} [rematch]\n *\n * @typedef {[string | Token, LinkedListNode?]} LinkedListNode\n */\nvar matchGrammar = (text, grammar, startNode, startPos, rematch) =\u003e {\n\tfor (var token in grammar) {\n\t\tif (grammar[token]) for (var j = 0, p = grammar[token], patternObj, patterns = Array.isArray(p) ? p : [p]; patternObj = patterns[j]; j++) {\n\t\t\tif (rematch \u0026\u0026 rematch[0] == token \u0026\u0026 rematch[1] == j) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/** @type {RegExp} */\n\t\t\tvar pattern = patternObj.pattern || patternObj;\n\t\t\tvar inside = resolve(patternObj.inside);\n\t\t\tvar lookbehind = patternObj.lookbehind;\n\t\t\tvar greedy = pattern.global;\n\t\t\tvar alias = patternObj.alias;\n\n\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\tvar currentNode = startNode, pos = startPos;\n\t\t\t\tcurrentNode \u0026\u0026 (!rematch || pos \u003c rematch[2]);\n\t\t\t\tpos += currentNode[0].length, currentNode = currentNode[1]\n\t\t\t) {\n\t\t\t\tvar str = currentNode[0];\n\t\t\t\tvar removeCount = 0;\n\t\t\t\tvar match;\n\n\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tpattern.lastIndex = greedy ? pos : 0;\n\t\t\t\tmatch = pattern.exec(greedy ? text : str);\n\n\t\t\t\tif (!match \u0026\u0026 greedy) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (!(match \u0026\u0026 match[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\t\tvar lookbehindLength = lookbehind \u0026\u0026 match[1] ? match[1].length : 0;\n\t\t\t\tvar from = match.index + lookbehindLength;\n\t\t\t\tvar matchStr = match[0].slice(lookbehindLength);\n\t\t\t\tvar to = from + matchStr.length;\n\t\t\t\tvar k, p;\n\n\t\t\t\tif (greedy) {\n\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\tfor (\n\t\t\t\t\t\t;\n\t\t\t\t\t\tp = pos + currentNode[0].length, from \u003e= p;\n\t\t\t\t\t\tcurrentNode = currentNode[1], pos = p\n\t\t\t\t\t);\n\n\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\tif (currentNode[0] instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\tfor (\n\t\t\t\t\t\tk = currentNode, p = pos;\n\t\t\t\t\t\t(p += k[0].length) \u003c to;\n\t\t\t\t\t\tk = k[1], removeCount++\n\t\t\t\t\t);\n\n\t\t\t\t\t// replace with the new match\n\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\tfrom -= pos;\n\t\t\t\t\tto -= pos;\n\t\t\t\t}\n\n\t\t\t\tvar after = str.slice(to);\n\t\t\t\tvar reach = pos + str.length;\n\t\t\t\tvar newToken = new Token(token, inside ? tokenizeText(matchStr, inside) : matchStr, matchStr, alias);\n\t\t\t\tvar next = currentNode, i = 0;\n\t\t\t\tvar nestedRematch;\n\n\t\t\t\twhile (next = next[1], i++ \u003c removeCount);\n\n\t\t\t\tif (after) {\n\t\t\t\t\tif (!next || next[0] instanceof Token) next = [after, next];\n\t\t\t\t\telse next[0] = after + next[0];\n\t\t\t\t};\n\n\t\t\t\tpos += from;\n\t\t\t\tcurrentNode[0] = from ? str.slice(0, from) : newToken;\n\n\t\t\t\tif (from) currentNode = currentNode[1] = [newToken, next];\n\t\t\t\telse currentNode[1] = next;\n\n\t\t\t\tif (removeCount) {\n\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\tmatchGrammar(text, grammar, currentNode, pos, nestedRematch = [token, j, reach]);\n\t\t\t\t\treach = nestedRematch[2];\n\t\t\t\t}\n\n\t\t\t\tif (rematch \u0026\u0026 reach \u003e rematch[2]) rematch[2] = reach;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Creates a new token.\n *\n * @param {string} type\n * @param {string | any[]} content\n * @param {string} matchedStr\n * @param {string} alias\n * @class\n */\nfunction Token(type, content, matchedStr, alias) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\tthis.length = matchedStr.length;\n}\n\nexport {\n\trest,\n\ttokenize,\n\tToken,\n\tlanguages,\n\ttokenizeText,\n\twithoutTokenizer,\n\tresolve,\n\tescapeHtml,\n\thighlightTokens,\n\thighlightText\n};\n","import { languages, rest, tokenize } from \"../core.js\";\n\nvar _clone = (o, visited) =\u003e {\n\tif (visited.has(o)) return visited.get(o);\n\tvar copy = o, t = toString.call(o).slice(8, -1);\n\n\tif (t == \"Object\") {\n\t\tvisited.set(o, copy = {});\n\t\tfor (var key in o) {\n\t\t\tcopy[key] = _clone(o[key], visited);\n\t\t}\n\t\tif (o[rest]) copy[rest] = _clone(o[rest], visited);\n\t\tif (o[tokenize]) copy[tokenize] = o[tokenize];\n\t}\n\telse if (t == \"Array\") {\n\t\tvisited.set(o, copy = []);\n\t\tfor (var i = 0, l = o.length; i \u003c l; i++) {\n\t\t\tcopy[i] = _clone(o[i], visited);\n\t\t}\n\t}\n\n\treturn copy;\n}\n\nvar clone = o =\u003e _clone(o, new Map);\n\nvar extend = (id, redef) =\u003e Object.assign(clone(languages[id]), redef);\n\nvar insertBefore = (grammar, before, insert) =\u003e {\n\tvar temp = {};\n\n\tfor (var token in grammar) {\n\t\ttemp[token] = grammar[token];\n\t\tdelete grammar[token];\n\t}\n\n\tfor (var token in temp) {\n\t\tif (token == before) Object.assign(grammar, insert);\n\n\t\t// Do not insert token which also occur in insert. See #1525\n\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\tgrammar[token] = temp[token];\n\t\t}\n\t}\n}\n\nvar toString = {}.toString;\n\nexport { clone, insertBefore, extend }\n","var clikeComment = /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/g;\n\nvar clikeString = /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\\\n])*\\1/g;\n\nvar clikeNumber = /\\b0x[a-f\\d]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i;\n\nvar clikePunctuation = /[()[\\]{}.,:;]/;\n\nvar boolean = /\\b(?:false|true)\\b/;\n\nvar dotPunctuation = {\n\t'punctuation': /\\./\n};\n\nexport { clikeComment, clikeString, clikeNumber, clikePunctuation, boolean, dotPunctuation }\n","import { languages, rest } from '../core.js';\nimport { boolean, clikeComment, clikeString, dotPunctuation } from '../utils/patterns.js';\n\nvar maybeClassName = {\n\t'maybe-class-name': /^[A-Z].*/\n};\n\nlanguages.js = languages.javascript = {\n\t'doc-comment': {\n\t\tpattern: /\\/\\*\\*(?!\\/)[\\s\\S]*?(?:\\*\\/|$)/g,\n\t\talias: 'comment',\n\t\tinside: 'jsdoc'\n\t},\n\t'comment': clikeComment,\n\t'hashbang': {\n\t\tpattern: /^#!.*/g,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})*\\}|(?!\\$\\{)[^\\\\`])*`/g,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})*\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^..|\\}$/g,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\t[rest]: 'js'\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\[\\s\\S]|(?!\\2)[^\\\\\\n])*\\2(?=\\s*:)/mg,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n\t'string': clikeString,\n\t'regex': {\n\t\tpattern: /((?:^|[^$\\w\\xa0-\\uffff\"'`.)\\]\\s]|\\b(?:return|yield))\\s*)\\/(?:(?:\\[(?:\\\\.|[^\\\\\\n\\]])*\\]|\\\\.|[^\\\\\\n/[])+\\/[dgimyus]{0,7}|(?:\\[(?:\\\\.|[^\\\\\\n[\\]]|\\[(?:\\\\.|[^\\\\\\n[\\]]|\\[(?:\\\\.|[^\\\\\\n[\\]])*\\])*\\])*\\]|\\\\.|[^\\\\\\n/[])+\\/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?!\\/\\*|[^()[\\]{}.,:;?`\\n%\u0026|^!=\u003c\u003e/*+-]))/g,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'regex-flags': /\\w+$/,\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /.+/,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: 'regex'\n\t\t\t}\n\t\t}\n\t},\n\t'class-name': [\n\t\t{\n\t\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff.])+/,\n\t\t\tlookbehind: true,\n\t\t\tinside: dotPunctuation\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xa0-\\uffff]|\\s)(?![a-z\\d])(?:(?!\\s)[$\\w\\xa0-\\uffff])+(?=\\.(?:constructor|prototype)\\b)/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^)]*\\))*\\)|(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+)\\s*=\u003e))/,\n\t\talias: 'function',\n\t\tinside: maybeClassName\n\t},\n\t'parameter': [\n\t\t/(function(?:\\s+(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t/(^|[^$\\w\\xa0-\\uffff]|\\s)(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+(?=\\s*=\u003e)/,\n\t\t/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=\u003e)/,\n\t\t/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while|yield|class|const|debugger|delete|enum|extends|function|[gs]et|export|from|import|implements|in|instanceof|interface|let|new|null|of|package|private|protected|public|static|super|this|typeof|undefined|var|void|with)(?![$\\w\\xa0-\\uffff]))(?:(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/\n\t].map(pattern =\u003e ({\n\t\tpattern,\n\t\tlookbehind: true,\n\t\tinside: 'js'\n\t})),\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/,\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.{3}\\s*)\\b(?:as|assert(?=\\s*\\{)|export|from(?!\\s*[^\\s\"'])|import)\\b/,\n\t\t\talias: 'module',\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.{3}\\s*)\\b(?:await|break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/,\n\t\t\talias: 'control-flow',\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.{3}\\s*)\\b(?:async(?!\\s*[^\\s($\\w\\xa0-\\uffff])|class|const|debugger|delete|enum|extends|function|[gs]et(?!\\s*[^\\s#[$\\w\\xa0-\\uffff])|implements|in|instanceof|interface|let|new|null|of|package|private|protected|public|static|super|this|typeof|undefined|var|void|with)\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'boolean': boolean,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': {\n\t\tpattern: /#?(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t\tinside: maybeClassName\n\t},\n\t'number': {\n\t\tpattern: /(^|[^$\\w])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][a-fA-F\\d]+(?:_[a-fA-F\\d]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![$\\w])/,\n\t\tlookbehind: true\n\t},\n\t'literal-property': {\n\t\tpattern: /([\\n,{][ \\t]*)(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+(?=\\s*:)/,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n\t'operator': [\n\t\t{\n\t\t\tpattern: /=\u003e/,\n\t\t\talias: 'arrow'\n\t\t},\n\t\t/--|\\+\\+|(?:\\*\\*|\u0026\u0026|\\|\\||[!=]=|\u003e\u003e\u003e?|\u003c\u003c|[%\u0026|^!=\u003c\u003e/*+-]|\\?\\?)=?|\\.{3}|\\?(?!\\.)|~|:/\n\t],\n\t'property-access': {\n\t\tpattern: /(\\.\\s*)#?(?!\\d)(?:(?!\\s)[$\\w\\xa0-\\uffff])+/,\n\t\tlookbehind: true,\n\t\tinside: maybeClassName\n\t},\n\t'maybe-class-name': {\n\t\tpattern: /(^|[^$\\w\\xa0-\\uffff])[A-Z][$\\w\\xa0-\\uffff]+/,\n\t\tlookbehind: true\n\t},\n\t'punctuation': /\\?\\.|[()[\\]{}.,:;]/\n};\n","import { languages } from '../core.js';\nimport { extend, insertBefore } from '../utils/language.js';\nimport './javascript.js';\n\n// Ignore comments starting with { to privilege string interpolation highlighting\nvar comment = /#(?!\\{).+/;\nvar interpolation = {\n\tpattern: /#\\{[^}]+\\}/,\n\talias: 'variable'\n};\n\nvar coffee = languages.coffee = languages.coffeescript = extend('js', {\n\t'comment': comment,\n\t'string': [\n\n\t\t// Strings are multiline\n\t\t/'(?:\\\\[\\s\\S]|[^\\\\'])*'/g,\n\n\t\t{\n\t\t\t// Strings are multiline\n\t\t\tpattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/g,\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t],\n\t'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extends?|false|true|finally|f?or|i[fns]|instanceof|isnt|let|loop|namespace|new|not?|null|off?|ow?n|return|super|switch|[tw]hen|this|throw|try|typeof|undefined|unless|until|while|window|with|yes|yield)\\b/,\n\t'class-member': {\n\t\tpattern: /@(?!\\d)\\w+/,\n\t\talias: 'variable'\n\t}\n});\n\ninsertBefore(coffee, 'comment', {\n\t'multiline-comment': {\n\t\tpattern: /###[\\s\\S]+?###/,\n\t\talias: 'comment'\n\t},\n\n\t// Block regexp can contain comments and interpolation\n\t'block-regex': {\n\t\tpattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n\t\talias: 'regex',\n\t\tinside: {\n\t\t\t'comment': comment,\n\t\t\t'interpolation': interpolation\n\t\t}\n\t}\n});\n\ninsertBefore(coffee, 'string', {\n\t'inline-javascript': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n\t\tinside: {\n\t\t\t'delimiter': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'punctuation'\n\t\t\t},\n\t\t\t'script': {\n\t\t\t\tpattern: /[\\s\\S]+/,\n\t\t\t\talias: 'language-javascript',\n\t\t\t\tinside: 'js'\n\t\t\t}\n\t\t}\n\t},\n\n\t// Block strings\n\t'multiline-string': [\n\t\t{\n\t\t\tpattern: /'''[\\s\\S]*?'''/g,\n\t\t\talias: 'string'\n\t\t},\n\t\t{\n\t\t\tpattern: /\"\"\"[\\s\\S]*?\"\"\"/g,\n\t\t\talias: 'string',\n\t\t\tinside: {\n\t\t\t\t'interpolation': interpolation\n\t\t\t}\n\t\t}\n\t]\n\n});\n\ninsertBefore(coffee, 'keyword', {\n\t// Object property\n\t'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n});\n\ndelete coffee['template-string'];\n"],"version":3}
