Fix: merge conflict
[myslice.git] / to-be-integrated / third-party / codemirror-3.15 / mode / jinja2 / jinja2.js
1 CodeMirror.defineMode("jinja2", function() {
2     var keywords = ["block", "endblock", "for", "endfor", "in", "true", "false",
3                     "loop", "none", "self", "super", "if", "as", "not", "and",
4                     "else", "import", "with", "without", "context"];
5     keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b");
6
7     function tokenBase (stream, state) {
8         var ch = stream.next();
9         if (ch == "{") {
10             if (ch = stream.eat(/\{|%|#/)) {
11                 stream.eat("-");
12                 state.tokenize = inTag(ch);
13                 return "tag";
14             }
15         }
16     }
17     function inTag (close) {
18         if (close == "{") {
19             close = "}";
20         }
21         return function (stream, state) {
22             var ch = stream.next();
23             if ((ch == close || (ch == "-" && stream.eat(close)))
24                 && stream.eat("}")) {
25                 state.tokenize = tokenBase;
26                 return "tag";
27             }
28             if (stream.match(keywords)) {
29                 return "keyword";
30             }
31             return close == "#" ? "comment" : "string";
32         };
33     }
34     return {
35         startState: function () {
36             return {tokenize: tokenBase};
37         },
38         token: function (stream, state) {
39             return state.tokenize(stream, state);
40         }
41     };
42 });