1{"version":3,"sources":["../../node_modules/codemirror/mode/jinja2/jinja2.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","tokenize","token","blockCommentStart","blockCommentEnd","defineMIME"],"mappings":"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","file":"jinja2.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\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"jinja2\", function() {\n var keywords = [\"and\", \"as\", \"block\", \"endblock\", \"by\", \"cycle\", \"debug\", \"else\", \"elif\",\n \"extends\", \"filter\", \"endfilter\", \"firstof\", \"for\",\n \"endfor\", \"if\", \"endif\", \"ifchanged\", \"endifchanged\",\n \"ifequal\", \"endifequal\", \"ifnotequal\",\n \"endifnotequal\", \"in\", \"include\", \"load\", \"not\", \"now\", \"or\",\n \"parsed\", \"regroup\", \"reversed\", \"spaceless\",\n \"endspaceless\", \"ssi\", \"templatetag\", \"openblock\",\n \"closeblock\", \"openvariable\", \"closevariable\",\n \"openbrace\", \"closebrace\", \"opencomment\",\n \"closecomment\", \"widthratio\", \"url\", \"with\", \"endwith\",\n \"get_current_language\", \"trans\", \"endtrans\", \"noop\", \"blocktrans\",\n \"endblocktrans\", \"get_available_languages\",\n \"get_current_language_bidi\", \"plural\"],\n operator = /^[+\\-*&%=<>!?|~^]/,\n sign = /^[:\\[\\(\\{]/,\n atom = [\"true\", \"false\"],\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 {tokenize: tokenBase};\n },\n token: function (stream, state) {\n return state.tokenize(stream, state);\n },\n blockCommentStart: \"{#\",\n blockCommentEnd: \"#}\"\n };\n });\n\n CodeMirror.defineMIME(\"text/jinja2\", \"jinja2\");\n});\n"]}