annotate .cms/lib/codemirror/mode/tornado/tornado.js @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 (function(mod) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 if (typeof exports == "object" && typeof module == "object") // CommonJS
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 require("../../addon/mode/overlay"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 else if (typeof define == "function" && define.amd) // AMD
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 "../../addon/mode/overlay"], mod);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 else // Plain browser env
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 mod(CodeMirror);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 })(function(CodeMirror) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 "use strict";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 CodeMirror.defineMode("tornado:inner", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 var keywords = ["and","as","assert","autoescape","block","break","class","comment","context",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 "continue","datetime","def","del","elif","else","end","escape","except",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 "exec","extends","false","finally","for","from","global","if","import","in",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 "include","is","json_encode","lambda","length","linkify","load","module",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 "none","not","or","pass","print","put","raise","raw","return","self","set",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 function tokenBase (stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 stream.eatWhile(/[^\{]/);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 var ch = stream.next();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 if (ch == "{") {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 if (ch = stream.eat(/\{|%|#/)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 state.tokenize = inTag(ch);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 return "tag";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 function inTag (close) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 if (close == "{") {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 close = "}";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 return function (stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 var ch = stream.next();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 if ((ch == close) && stream.eat("}")) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 state.tokenize = tokenBase;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 return "tag";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 if (stream.match(keywords)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 return "keyword";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 return close == "#" ? "comment" : "string";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 return {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 startState: function () {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 return {tokenize: tokenBase};
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 token: function (stream, state) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 return state.tokenize(stream, state);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 CodeMirror.defineMode("tornado", function(config) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 var htmlBase = CodeMirror.getMode(config, "text/html");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 var tornadoInner = CodeMirror.getMode(config, "tornado:inner");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 return CodeMirror.overlayMode(htmlBase, tornadoInner);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 CodeMirror.defineMIME("text/x-tornado", "tornado");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 });