{"version":3,"sources":["../../node_modules/codemirror/mode/twig/twig.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","keywords","operator","sign","atom","number","RegExp","join","tokenBase","stream","state","ch","peek","incomment","skipTo","skipToEnd","eatWhile","intag","match","instring","next","eat","sol","startState","token","config","parserConfig","twigInner","getMode","base","multiplexingMode","open","close","mode","parseDelimiters","defineMIME"],"mappings":"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","file":"twig.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"twig:inner\", function() {\n var keywords = [\"and\", \"as\", \"autoescape\", \"endautoescape\", \"block\", \"do\", \"endblock\", \"else\", \"elseif\", \"extends\", \"for\", \"endfor\", \"embed\", \"endembed\", \"filter\", \"endfilter\", \"flush\", \"from\", \"if\", \"endif\", \"in\", \"is\", \"include\", \"import\", \"not\", \"or\", \"set\", \"spaceless\", \"endspaceless\", \"with\", \"endwith\", \"trans\", \"endtrans\", \"blocktrans\", \"endblocktrans\", \"macro\", \"endmacro\", \"use\", \"verbatim\", \"endverbatim\"],\n operator = /^[+\\-*&%=<>!?|~^]/,\n sign = /^[:\\[\\(\\{]/,\n atom = [\"true\", \"false\", \"null\", \"empty\", \"defined\", \"divisibleby\", \"divisible by\", \"even\", \"odd\", \"iterable\", \"sameas\", \"same as\"],\n number = /^(\\d[+\\-\\*\\/])?\\d+(\\.\\d+)?/;\n\n keywords = new RegExp(\"((\" + keywords.join(\")|(\") + \"))\\\\b\");\n atom = new RegExp(\"((\" + atom.join(\")|(\") + \"))\\\\b\");\n\n function tokenBase (stream, state) {\n var ch = stream.peek();\n\n //Comment\n if (state.incomment) {\n if (!stream.skipTo(\"#}\")) {\n stream.skipToEnd();\n } else {\n stream.eatWhile(/\\#|}/);\n state.incomment = false;\n }\n return \"comment\";\n //Tag\n } else if (state.intag) {\n //After operator\n if (state.operator) {\n state.operator = false;\n if (stream.match(atom)) {\n return \"atom\";\n }\n if (stream.match(number)) {\n return \"number\";\n }\n }\n //After sign\n if (state.sign) {\n state.sign = false;\n if (stream.match(atom)) {\n return \"atom\";\n }\n if (stream.match(number)) {\n return \"number\";\n }\n }\n\n if (state.instring) {\n if (ch == state.instring) {\n state.instring = false;\n }\n stream.next();\n return \"string\";\n } else if (ch == \"'\" || ch == '\"') {\n state.instring = ch;\n stream.next();\n return \"string\";\n } else if (stream.match(state.intag + \"}\") || stream.eat(\"-\") && stream.match(state.intag + \"}\")) {\n state.intag = false;\n return \"tag\";\n } else if (stream.match(operator)) {\n state.operator = true;\n return \"operator\";\n } else if (stream.match(sign)) {\n state.sign = true;\n } else {\n if (stream.eat(\" \") || stream.sol()) {\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n if (stream.match(atom)) {\n return \"atom\";\n }\n if (stream.match(number)) {\n return \"number\";\n }\n if (stream.sol()) {\n stream.next();\n }\n } else {\n stream.next();\n }\n\n }\n return \"variable\";\n } else if (stream.eat(\"{\")) {\n if (stream.eat(\"#\")) {\n state.incomment = true;\n if (!stream.skipTo(\"#}\")) {\n stream.skipToEnd();\n } else {\n stream.eatWhile(/\\#|}/);\n state.incomment = false;\n }\n return \"comment\";\n //Open tag\n } else if (ch = stream.eat(/\\{|%/)) {\n //Cache close tag\n state.intag = ch;\n if (ch == \"{\") {\n state.intag = \"}\";\n }\n stream.eat(\"-\");\n return \"tag\";\n }\n }\n stream.next();\n };\n\n return {\n startState: function () {\n return {};\n },\n token: function (stream, state) {\n return tokenBase(stream, state);\n }\n };\n });\n\n CodeMirror.defineMode(\"twig\", function(config, parserConfig) {\n var twigInner = CodeMirror.getMode(config, \"twig:inner\");\n if (!parserConfig || !parserConfig.base) return twigInner;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base), {\n open: /\\{[{#%]/, close: /[}#%]\\}/, mode: twigInner, parseDelimiters: true\n }\n );\n });\n CodeMirror.defineMIME(\"text/x-twig\", \"twig\");\n});\n"]}