UNPKG

yanzi-monaco-editor

Version:

这是一个基于微软的monaco和vue封装的一个代码编辑器,浏览器可运行。主要功能有:html、javascript、css代码编辑,高亮显示,语法错误提示等,可以帮您的项目很快的拥有一个web端的代码编辑器

408 lines (403 loc) 13.6 kB
((typeof self !== 'undefined' ? self : this)["webpackJsonpyanziMonacoEditor"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpyanziMonacoEditor"] || []).push([[67],{ /***/ "a2b3d": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conf", function() { return conf; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "language", function() { return language; }); /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var conf = { wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g, comments: { blockComment: ['{#', '#}'] }, brackets: [ ['{#', '#}'], ['{%', '%}'], ['{{', '}}'], ['(', ')'], ['[', ']'], // HTML ['<!--', '-->'], ['<', '>'] ], autoClosingPairs: [ { open: '{# ', close: ' #}' }, { open: '{% ', close: ' %}' }, { open: '{{ ', close: ' }}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '"', close: '"' }, { open: "'", close: "'" } ], surroundingPairs: [ { open: '"', close: '"' }, { open: "'", close: "'" }, // HTML { open: '<', close: '>' } ] }; var language = { defaultToken: '', tokenPostfix: '', ignoreCase: true, keywords: [ // (opening) tags 'apply', 'autoescape', 'block', 'deprecated', 'do', 'embed', 'extends', 'flush', 'for', 'from', 'if', 'import', 'include', 'macro', 'sandbox', 'set', 'use', 'verbatim', 'with', // closing tags 'endapply', 'endautoescape', 'endblock', 'endembed', 'endfor', 'endif', 'endmacro', 'endsandbox', 'endset', 'endwith', // literals 'true', 'false' ], tokenizer: { root: [ // whitespace [/\s+/], // Twig Tag Delimiters [/{#/, 'comment.twig', '@commentState'], [/{%[-~]?/, 'delimiter.twig', '@blockState'], [/{{[-~]?/, 'delimiter.twig', '@variableState'], // HTML [/<!DOCTYPE/, 'metatag.html', '@doctype'], [/<!--/, 'comment.html', '@comment'], [ /(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/, ['delimiter.html', 'tag.html', '', 'delimiter.html'] ], [/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]], [/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]], [ /(<)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }] ], [ /(<\/)((?:[\w\-]+:)?[\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }] ], [/</, 'delimiter.html'], [/[^<]+/] // text ], /** * Comment Tag Handling */ commentState: [ [/#}/, 'comment.twig', '@pop'], [/./, 'comment.twig'] ], /** * Block Tag Handling */ blockState: [ [/[-~]?%}/, 'delimiter.twig', '@pop'], // whitespace [/\s+/], // verbatim // Unlike other blocks, verbatim ehas its own state // transition to ensure we mark its contents as strings. [ /(verbatim)(\s*)([-~]?%})/, ['keyword.twig', '', { token: 'delimiter.twig', next: '@rawDataState' }] ], { include: 'expression' } ], rawDataState: [ // endverbatim [ /({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/, [ 'delimiter.twig', '', 'keyword.twig', '', { token: 'delimiter.twig', next: '@popall' } ] ], [/./, 'string.twig'] ], /** * Variable Tag Handling */ variableState: [[/[-~]?}}/, 'delimiter.twig', '@pop'], { include: 'expression' }], stringState: [ // closing double quoted string [/"/, 'string.twig', '@pop'], // interpolation start [/#{\s*/, 'string.twig', '@interpolationState'], // string part [/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/, 'string.twig'] ], interpolationState: [ // interpolation end [/}/, 'string.twig', '@pop'], { include: 'expression' } ], /** * Expression Handling */ expression: [ // whitespace [/\s+/], // operators - math [/\+|-|\/{1,2}|%|\*{1,2}/, 'operators.twig'], // operators - logic [/(and|or|not|b-and|b-xor|b-or)(\s+)/, ['operators.twig', '']], // operators - comparison (symbols) [/==|!=|<|>|>=|<=/, 'operators.twig'], // operators - comparison (words) [/(starts with|ends with|matches)(\s+)/, ['operators.twig', '']], // operators - containment [/(in)(\s+)/, ['operators.twig', '']], // operators - test [/(is)(\s+)/, ['operators.twig', '']], // operators - misc [/\||~|:|\.{1,2}|\?{1,2}/, 'operators.twig'], // names [ /[^\W\d][\w]*/, { cases: { '@keywords': 'keyword.twig', '@default': 'variable.twig' } } ], // numbers [/\d+(\.\d+)?/, 'number.twig'], // punctuation [/\(|\)|\[|\]|{|}|,/, 'delimiter.twig'], // strings [/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/, 'string.twig'], // opening double quoted string [/"/, 'string.twig', '@stringState'], // misc syntactic constructs // These are not operators per se, but for the purposes of lexical analysis we // can treat them as such. // arrow functions [/=>/, 'operators.twig'], // assignment [/=/, 'operators.twig'] ], /** * HTML */ doctype: [ [/[^>]+/, 'metatag.content.html'], [/>/, 'metatag.html', '@pop'] ], comment: [ [/-->/, 'comment.html', '@pop'], [/[^-]+/, 'comment.content.html'], [/./, 'comment.content.html'] ], otherTag: [ [/\/?>/, 'delimiter.html', '@pop'], [/"([^"]*)"/, 'attribute.value.html'], [/'([^']*)'/, 'attribute.value.html'], [/[\w\-]+/, 'attribute.name.html'], [/=/, 'delimiter.html'], [/[ \t\r\n]+/] // whitespace ], // -- BEGIN <script> tags handling // After <script script: [ [/type/, 'attribute.name.html', '@scriptAfterType'], [/"([^"]*)"/, 'attribute.value.html'], [/'([^']*)'/, 'attribute.value.html'], [/[\w\-]+/, 'attribute.name.html'], [/=/, 'delimiter.html'], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [ /(<\/)(script\s*)(>)/, ['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }] ] ], // After <script ... type scriptAfterType: [ [/=/, 'delimiter.html', '@scriptAfterTypeEquals'], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], // After <script ... type = scriptAfterTypeEquals: [ [ /"([^"]*)"/, { token: 'attribute.value.html', switchTo: '@scriptWithCustomType.$1' } ], [ /'([^']*)'/, { token: 'attribute.value.html', switchTo: '@scriptWithCustomType.$1' } ], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], // After <script ... type = $S2 scriptWithCustomType: [ [ />/, { token: 'delimiter.html', next: '@scriptEmbedded.$S2', nextEmbedded: '$S2' } ], [/"([^"]*)"/, 'attribute.value.html'], [/'([^']*)'/, 'attribute.value.html'], [/[\w\-]+/, 'attribute.name.html'], [/=/, 'delimiter.html'], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], scriptEmbedded: [ [/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }], [/[^<]+/, ''] ], // -- END <script> tags handling // -- BEGIN <style> tags handling // After <style style: [ [/type/, 'attribute.name.html', '@styleAfterType'], [/"([^"]*)"/, 'attribute.value.html'], [/'([^']*)'/, 'attribute.value.html'], [/[\w\-]+/, 'attribute.name.html'], [/=/, 'delimiter.html'], [ />/, { token: 'delimiter.html', next: '@styleEmbedded', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [ /(<\/)(style\s*)(>)/, ['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }] ] ], // After <style ... type styleAfterType: [ [/=/, 'delimiter.html', '@styleAfterTypeEquals'], [ />/, { token: 'delimiter.html', next: '@styleEmbedded', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], // After <style ... type = styleAfterTypeEquals: [ [ /"([^"]*)"/, { token: 'attribute.value.html', switchTo: '@styleWithCustomType.$1' } ], [ /'([^']*)'/, { token: 'attribute.value.html', switchTo: '@styleWithCustomType.$1' } ], [ />/, { token: 'delimiter.html', next: '@styleEmbedded', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], // After <style ... type = $S2 styleWithCustomType: [ [ />/, { token: 'delimiter.html', next: '@styleEmbedded.$S2', nextEmbedded: '$S2' } ], [/"([^"]*)"/, 'attribute.value.html'], [/'([^']*)'/, 'attribute.value.html'], [/[\w\-]+/, 'attribute.name.html'], [/=/, 'delimiter.html'], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], styleEmbedded: [ [/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }], [/[^<]+/, ''] ] } }; /***/ }) }]);