| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- define('vs/basic-languages/liquid/liquid',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.language = exports.conf = void 0;
- var EMPTY_ELEMENTS = [
- 'area',
- 'base',
- 'br',
- 'col',
- 'embed',
- 'hr',
- 'img',
- 'input',
- 'keygen',
- 'link',
- 'menuitem',
- 'meta',
- 'param',
- 'source',
- 'track',
- 'wbr'
- ];
- exports.conf = {
- wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,
- brackets: [
- ['<!--', '-->'],
- ['<', '>'],
- ['{{', '}}'],
- ['{%', '%}'],
- ['{', '}'],
- ['(', ')']
- ],
- autoClosingPairs: [
- { open: '{', close: '}' },
- { open: '%', close: '%' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: "'", close: "'" }
- ],
- surroundingPairs: [
- { open: '<', close: '>' },
- { open: '"', close: '"' },
- { open: "'", close: "'" }
- ],
- onEnterRules: [
- {
- beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
- afterText: /^<\/(\w[\w\d]*)\s*>$/i,
- action: {
- indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent
- }
- },
- {
- beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'),
- action: { indentAction: monaco_editor_core_1.languages.IndentAction.Indent }
- }
- ]
- };
- exports.language = {
- defaultToken: '',
- tokenPostfix: '',
- builtinTags: [
- 'if',
- 'else',
- 'elseif',
- 'endif',
- 'render',
- 'assign',
- 'capture',
- 'endcapture',
- 'case',
- 'endcase',
- 'comment',
- 'endcomment',
- 'cycle',
- 'decrement',
- 'for',
- 'endfor',
- 'include',
- 'increment',
- 'layout',
- 'raw',
- 'endraw',
- 'render',
- 'tablerow',
- 'endtablerow',
- 'unless',
- 'endunless'
- ],
- builtinFilters: [
- 'abs',
- 'append',
- 'at_least',
- 'at_most',
- 'capitalize',
- 'ceil',
- 'compact',
- 'date',
- 'default',
- 'divided_by',
- 'downcase',
- 'escape',
- 'escape_once',
- 'first',
- 'floor',
- 'join',
- 'json',
- 'last',
- 'lstrip',
- 'map',
- 'minus',
- 'modulo',
- 'newline_to_br',
- 'plus',
- 'prepend',
- 'remove',
- 'remove_first',
- 'replace',
- 'replace_first',
- 'reverse',
- 'round',
- 'rstrip',
- 'size',
- 'slice',
- 'sort',
- 'sort_natural',
- 'split',
- 'strip',
- 'strip_html',
- 'strip_newlines',
- 'times',
- 'truncate',
- 'truncatewords',
- 'uniq',
- 'upcase',
- 'url_decode',
- 'url_encode',
- 'where'
- ],
- constants: ['true', 'false'],
- operators: ['==', '!=', '>', '<', '>=', '<='],
- symbol: /[=><!]+/,
- identifier: /[a-zA-Z_][\w]*/,
- tokenizer: {
- root: [
- [/\{\%\s*comment\s*\%\}/, 'comment.start.liquid', '@comment'],
- [/\{\{/, { token: '@rematch', switchTo: '@liquidState.root' }],
- [/\{\%/, { token: '@rematch', switchTo: '@liquidState.root' }],
- [/(<)([\w\-]+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']],
- [/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
- [/(<\/)([\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]],
- [/</, 'delimiter.html'],
- [/\{/, 'delimiter.html'],
- [/[^<{]+/] // text
- ],
- comment: [
- [/\{\%\s*endcomment\s*\%\}/, 'comment.end.liquid', '@pop'],
- [/./, 'comment.content.liquid']
- ],
- otherTag: [
- [
- /\{\{/,
- {
- token: '@rematch',
- switchTo: '@liquidState.otherTag'
- }
- ],
- [
- /\{\%/,
- {
- token: '@rematch',
- switchTo: '@liquidState.otherTag'
- }
- ],
- [/\/?>/, 'delimiter.html', '@pop'],
- [/"([^"]*)"/, 'attribute.value'],
- [/'([^']*)'/, 'attribute.value'],
- [/[\w\-]+/, 'attribute.name'],
- [/=/, 'delimiter'],
- [/[ \t\r\n]+/] // whitespace
- ],
- liquidState: [
- [/\{\{/, 'delimiter.output.liquid'],
- [/\}\}/, { token: 'delimiter.output.liquid', switchTo: '@$S2.$S3' }],
- [/\{\%/, 'delimiter.tag.liquid'],
- [/raw\s*\%\}/, 'delimiter.tag.liquid', '@liquidRaw'],
- [/\%\}/, { token: 'delimiter.tag.liquid', switchTo: '@$S2.$S3' }],
- { include: 'liquidRoot' }
- ],
- liquidRaw: [
- [/^(?!\{\%\s*endraw\s*\%\}).+/],
- [/\{\%/, 'delimiter.tag.liquid'],
- [/@identifier/],
- [/\%\}/, { token: 'delimiter.tag.liquid', next: '@root' }],
- ],
- liquidRoot: [
- [/\d+(\.\d+)?/, 'number.liquid'],
- [/"[^"]*"/, 'string.liquid'],
- [/'[^']*'/, 'string.liquid'],
- [/\s+/],
- [
- /@symbol/,
- {
- cases: {
- '@operators': 'operator.liquid',
- '@default': ''
- }
- }
- ],
- [/\./],
- [
- /@identifier/,
- {
- cases: {
- '@constants': 'keyword.liquid',
- '@builtinFilters': 'predefined.liquid',
- '@builtinTags': 'predefined.liquid',
- '@default': 'variable.liquid'
- }
- }
- ],
- [/[^}|%]/, 'variable.liquid']
- ]
- }
- };
- });
|