30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | | 扫描IP |
40 | 扫描进度 |
41 | 扫描时间 |
42 | 结束时间 |
43 |
44 |
45 |
46 |
47 | {% for i in rs %}
48 |
49 |
50 | | {{ i.ip }} |
51 | {{ i.rate }}% |
52 | {{ i.scantime | date:"Y-m-d H:i:s" }} |
53 | {{ i.endtime | date:"Y-m-d H:i:s" }} |
54 |
55 |
56 |
57 | {% endfor %}
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/static/js/codemirror/theme/night.css:
--------------------------------------------------------------------------------
1 | /* Loosely based on the Midnight Textmate theme */
2 |
3 | .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }
4 | .cm-s-night div.CodeMirror-selected { background: #447; }
5 | .cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); }
6 | .cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); }
7 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
8 | .cm-s-night .CodeMirror-guttermarker { color: white; }
9 | .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }
10 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }
11 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white; }
12 |
13 | .cm-s-night span.cm-comment { color: #8900d1; }
14 | .cm-s-night span.cm-atom { color: #845dc4; }
15 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; }
16 | .cm-s-night span.cm-keyword { color: #599eff; }
17 | .cm-s-night span.cm-string { color: #37f14a; }
18 | .cm-s-night span.cm-meta { color: #7678e2; }
19 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
20 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }
21 | .cm-s-night span.cm-bracket { color: #8da6ce; }
22 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
23 | .cm-s-night span.cm-link { color: #845dc4; }
24 | .cm-s-night span.cm-error { color: #9d1e15; }
25 |
26 | .cm-s-night .CodeMirror-activeline-background { background: #1C005A; }
27 | .cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; }
28 |
--------------------------------------------------------------------------------
/static/js/codemirror/addon/fold/indent-fold.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function(mod) {
5 | if (typeof exports == "object" && typeof module == "object") // CommonJS
6 | mod(require("../../lib/codemirror"));
7 | else if (typeof define == "function" && define.amd) // AMD
8 | define(["../../lib/codemirror"], mod);
9 | else // Plain browser env
10 | mod(CodeMirror);
11 | })(function(CodeMirror) {
12 | "use strict";
13 |
14 | CodeMirror.registerHelper("fold", "indent", function(cm, start) {
15 | var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line);
16 | if (!/\S/.test(firstLine)) return;
17 | var getIndent = function(line) {
18 | return CodeMirror.countColumn(line, null, tabSize);
19 | };
20 | var myIndent = getIndent(firstLine);
21 | var lastLineInFold = null;
22 | // Go through lines until we find a line that definitely doesn't belong in
23 | // the block we're folding, or to the end.
24 | for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
25 | var curLine = cm.getLine(i);
26 | var curIndent = getIndent(curLine);
27 | if (curIndent > myIndent) {
28 | // Lines with a greater indent are considered part of the block.
29 | lastLineInFold = i;
30 | } else if (!/\S/.test(curLine)) {
31 | // Empty lines might be breaks within the block we're trying to fold.
32 | } else {
33 | // A non-empty line at an indent equal to or less than ours marks the
34 | // start of another block.
35 | break;
36 | }
37 | }
38 | if (lastLineInFold) return {
39 | from: CodeMirror.Pos(start.line, firstLine.length),
40 | to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
41 | };
42 | });
43 |
44 | });
45 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/rust/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: Rust mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
25 |
26 |
27 | Rust mode
28 |
29 |
30 |
53 |
54 |
62 |
63 | MIME types defined: text/x-rustsrc.
64 |
65 |
--------------------------------------------------------------------------------
/static/js/codemirror/addon/fold/markdown-fold.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function(mod) {
5 | if (typeof exports == "object" && typeof module == "object") // CommonJS
6 | mod(require("../../lib/codemirror"));
7 | else if (typeof define == "function" && define.amd) // AMD
8 | define(["../../lib/codemirror"], mod);
9 | else // Plain browser env
10 | mod(CodeMirror);
11 | })(function(CodeMirror) {
12 | "use strict";
13 |
14 | CodeMirror.registerHelper("fold", "markdown", function(cm, start) {
15 | var maxDepth = 100;
16 |
17 | function isHeader(lineNo) {
18 | var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0));
19 | return tokentype && /\bheader\b/.test(tokentype);
20 | }
21 |
22 | function headerLevel(lineNo, line, nextLine) {
23 | var match = line && line.match(/^#+/);
24 | if (match && isHeader(lineNo)) return match[0].length;
25 | match = nextLine && nextLine.match(/^[=\-]+\s*$/);
26 | if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2;
27 | return maxDepth;
28 | }
29 |
30 | var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1);
31 | var level = headerLevel(start.line, firstLine, nextLine);
32 | if (level === maxDepth) return undefined;
33 |
34 | var lastLineNo = cm.lastLine();
35 | var end = start.line, nextNextLine = cm.getLine(end + 2);
36 | while (end < lastLineNo) {
37 | if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break;
38 | ++end;
39 | nextLine = nextNextLine;
40 | nextNextLine = cm.getLine(end + 2);
41 | }
42 |
43 | return {
44 | from: CodeMirror.Pos(start.line, firstLine.length),
45 | to: CodeMirror.Pos(end, cm.getLine(end).length)
46 | };
47 | });
48 |
49 | });
50 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/javascript/typescript.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: TypeScript mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | TypeScript mode
27 |
28 |
29 |
51 |
52 |
59 |
60 | This is a specialization of the JavaScript mode.
61 |
62 |
--------------------------------------------------------------------------------
/static/js/codemirror/addon/hint/anyword-hint.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function(mod) {
5 | if (typeof exports == "object" && typeof module == "object") // CommonJS
6 | mod(require("../../lib/codemirror"));
7 | else if (typeof define == "function" && define.amd) // AMD
8 | define(["../../lib/codemirror"], mod);
9 | else // Plain browser env
10 | mod(CodeMirror);
11 | })(function(CodeMirror) {
12 | "use strict";
13 |
14 | var WORD = /[\w$]+/, RANGE = 500;
15 |
16 | CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
17 | var word = options && options.word || WORD;
18 | var range = options && options.range || RANGE;
19 | var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
20 | var end = cur.ch, start = end;
21 | while (start && word.test(curLine.charAt(start - 1))) --start;
22 | var curWord = start != end && curLine.slice(start, end);
23 |
24 | var list = options && options.list || [], seen = {};
25 | var re = new RegExp(word.source, "g");
26 | for (var dir = -1; dir <= 1; dir += 2) {
27 | var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
28 | for (; line != endLine; line += dir) {
29 | var text = editor.getLine(line), m;
30 | while (m = re.exec(text)) {
31 | if (line == cur.line && m[0] === curWord) continue;
32 | if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {
33 | seen[m[0]] = true;
34 | list.push(m[0]);
35 | }
36 | }
37 | }
38 | }
39 | return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
40 | });
41 | });
42 |
--------------------------------------------------------------------------------
/static/js/codemirror/theme/rubyblue.css:
--------------------------------------------------------------------------------
1 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; }
2 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F; }
3 | .cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); }
4 | .cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); }
5 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; }
6 | .cm-s-rubyblue .CodeMirror-guttermarker { color: white; }
7 | .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; }
8 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; }
9 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; }
10 |
11 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; }
12 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; }
13 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; }
14 | .cm-s-rubyblue span.cm-keyword { color: #F0F; }
15 | .cm-s-rubyblue span.cm-string { color: #F08047; }
16 | .cm-s-rubyblue span.cm-meta { color: #F0F; }
17 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }
18 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }
19 | .cm-s-rubyblue span.cm-bracket { color: #F0F; }
20 | .cm-s-rubyblue span.cm-link { color: #F4C20B; }
21 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
22 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
23 | .cm-s-rubyblue span.cm-error { color: #AF2018; }
24 |
25 | .cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; }
26 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/sass/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: Sass mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
25 |
26 |
27 | Sass mode
28 |
58 |
64 |
65 | MIME types defined: text/x-sass.
66 |
67 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/perl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: Perl mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | Perl mode
27 |
28 |
29 |
67 |
68 |
73 |
74 | MIME types defined: text/x-perl.
75 |
76 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/elm/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: Elm mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | Elm mode
27 |
28 |
52 |
53 |
59 |
60 | MIME types defined: text/x-elm.
61 |
62 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/idl/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: IDL mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | IDL mode
27 |
28 |
52 |
62 |
63 | MIME types defined: text/x-idl.
64 |
65 |
--------------------------------------------------------------------------------
/static/js/codemirror/theme/tomorrow-night-bright.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Tomorrow Night - Bright
4 | Author: Chris Kempson
5 |
6 | Port done by Gerard Braad
7 |
8 | */
9 |
10 | .cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; }
11 | .cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; }
12 | .cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; }
13 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; }
14 | .cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; }
15 | .cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; }
16 | .cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; }
17 |
18 | .cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; }
19 | .cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; }
20 | .cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; }
21 |
22 | .cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; }
23 | .cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; }
24 | .cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; }
25 |
26 | .cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; }
27 | .cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; }
28 | .cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; }
29 | .cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; }
30 | .cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; }
31 | .cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; }
32 | .cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; }
33 |
34 | .cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; }
35 | .cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
36 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/dart/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | CodeMirror: Dart mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | Dart mode
27 |
63 |
64 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/static/lib/layui/lay/modules/flow.js:
--------------------------------------------------------------------------------
1 | /** layui-v2.2.6 MIT License By https://www.layui.com */
2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});
--------------------------------------------------------------------------------
/static/js/codemirror/mode/protobuf/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | CodeMirror: ProtoBuf mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | ProtoBuf mode
27 |
58 |
61 |
62 | MIME types defined: text/x-protobuf.
63 |
64 |
65 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/xml/test.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function() {
5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml";
6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); }
7 |
8 | MT("matching",
9 | "[tag&bracket <][tag top][tag&bracket >]",
10 | " text",
11 | " [tag&bracket <][tag inner][tag&bracket />]",
12 | "[tag&bracket ][tag top][tag&bracket >]");
13 |
14 | MT("nonmatching",
15 | "[tag&bracket <][tag top][tag&bracket >]",
16 | " [tag&bracket <][tag inner][tag&bracket />]",
17 | " [tag&bracket ][tag&error tip][tag&bracket&error >]");
18 |
19 | MT("doctype",
20 | "[meta ]",
21 | "[tag&bracket <][tag top][tag&bracket />]");
22 |
23 | MT("cdata",
24 | "[tag&bracket <][tag top][tag&bracket >]",
25 | " [atom ]",
27 | "[tag&bracket ][tag top][tag&bracket >]");
28 |
29 | // HTML tests
30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html");
31 |
32 | MT("selfclose",
33 | "[tag&bracket <][tag html][tag&bracket >]",
34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]",
35 | "[tag&bracket ][tag html][tag&bracket >]");
36 |
37 | MT("list",
38 | "[tag&bracket <][tag ol][tag&bracket >]",
39 | " [tag&bracket <][tag li][tag&bracket >]one",
40 | " [tag&bracket <][tag li][tag&bracket >]two",
41 | "[tag&bracket ][tag ol][tag&bracket >]");
42 |
43 | MT("valueless",
44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]");
45 |
46 | MT("pThenArticle",
47 | "[tag&bracket <][tag p][tag&bracket >]",
48 | " foo",
49 | "[tag&bracket <][tag article][tag&bracket >]bar");
50 |
51 | })();
52 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/jinja2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | CodeMirror: Jinja2 mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
24 |
25 |
26 | Jinja2 mode
27 |
49 |
54 |
55 |
--------------------------------------------------------------------------------
/static/js/codemirror/mode/shell/test.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function() {
5 | var mode = CodeMirror.getMode({}, "shell");
6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
7 |
8 | MT("var",
9 | "text [def $var] text");
10 | MT("varBraces",
11 | "text[def ${var}]text");
12 | MT("varVar",
13 | "text [def $a$b] text");
14 | MT("varBracesVarBraces",
15 | "text[def ${a}${b}]text");
16 |
17 | MT("singleQuotedVar",
18 | "[string 'text $var text']");
19 | MT("singleQuotedVarBraces",
20 | "[string 'text ${var} text']");
21 |
22 | MT("doubleQuotedVar",
23 | '[string "text ][def $var][string text"]');
24 | MT("doubleQuotedVarBraces",
25 | '[string "text][def ${var}][string text"]');
26 | MT("doubleQuotedVarPunct",
27 | '[string "text ][def $@][string text"]');
28 | MT("doubleQuotedVarVar",
29 | '[string "][def $a$b][string "]');
30 | MT("doubleQuotedVarBracesVarBraces",
31 | '[string "][def ${a}${b}][string "]');
32 |
33 | MT("notAString",
34 | "text\\'text");
35 | MT("escapes",
36 | "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)");
37 |
38 | MT("subshell",
39 | "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`].");
40 | MT("doubleQuotedSubshell",
41 | "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]");
42 |
43 | MT("hashbang",
44 | "[meta #!/bin/bash]");
45 | MT("comment",
46 | "text [comment # Blurb]");
47 |
48 | MT("numbers",
49 | "[number 0] [number 1] [number 2]");
50 | MT("keywords",
51 | "[keyword while] [atom true]; [keyword do]",
52 | " [builtin sleep] [number 3]",
53 | "[keyword done]");
54 | MT("options",
55 | "[builtin ls] [attribute -l] [attribute --human-readable]");
56 | MT("operator",
57 | "[def var][operator =]value");
58 | })();
59 |
--------------------------------------------------------------------------------
/static/js/codemirror/theme/the-matrix.css:
--------------------------------------------------------------------------------
1 | .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }
2 | .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; }
3 | .cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); }
4 | .cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); }
5 | .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; }
6 | .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; }
7 | .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; }
8 | .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }
9 | .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; }
10 |
11 | .cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; }
12 | .cm-s-the-matrix span.cm-atom { color: #3FF; }
13 | .cm-s-the-matrix span.cm-number { color: #FFB94F; }
14 | .cm-s-the-matrix span.cm-def { color: #99C; }
15 | .cm-s-the-matrix span.cm-variable { color: #F6C; }
16 | .cm-s-the-matrix span.cm-variable-2 { color: #C6F; }
17 | .cm-s-the-matrix span.cm-variable-3 { color: #96F; }
18 | .cm-s-the-matrix span.cm-property { color: #62FFA0; }
19 | .cm-s-the-matrix span.cm-operator { color: #999; }
20 | .cm-s-the-matrix span.cm-comment { color: #CCCCCC; }
21 | .cm-s-the-matrix span.cm-string { color: #39C; }
22 | .cm-s-the-matrix span.cm-meta { color: #C9F; }
23 | .cm-s-the-matrix span.cm-qualifier { color: #FFF700; }
24 | .cm-s-the-matrix span.cm-builtin { color: #30a; }
25 | .cm-s-the-matrix span.cm-bracket { color: #cc7; }
26 | .cm-s-the-matrix span.cm-tag { color: #FFBD40; }
27 | .cm-s-the-matrix span.cm-attribute { color: #FFF700; }
28 | .cm-s-the-matrix span.cm-error { color: #FF0000; }
29 |
30 | .cm-s-the-matrix .CodeMirror-activeline-background { background: #040; }
31 |
--------------------------------------------------------------------------------
/static/js/codemirror/addon/edit/continuelist.js:
--------------------------------------------------------------------------------
1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others
2 | // Distributed under an MIT license: http://codemirror.net/LICENSE
3 |
4 | (function(mod) {
5 | if (typeof exports == "object" && typeof module == "object") // CommonJS
6 | mod(require("../../lib/codemirror"));
7 | else if (typeof define == "function" && define.amd) // AMD
8 | define(["../../lib/codemirror"], mod);
9 | else // Plain browser env
10 | mod(CodeMirror);
11 | })(function(CodeMirror) {
12 | "use strict";
13 |
14 | var listRE = /^(\s*)(>[> ]*|- \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/,
15 | emptyListRE = /^(\s*)(>[> ]*|- \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/,
16 | unorderedListRE = /[*+-]\s/;
17 |
18 | CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {
19 | if (cm.getOption("disableInput")) return CodeMirror.Pass;
20 | var ranges = cm.listSelections(), replacements = [];
21 | for (var i = 0; i < ranges.length; i++) {
22 | var pos = ranges[i].head;
23 | var eolState = cm.getStateAfter(pos.line);
24 | var inList = eolState.list !== false;
25 | var inQuote = eolState.quote !== 0;
26 |
27 | var line = cm.getLine(pos.line), match = listRE.exec(line);
28 | if (!ranges[i].empty() || (!inList && !inQuote) || !match) {
29 | cm.execCommand("newlineAndIndent");
30 | return;
31 | }
32 | if (emptyListRE.test(line)) {
33 | cm.replaceRange("", {
34 | line: pos.line, ch: 0
35 | }, {
36 | line: pos.line, ch: pos.ch + 1
37 | });
38 | replacements[i] = "\n";
39 | } else {
40 | var indent = match[1], after = match[5];
41 | var bullet = unorderedListRE.test(match[2]) || match[2].indexOf(">") >= 0
42 | ? match[2].replace("x", " ")
43 | : (parseInt(match[3], 10) + 1) + match[4];
44 |
45 | replacements[i] = "\n" + indent + bullet + after;
46 | }
47 | }
48 |
49 | cm.replaceSelections(replacements);
50 | };
51 | });
52 |
--------------------------------------------------------------------------------