Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/jinja2/jinja2.js
1294 views
CodeMirror.defineMode("jinja2", function() {1var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif",2"extends", "filter", "endfilter", "firstof", "for",3"endfor", "if", "endif", "ifchanged", "endifchanged",4"ifequal", "endifequal", "ifnotequal",5"endifnotequal", "in", "include", "load", "not", "now", "or",6"parsed", "regroup", "reversed", "spaceless",7"endspaceless", "ssi", "templatetag", "openblock",8"closeblock", "openvariable", "closevariable",9"openbrace", "closebrace", "opencomment",10"closecomment", "widthratio", "url", "with", "endwith",11"get_current_language", "trans", "noop", "blocktrans",12"endblocktrans", "get_available_languages",13"get_current_language_bidi", "plural"];14keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b");1516function tokenBase (stream, state) {17var ch = stream.next();18if (ch == "{") {19if (ch = stream.eat(/\{|%|#/)) {20stream.eat("-");21state.tokenize = inTag(ch);22return "tag";23}24}25}26function inTag (close) {27if (close == "{") {28close = "}";29}30return function (stream, state) {31var ch = stream.next();32if ((ch == close || (ch == "-" && stream.eat(close)))33&& stream.eat("}")) {34state.tokenize = tokenBase;35return "tag";36}37if (stream.match(keywords)) {38return "keyword";39}40return close == "#" ? "comment" : "string";41};42}43return {44startState: function () {45return {tokenize: tokenBase};46},47token: function (stream, state) {48return state.tokenize(stream, state);49}50};51});525354