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"]}