/*--------------------------------------------------------------------------------------------- * 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: /[=>)/, ['delimiter.html', 'tag.html', 'delimiter.html']], [/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]], [/(<\/)([\w\-]+)/, ['delimiter.html', { token: 'tag.html', next: '@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'] ] } }; });