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