123456789101112131415161718192021222324252627282930313233343536373839404142 |
- CodeMirror.defineMode("jinja2", function() {
- var keywords = ["block", "endblock", "for", "endfor", "in", "true", "false",
- "loop", "none", "self", "super", "if", "as", "not", "and",
- "else", "import", "with", "without", "context"];
- keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b");
- function tokenBase (stream, state) {
- var ch = stream.next();
- if (ch == "{") {
- if (ch = stream.eat(/\{|%|#/)) {
- stream.eat("-");
- state.tokenize = inTag(ch);
- return "tag";
- }
- }
- }
- function inTag (close) {
- if (close == "{") {
- close = "}";
- }
- return function (stream, state) {
- var ch = stream.next();
- if ((ch == close || (ch == "-" && stream.eat(close)))
- && stream.eat("}")) {
- state.tokenize = tokenBase;
- return "tag";
- }
- if (stream.match(keywords)) {
- return "keyword";
- }
- return close == "#" ? "comment" : "string";
- };
- }
- return {
- startState: function () {
- return {tokenize: tokenBase};
- },
- token: function (stream, state) {
- return state.tokenize(stream, state);
- }
- };
- });
|