the class "CodeMirror-activeline-background".
6 |
7 | (function() {
8 | "use strict";
9 | var WRAP_CLASS = "CodeMirror-activeline";
10 | var BACK_CLASS = "CodeMirror-activeline-background";
11 |
12 | CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
13 | var prev = old && old != CodeMirror.Init;
14 | if (val && !prev) {
15 | updateActiveLine(cm);
16 | cm.on("cursorActivity", updateActiveLine);
17 | } else if (!val && prev) {
18 | cm.off("cursorActivity", updateActiveLine);
19 | clearActiveLine(cm);
20 | delete cm.state.activeLine;
21 | }
22 | });
23 |
24 | function clearActiveLine(cm) {
25 | if ("activeLine" in cm.state) {
26 | cm.removeLineClass(cm.state.activeLine, "wrap", WRAP_CLASS);
27 | cm.removeLineClass(cm.state.activeLine, "background", BACK_CLASS);
28 | }
29 | }
30 |
31 | function updateActiveLine(cm) {
32 | var line = cm.getLineHandleVisualStart(cm.getCursor().line);
33 | if (cm.state.activeLine == line) return;
34 | clearActiveLine(cm);
35 | cm.addLineClass(line, "wrap", WRAP_CLASS);
36 | cm.addLineClass(line, "background", BACK_CLASS);
37 | cm.state.activeLine = line;
38 | }
39 | })();
40 |
--------------------------------------------------------------------------------
/bower_components/codemirror/addon/selection/mark-selection.js:
--------------------------------------------------------------------------------
1 | // Because sometimes you need to mark the selected *text*.
2 | //
3 | // Adds an option 'styleSelectedText' which, when enabled, gives
4 | // selected text the CSS class given as option value, or
5 | // "CodeMirror-selectedtext" when the value is not a string.
6 |
7 | (function() {
8 | "use strict";
9 |
10 | CodeMirror.defineOption("styleSelectedText", false, function(cm, val, old) {
11 | var prev = old && old != CodeMirror.Init;
12 | if (val && !prev) {
13 | cm.state.markedSelection = [];
14 | cm.state.markedSelectionStyle = typeof val == "string" ? val : "CodeMirror-selectedtext";
15 | reset(cm);
16 | cm.on("cursorActivity", onCursorActivity);
17 | cm.on("change", onChange);
18 | } else if (!val && prev) {
19 | cm.off("cursorActivity", onCursorActivity);
20 | cm.off("change", onChange);
21 | clear(cm);
22 | cm.state.markedSelection = cm.state.markedSelectionStyle = null;
23 | }
24 | });
25 |
26 | function onCursorActivity(cm) {
27 | cm.operation(function() { update(cm); });
28 | }
29 |
30 | function onChange(cm) {
31 | if (cm.state.markedSelection.length)
32 | cm.operation(function() { clear(cm); });
33 | }
34 |
35 | var CHUNK_SIZE = 8;
36 | var Pos = CodeMirror.Pos;
37 |
38 | function cmp(pos1, pos2) {
39 | return pos1.line - pos2.line || pos1.ch - pos2.ch;
40 | }
41 |
42 | function coverRange(cm, from, to, addAt) {
43 | if (cmp(from, to) == 0) return;
44 | var array = cm.state.markedSelection;
45 | var cls = cm.state.markedSelectionStyle;
46 | for (var line = from.line;;) {
47 | var start = line == from.line ? from : Pos(line, 0);
48 | var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;
49 | var end = atEnd ? to : Pos(endLine, 0);
50 | var mark = cm.markText(start, end, {className: cls});
51 | if (addAt == null) array.push(mark);
52 | else array.splice(addAt++, 0, mark);
53 | if (atEnd) break;
54 | line = endLine;
55 | }
56 | }
57 |
58 | function clear(cm) {
59 | var array = cm.state.markedSelection;
60 | for (var i = 0; i < array.length; ++i) array[i].clear();
61 | array.length = 0;
62 | }
63 |
64 | function reset(cm) {
65 | clear(cm);
66 | var from = cm.getCursor("start"), to = cm.getCursor("end");
67 | coverRange(cm, from, to);
68 | }
69 |
70 | function update(cm) {
71 | var from = cm.getCursor("start"), to = cm.getCursor("end");
72 | if (cmp(from, to) == 0) return clear(cm);
73 |
74 | var array = cm.state.markedSelection;
75 | if (!array.length) return coverRange(cm, from, to);
76 |
77 | var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();
78 | if (!coverStart || !coverEnd || to.line - from.line < CHUNK_SIZE ||
79 | cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)
80 | return reset(cm);
81 |
82 | while (cmp(from, coverStart.from) > 0) {
83 | array.shift().clear();
84 | coverStart = array[0].find();
85 | }
86 | if (cmp(from, coverStart.from) < 0) {
87 | if (coverStart.to.line - from.line < CHUNK_SIZE) {
88 | array.shift().clear();
89 | coverRange(cm, from, coverStart.to, 0);
90 | } else {
91 | coverRange(cm, from, coverStart.from, 0);
92 | }
93 | }
94 |
95 | while (cmp(to, coverEnd.to) < 0) {
96 | array.pop().clear();
97 | coverEnd = array[array.length - 1].find();
98 | }
99 | if (cmp(to, coverEnd.to) > 0) {
100 | if (to.line - coverEnd.from.line < CHUNK_SIZE) {
101 | array.pop().clear();
102 | coverRange(cm, coverEnd.from, to);
103 | } else {
104 | coverRange(cm, coverEnd.to, to);
105 | }
106 | }
107 | }
108 | })();
109 |
--------------------------------------------------------------------------------
/bower_components/codemirror/addon/tern/tern.css:
--------------------------------------------------------------------------------
1 | .CodeMirror-Tern-completion {
2 | padding-left: 22px;
3 | position: relative;
4 | }
5 | .CodeMirror-Tern-completion:before {
6 | position: absolute;
7 | left: 2px;
8 | bottom: 2px;
9 | border-radius: 50%;
10 | font-size: 12px;
11 | font-weight: bold;
12 | height: 15px;
13 | width: 15px;
14 | line-height: 16px;
15 | text-align: center;
16 | color: white;
17 | -moz-box-sizing: border-box;
18 | box-sizing: border-box;
19 | }
20 | .CodeMirror-Tern-completion-unknown:before {
21 | content: "?";
22 | background: #4bb;
23 | }
24 | .CodeMirror-Tern-completion-object:before {
25 | content: "O";
26 | background: #77c;
27 | }
28 | .CodeMirror-Tern-completion-fn:before {
29 | content: "F";
30 | background: #7c7;
31 | }
32 | .CodeMirror-Tern-completion-array:before {
33 | content: "A";
34 | background: #c66;
35 | }
36 | .CodeMirror-Tern-completion-number:before {
37 | content: "1";
38 | background: #999;
39 | }
40 | .CodeMirror-Tern-completion-string:before {
41 | content: "S";
42 | background: #999;
43 | }
44 | .CodeMirror-Tern-completion-bool:before {
45 | content: "B";
46 | background: #999;
47 | }
48 |
49 | .CodeMirror-Tern-completion-guess {
50 | color: #999;
51 | }
52 |
53 | .CodeMirror-Tern-tooltip {
54 | border: 1px solid silver;
55 | border-radius: 3px;
56 | color: #444;
57 | padding: 2px 5px;
58 | font-size: 90%;
59 | font-family: monospace;
60 | background-color: white;
61 | white-space: pre-wrap;
62 |
63 | max-width: 40em;
64 | position: absolute;
65 | z-index: 10;
66 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
67 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
68 | box-shadow: 2px 3px 5px rgba(0,0,0,.2);
69 |
70 | transition: opacity 1s;
71 | -moz-transition: opacity 1s;
72 | -webkit-transition: opacity 1s;
73 | -o-transition: opacity 1s;
74 | -ms-transition: opacity 1s;
75 | }
76 |
77 | .CodeMirror-Tern-hint-doc {
78 | max-width: 25em;
79 | }
80 |
81 | .CodeMirror-Tern-fname { color: black; }
82 | .CodeMirror-Tern-farg { color: #70a; }
83 | .CodeMirror-Tern-farg-current { text-decoration: underline; }
84 | .CodeMirror-Tern-type { color: #07c; }
85 | .CodeMirror-Tern-fhint-guess { opacity: .7; }
86 |
--------------------------------------------------------------------------------
/bower_components/codemirror/addon/tern/worker.js:
--------------------------------------------------------------------------------
1 | // declare global: tern, server
2 |
3 | var server;
4 |
5 | this.onmessage = function(e) {
6 | var data = e.data;
7 | switch (data.type) {
8 | case "init": return startServer(data.defs, data.plugins, data.scripts);
9 | case "add": return server.addFile(data.name, data.text);
10 | case "del": return server.delFile(data.name);
11 | case "req": return server.request(data.body, function(err, reqData) {
12 | postMessage({id: data.id, body: reqData, err: err && String(err)});
13 | });
14 | case "getFile":
15 | var c = pending[data.id];
16 | delete pending[data.id];
17 | return c(data.err, data.text);
18 | default: throw new Error("Unknown message type: " + data.type);
19 | }
20 | };
21 |
22 | var nextId = 0, pending = {};
23 | function getFile(file, c) {
24 | postMessage({type: "getFile", name: file, id: ++nextId});
25 | pending[nextId] = c;
26 | }
27 |
28 | function startServer(defs, plugins, scripts) {
29 | if (scripts) importScripts.apply(null, scripts);
30 |
31 | server = new tern.Server({
32 | getFile: getFile,
33 | async: true,
34 | defs: defs,
35 | plugins: plugins
36 | });
37 | }
38 |
39 | var console = {
40 | log: function(v) { postMessage({type: "debug", message: v}); }
41 | };
42 |
--------------------------------------------------------------------------------
/bower_components/codemirror/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CodeMirror",
3 | "main": ["lib/codemirror.js", "lib/codemirror.css"],
4 | "ignore": [
5 | "**/.*",
6 | "node_modules",
7 | "components",
8 | "bin",
9 | "demo",
10 | "doc",
11 | "test",
12 | "index.html",
13 | "package.json"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/bower_components/codemirror/keymap/extra.js:
--------------------------------------------------------------------------------
1 | // A number of additional default bindings that are too obscure to
2 | // include in the core codemirror.js file.
3 |
4 | (function() {
5 | "use strict";
6 |
7 | var Pos = CodeMirror.Pos;
8 |
9 | function moveLines(cm, start, end, dist) {
10 | if (!dist || start > end) return 0;
11 |
12 | var from = cm.clipPos(Pos(start, 0)), to = cm.clipPos(Pos(end));
13 | var text = cm.getRange(from, to);
14 |
15 | if (start <= cm.firstLine())
16 | cm.replaceRange("", from, Pos(to.line + 1, 0));
17 | else
18 | cm.replaceRange("", Pos(from.line - 1), to);
19 | var target = from.line + dist;
20 | if (target <= cm.firstLine()) {
21 | cm.replaceRange(text + "\n", Pos(target, 0));
22 | return cm.firstLine() - from.line;
23 | } else {
24 | var targetPos = cm.clipPos(Pos(target - 1));
25 | cm.replaceRange("\n" + text, targetPos);
26 | return targetPos.line + 1 - from.line;
27 | }
28 | }
29 |
30 | function moveSelectedLines(cm, dist) {
31 | var head = cm.getCursor("head"), anchor = cm.getCursor("anchor");
32 | cm.operation(function() {
33 | var moved = moveLines(cm, Math.min(head.line, anchor.line), Math.max(head.line, anchor.line), dist);
34 | cm.setSelection(Pos(anchor.line + moved, anchor.ch), Pos(head.line + moved, head.ch));
35 | });
36 | }
37 |
38 | CodeMirror.commands.moveLinesUp = function(cm) { moveSelectedLines(cm, -1); };
39 | CodeMirror.commands.moveLinesDown = function(cm) { moveSelectedLines(cm, 1); };
40 |
41 | CodeMirror.keyMap["default"]["Alt-Up"] = "moveLinesUp";
42 | CodeMirror.keyMap["default"]["Alt-Down"] = "moveLinesDown";
43 | })();
44 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/css/scss.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: SCSS mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |

13 |
14 |
19 |
23 |
24 |
25 |
26 | SCSS mode
27 |
145 |
152 |
153 | MIME types defined: text/scss
.
154 |
155 | Parsing/Highlighting Tests: normal, verbose.
156 |
157 |
158 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/css/scss_test.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var mode = CodeMirror.getMode({tabSize: 1}, "text/x-scss");
3 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }
4 | function IT(name) { test.indentation(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }
5 |
6 | MT('url_with_quotation',
7 | "[tag foo] { [property background][operator :][string-2 url]([string test.jpg]) }");
8 |
9 | MT('url_with_double_quotes',
10 | "[tag foo] { [property background][operator :][string-2 url]([string \"test.jpg\"]) }");
11 |
12 | MT('url_with_single_quotes',
13 | "[tag foo] { [property background][operator :][string-2 url]([string \'test.jpg\']) }");
14 |
15 | MT('string',
16 | "[def @import] [string \"compass/css3\"]");
17 |
18 | MT('important_keyword',
19 | "[tag foo] { [property background][operator :][string-2 url]([string \'test.jpg\']) [keyword !important] }");
20 |
21 | MT('variable',
22 | "[variable-2 $blue][operator :][atom #333]");
23 |
24 | MT('variable_as_attribute',
25 | "[tag foo] { [property color][operator :][variable-2 $blue] }");
26 |
27 | MT('numbers',
28 | "[tag foo] { [property padding][operator :][number 10px] [number 10] [number 10em] [number 8in] }");
29 |
30 | MT('number_percentage',
31 | "[tag foo] { [property width][operator :][number 80%] }");
32 |
33 | MT('selector',
34 | "[builtin #hello][qualifier .world]{}");
35 |
36 | MT('singleline_comment',
37 | "[comment // this is a comment]");
38 |
39 | MT('multiline_comment',
40 | "[comment /*foobar*/]");
41 |
42 | MT('attribute_with_hyphen',
43 | "[tag foo] { [property font-size][operator :][number 10px] }");
44 |
45 | MT('string_after_attribute',
46 | "[tag foo] { [property content][operator :][string \"::\"] }");
47 |
48 | MT('directives',
49 | "[def @include] [qualifier .mixin]");
50 |
51 | MT('basic_structure',
52 | "[tag p] { [property background][operator :][keyword red]; }");
53 |
54 | MT('nested_structure',
55 | "[tag p] { [tag a] { [property color][operator :][keyword red]; } }");
56 |
57 | MT('mixin',
58 | "[def @mixin] [tag table-base] {}");
59 |
60 | MT('number_without_semicolon',
61 | "[tag p] {[property width][operator :][number 12]}",
62 | "[tag a] {[property color][operator :][keyword red];}");
63 |
64 | MT('atom_in_nested_block',
65 | "[tag p] { [tag a] { [property color][operator :][atom #000]; } }");
66 |
67 | MT('interpolation_in_property',
68 | "[tag foo] { [operator #{][variable-2 $hello][operator }:][number 2]; }");
69 |
70 | MT('interpolation_in_selector',
71 | "[tag foo][operator #{][variable-2 $hello][operator }] { [property color][operator :][atom #000]; }");
72 |
73 | MT('interpolation_error',
74 | "[tag foo][operator #{][error foo][operator }] { [property color][operator :][atom #000]; }");
75 |
76 | MT("divide_operator",
77 | "[tag foo] { [property width][operator :][number 4] [operator /] [number 2] }");
78 |
79 | MT('nested_structure_with_id_selector',
80 | "[tag p] { [builtin #hello] { [property color][operator :][keyword red]; } }");
81 |
82 | IT('mixin',
83 | "@mixin container[1 (][2 $a: 10][1 , ][2 $b: 10][1 , ][2 $c: 10]) [1 {]}");
84 | })();
85 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/diff/diff.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("diff", function() {
2 |
3 | var TOKEN_NAMES = {
4 | '+': 'positive',
5 | '-': 'negative',
6 | '@': 'meta'
7 | };
8 |
9 | return {
10 | token: function(stream) {
11 | var tw_pos = stream.string.search(/[\t ]+?$/);
12 |
13 | if (!stream.sol() || tw_pos === 0) {
14 | stream.skipToEnd();
15 | return ("error " + (
16 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, '');
17 | }
18 |
19 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd();
20 |
21 | if (tw_pos === -1) {
22 | stream.skipToEnd();
23 | } else {
24 | stream.pos = tw_pos;
25 | }
26 |
27 | return token_name;
28 | }
29 | };
30 | });
31 |
32 | CodeMirror.defineMIME("text/x-diff", "diff");
33 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/eiffel/eiffel.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("eiffel", function() {
2 | function wordObj(words) {
3 | var o = {};
4 | for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true;
5 | return o;
6 | }
7 | var keywords = wordObj([
8 | 'note',
9 | 'across',
10 | 'when',
11 | 'variant',
12 | 'until',
13 | 'unique',
14 | 'undefine',
15 | 'then',
16 | 'strip',
17 | 'select',
18 | 'retry',
19 | 'rescue',
20 | 'require',
21 | 'rename',
22 | 'reference',
23 | 'redefine',
24 | 'prefix',
25 | 'once',
26 | 'old',
27 | 'obsolete',
28 | 'loop',
29 | 'local',
30 | 'like',
31 | 'is',
32 | 'inspect',
33 | 'infix',
34 | 'include',
35 | 'if',
36 | 'frozen',
37 | 'from',
38 | 'external',
39 | 'export',
40 | 'ensure',
41 | 'end',
42 | 'elseif',
43 | 'else',
44 | 'do',
45 | 'creation',
46 | 'create',
47 | 'check',
48 | 'alias',
49 | 'agent',
50 | 'separate',
51 | 'invariant',
52 | 'inherit',
53 | 'indexing',
54 | 'feature',
55 | 'expanded',
56 | 'deferred',
57 | 'class',
58 | 'Void',
59 | 'True',
60 | 'Result',
61 | 'Precursor',
62 | 'False',
63 | 'Current',
64 | 'create',
65 | 'attached',
66 | 'detachable',
67 | 'as',
68 | 'and',
69 | 'implies',
70 | 'not',
71 | 'or'
72 | ]);
73 | var operators = wordObj([":=", "and then","and", "or","<<",">>"]);
74 | var curPunc;
75 |
76 | function chain(newtok, stream, state) {
77 | state.tokenize.push(newtok);
78 | return newtok(stream, state);
79 | }
80 |
81 | function tokenBase(stream, state) {
82 | curPunc = null;
83 | if (stream.eatSpace()) return null;
84 | var ch = stream.next();
85 | if (ch == '"'||ch == "'") {
86 | return chain(readQuoted(ch, "string"), stream, state);
87 | } else if (ch == "-"&&stream.eat("-")) {
88 | stream.skipToEnd();
89 | return "comment";
90 | } else if (ch == ":"&&stream.eat("=")) {
91 | return "operator";
92 | } else if (/[0-9]/.test(ch)) {
93 | stream.eatWhile(/[xXbBCc0-9\.]/);
94 | stream.eat(/[\?\!]/);
95 | return "ident";
96 | } else if (/[a-zA-Z_0-9]/.test(ch)) {
97 | stream.eatWhile(/[a-zA-Z_0-9]/);
98 | stream.eat(/[\?\!]/);
99 | return "ident";
100 | } else if (/[=+\-\/*^%<>~]/.test(ch)) {
101 | stream.eatWhile(/[=+\-\/*^%<>~]/);
102 | return "operator";
103 | } else {
104 | return null;
105 | }
106 | }
107 |
108 | function readQuoted(quote, style, unescaped) {
109 | return function(stream, state) {
110 | var escaped = false, ch;
111 | while ((ch = stream.next()) != null) {
112 | if (ch == quote && (unescaped || !escaped)) {
113 | state.tokenize.pop();
114 | break;
115 | }
116 | escaped = !escaped && ch == "%";
117 | }
118 | return style;
119 | };
120 | }
121 |
122 | return {
123 | startState: function() {
124 | return {tokenize: [tokenBase]};
125 | },
126 |
127 | token: function(stream, state) {
128 | var style = state.tokenize[state.tokenize.length-1](stream, state);
129 | if (style == "ident") {
130 | var word = stream.current();
131 | style = keywords.propertyIsEnumerable(stream.current()) ? "keyword"
132 | : operators.propertyIsEnumerable(stream.current()) ? "operator"
133 | : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag"
134 | : /^0[bB][0-1]+$/g.test(word) ? "number"
135 | : /^0[cC][0-7]+$/g.test(word) ? "number"
136 | : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number"
137 | : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number"
138 | : /^[0-9]+$/g.test(word) ? "number"
139 | : "variable";
140 | }
141 | return style;
142 | },
143 | lineComment: "--"
144 | };
145 | });
146 |
147 | CodeMirror.defineMIME("text/x-eiffel", "eiffel");
148 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/gfm/gfm.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("gfm", function(config) {
2 | var codeDepth = 0;
3 | function blankLine(state) {
4 | state.code = false;
5 | return null;
6 | }
7 | var gfmOverlay = {
8 | startState: function() {
9 | return {
10 | code: false,
11 | codeBlock: false,
12 | ateSpace: false
13 | };
14 | },
15 | copyState: function(s) {
16 | return {
17 | code: s.code,
18 | codeBlock: s.codeBlock,
19 | ateSpace: s.ateSpace
20 | };
21 | },
22 | token: function(stream, state) {
23 | // Hack to prevent formatting override inside code blocks (block and inline)
24 | if (state.codeBlock) {
25 | if (stream.match(/^```/)) {
26 | state.codeBlock = false;
27 | return null;
28 | }
29 | stream.skipToEnd();
30 | return null;
31 | }
32 | if (stream.sol()) {
33 | state.code = false;
34 | }
35 | if (stream.sol() && stream.match(/^```/)) {
36 | stream.skipToEnd();
37 | state.codeBlock = true;
38 | return null;
39 | }
40 | // If this block is changed, it may need to be updated in Markdown mode
41 | if (stream.peek() === '`') {
42 | stream.next();
43 | var before = stream.pos;
44 | stream.eatWhile('`');
45 | var difference = 1 + stream.pos - before;
46 | if (!state.code) {
47 | codeDepth = difference;
48 | state.code = true;
49 | } else {
50 | if (difference === codeDepth) { // Must be exact
51 | state.code = false;
52 | }
53 | }
54 | return null;
55 | } else if (state.code) {
56 | stream.next();
57 | return null;
58 | }
59 | // Check if space. If so, links can be formatted later on
60 | if (stream.eatSpace()) {
61 | state.ateSpace = true;
62 | return null;
63 | }
64 | if (stream.sol() || state.ateSpace) {
65 | state.ateSpace = false;
66 | if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) {
67 | // User/Project@SHA
68 | // User@SHA
69 | // SHA
70 | return "link";
71 | } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) {
72 | // User/Project#Num
73 | // User#Num
74 | // #Num
75 | return "link";
76 | }
77 | }
78 | if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i) &&
79 | stream.string.slice(stream.start - 2, stream.start) != "](") {
80 | // URLs
81 | // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls
82 | // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine
83 | return "link";
84 | }
85 | stream.next();
86 | return null;
87 | },
88 | blankLine: blankLine
89 | };
90 | CodeMirror.defineMIME("gfmBase", {
91 | name: "markdown",
92 | underscoresBreakWords: false,
93 | taskLists: true,
94 | fencedCodeBlocks: true
95 | });
96 | return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay);
97 | }, "markdown");
98 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/haml/test.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var mode = CodeMirror.getMode({tabSize: 4}, "haml");
3 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
4 |
5 | // Requires at least one media query
6 | MT("elementName",
7 | "[tag %h1] Hey There");
8 |
9 | MT("oneElementPerLine",
10 | "[tag %h1] Hey There %h2");
11 |
12 | MT("idSelector",
13 | "[tag %h1][attribute #test] Hey There");
14 |
15 | MT("classSelector",
16 | "[tag %h1][attribute .hello] Hey There");
17 |
18 | MT("docType",
19 | "[tag !!! XML]");
20 |
21 | MT("comment",
22 | "[comment / Hello WORLD]");
23 |
24 | MT("notComment",
25 | "[tag %h1] This is not a / comment ");
26 |
27 | MT("attributes",
28 | "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}");
29 |
30 | MT("htmlCode",
31 | "[tag
]Title[tag
]");
32 |
33 | MT("rubyBlock",
34 | "[operator =][variable-2 @item]");
35 |
36 | MT("selectorRubyBlock",
37 | "[tag %a.selector=] [variable-2 @item]");
38 |
39 | MT("nestedRubyBlock",
40 | "[tag %a]",
41 | " [operator =][variable puts] [string \"test\"]");
42 |
43 | MT("multilinePlaintext",
44 | "[tag %p]",
45 | " Hello,",
46 | " World");
47 |
48 | MT("multilineRuby",
49 | "[tag %p]",
50 | " [comment -# this is a comment]",
51 | " [comment and this is a comment too]",
52 | " Date/Time",
53 | " [operator -] [variable now] [operator =] [tag DateTime][operator .][variable now]",
54 | " [tag %strong=] [variable now]",
55 | " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][variable parse]([string \"December 31, 2006\"])",
56 | " [operator =][string \"Happy\"]",
57 | " [operator =][string \"Belated\"]",
58 | " [operator =][string \"Birthday\"]");
59 |
60 | MT("multilineComment",
61 | "[comment /]",
62 | " [comment Multiline]",
63 | " [comment Comment]");
64 |
65 | MT("hamlComment",
66 | "[comment -# this is a comment]");
67 |
68 | MT("multilineHamlComment",
69 | "[comment -# this is a comment]",
70 | " [comment and this is a comment too]");
71 |
72 | MT("multilineHTMLComment",
73 | "[comment ]");
76 |
77 | MT("hamlAfterRubyTag",
78 | "[attribute .block]",
79 | " [tag %strong=] [variable now]",
80 | " [attribute .test]",
81 | " [operator =][variable now]",
82 | " [attribute .right]");
83 |
84 | MT("stretchedRuby",
85 | "[operator =] [variable puts] [string \"Hello\"],",
86 | " [string \"World\"]");
87 |
88 | MT("interpolationInHashAttribute",
89 | //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test");
90 | "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test");
91 |
92 | MT("interpolationInHTMLAttribute",
93 | "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test");
94 | })();
95 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/htmlembedded/htmlembedded.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
2 |
3 | //config settings
4 | var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i,
5 | scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i;
6 |
7 | //inner modes
8 | var scriptingMode, htmlMixedMode;
9 |
10 | //tokenizer when in html mode
11 | function htmlDispatch(stream, state) {
12 | if (stream.match(scriptStartRegex, false)) {
13 | state.token=scriptingDispatch;
14 | return scriptingMode.token(stream, state.scriptState);
15 | }
16 | else
17 | return htmlMixedMode.token(stream, state.htmlState);
18 | }
19 |
20 | //tokenizer when in scripting mode
21 | function scriptingDispatch(stream, state) {
22 | if (stream.match(scriptEndRegex, false)) {
23 | state.token=htmlDispatch;
24 | return htmlMixedMode.token(stream, state.htmlState);
25 | }
26 | else
27 | return scriptingMode.token(stream, state.scriptState);
28 | }
29 |
30 |
31 | return {
32 | startState: function() {
33 | scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec);
34 | htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed");
35 | return {
36 | token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch,
37 | htmlState : CodeMirror.startState(htmlMixedMode),
38 | scriptState : CodeMirror.startState(scriptingMode)
39 | };
40 | },
41 |
42 | token: function(stream, state) {
43 | return state.token(stream, state);
44 | },
45 |
46 | indent: function(state, textAfter) {
47 | if (state.token == htmlDispatch)
48 | return htmlMixedMode.indent(state.htmlState, textAfter);
49 | else if (scriptingMode.indent)
50 | return scriptingMode.indent(state.scriptState, textAfter);
51 | },
52 |
53 | copyState: function(state) {
54 | return {
55 | token : state.token,
56 | htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState),
57 | scriptState : CodeMirror.copyState(scriptingMode, state.scriptState)
58 | };
59 | },
60 |
61 | electricChars: "/{}:",
62 |
63 | innerMode: function(state) {
64 | if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode};
65 | else return {state: state.htmlState, mode: htmlMixedMode};
66 | }
67 | };
68 | }, "htmlmixed");
69 |
70 | CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"});
71 | CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
72 | CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"});
73 | CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"});
74 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/http/http.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("http", function() {
2 | function failFirstLine(stream, state) {
3 | stream.skipToEnd();
4 | state.cur = header;
5 | return "error";
6 | }
7 |
8 | function start(stream, state) {
9 | if (stream.match(/^HTTP\/\d\.\d/)) {
10 | state.cur = responseStatusCode;
11 | return "keyword";
12 | } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) {
13 | state.cur = requestPath;
14 | return "keyword";
15 | } else {
16 | return failFirstLine(stream, state);
17 | }
18 | }
19 |
20 | function responseStatusCode(stream, state) {
21 | var code = stream.match(/^\d+/);
22 | if (!code) return failFirstLine(stream, state);
23 |
24 | state.cur = responseStatusText;
25 | var status = Number(code[0]);
26 | if (status >= 100 && status < 200) {
27 | return "positive informational";
28 | } else if (status >= 200 && status < 300) {
29 | return "positive success";
30 | } else if (status >= 300 && status < 400) {
31 | return "positive redirect";
32 | } else if (status >= 400 && status < 500) {
33 | return "negative client-error";
34 | } else if (status >= 500 && status < 600) {
35 | return "negative server-error";
36 | } else {
37 | return "error";
38 | }
39 | }
40 |
41 | function responseStatusText(stream, state) {
42 | stream.skipToEnd();
43 | state.cur = header;
44 | return null;
45 | }
46 |
47 | function requestPath(stream, state) {
48 | stream.eatWhile(/\S/);
49 | state.cur = requestProtocol;
50 | return "string-2";
51 | }
52 |
53 | function requestProtocol(stream, state) {
54 | if (stream.match(/^HTTP\/\d\.\d$/)) {
55 | state.cur = header;
56 | return "keyword";
57 | } else {
58 | return failFirstLine(stream, state);
59 | }
60 | }
61 |
62 | function header(stream) {
63 | if (stream.sol() && !stream.eat(/[ \t]/)) {
64 | if (stream.match(/^.*?:/)) {
65 | return "atom";
66 | } else {
67 | stream.skipToEnd();
68 | return "error";
69 | }
70 | } else {
71 | stream.skipToEnd();
72 | return "string";
73 | }
74 | }
75 |
76 | function body(stream) {
77 | stream.skipToEnd();
78 | return null;
79 | }
80 |
81 | return {
82 | token: function(stream, state) {
83 | var cur = state.cur;
84 | if (cur != header && cur != body && stream.eatSpace()) return null;
85 | return cur(stream, state);
86 | },
87 |
88 | blankLine: function(state) {
89 | state.cur = body;
90 | },
91 |
92 | startState: function() {
93 | return {cur: start};
94 | }
95 | };
96 | });
97 |
98 | CodeMirror.defineMIME("message/http", "http");
99 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/jade/jade.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("jade", function () {
2 | var symbol_regex1 = /^(?:~|!|%|\^|\*|\+|=|\\|:|;|,|\/|\?|&|<|>|\|)/;
3 | var open_paren_regex = /^(\(|\[)/;
4 | var close_paren_regex = /^(\)|\])/;
5 | var keyword_regex1 = /^(if|else|return|var|function|include|doctype|each)/;
6 | var keyword_regex2 = /^(#|{|}|\.)/;
7 | var keyword_regex3 = /^(in)/;
8 | var html_regex1 = /^(html|head|title|meta|link|script|body|br|div|input|span|a|img)/;
9 | var html_regex2 = /^(h1|h2|h3|h4|h5|p|strong|em)/;
10 | return {
11 | startState: function () {
12 | return {
13 | inString: false,
14 | stringType: "",
15 | beforeTag: true,
16 | justMatchedKeyword: false,
17 | afterParen: false
18 | };
19 | },
20 | token: function (stream, state) {
21 | //check for state changes
22 | if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) {
23 | state.stringType = stream.peek();
24 | stream.next(); // Skip quote
25 | state.inString = true; // Update state
26 | }
27 |
28 | //return state
29 | if (state.inString) {
30 | if (stream.skipTo(state.stringType)) { // Quote found on this line
31 | stream.next(); // Skip quote
32 | state.inString = false; // Clear flag
33 | } else {
34 | stream.skipToEnd(); // Rest of line is string
35 | }
36 | state.justMatchedKeyword = false;
37 | return "string"; // Token style
38 | } else if (stream.sol() && stream.eatSpace()) {
39 | if (stream.match(keyword_regex1)) {
40 | state.justMatchedKeyword = true;
41 | stream.eatSpace();
42 | return "keyword";
43 | }
44 | if (stream.match(html_regex1) || stream.match(html_regex2)) {
45 | state.justMatchedKeyword = true;
46 | return "variable";
47 | }
48 | } else if (stream.sol() && stream.match(keyword_regex1)) {
49 | state.justMatchedKeyword = true;
50 | stream.eatSpace();
51 | return "keyword";
52 | } else if (stream.sol() && (stream.match(html_regex1) || stream.match(html_regex2))) {
53 | state.justMatchedKeyword = true;
54 | return "variable";
55 | } else if (stream.eatSpace()) {
56 | state.justMatchedKeyword = false;
57 | if (stream.match(keyword_regex3) && stream.eatSpace()) {
58 | state.justMatchedKeyword = true;
59 | return "keyword";
60 | }
61 | } else if (stream.match(symbol_regex1)) {
62 | state.justMatchedKeyword = false;
63 | return "atom";
64 | } else if (stream.match(open_paren_regex)) {
65 | state.afterParen = true;
66 | state.justMatchedKeyword = true;
67 | return "def";
68 | } else if (stream.match(close_paren_regex)) {
69 | state.afterParen = false;
70 | state.justMatchedKeyword = true;
71 | return "def";
72 | } else if (stream.match(keyword_regex2)) {
73 | state.justMatchedKeyword = true;
74 | return "keyword";
75 | } else if (stream.eatSpace()) {
76 | state.justMatchedKeyword = false;
77 | } else {
78 | stream.next();
79 | if (state.justMatchedKeyword) {
80 | return "property";
81 | } else if (state.afterParen) {
82 | return "property";
83 | }
84 | }
85 | return null;
86 | }
87 | };
88 | });
89 |
90 | CodeMirror.defineMIME('text/x-jade', 'jade');
91 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/javascript/test.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
3 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
4 |
5 | MT("locals",
6 | "[keyword function] [variable foo]([def a], [def b]) { [keyword var] [def c] = [number 10]; [keyword return] [variable-2 a] + [variable-2 c] + [variable d]; }");
7 |
8 | MT("comma-and-binop",
9 | "[keyword function](){ [keyword var] [def x] = [number 1] + [number 2], [def y]; }");
10 | })();
11 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/javascript/typescript.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
CodeMirror: TypeScript mode
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |

13 |
14 |
19 |
23 |
24 |
25 |
26 | TypeScript mode
27 |
28 |
29 |
51 |
52 |
59 |
60 | This is a specialization of the JavaScript mode.
61 |
62 |
--------------------------------------------------------------------------------
/bower_components/codemirror/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 | });
43 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/ocaml/ocaml.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode('ocaml', function() {
2 |
3 | var words = {
4 | 'true': 'atom',
5 | 'false': 'atom',
6 | 'let': 'keyword',
7 | 'rec': 'keyword',
8 | 'in': 'keyword',
9 | 'of': 'keyword',
10 | 'and': 'keyword',
11 | 'succ': 'keyword',
12 | 'if': 'keyword',
13 | 'then': 'keyword',
14 | 'else': 'keyword',
15 | 'for': 'keyword',
16 | 'to': 'keyword',
17 | 'while': 'keyword',
18 | 'do': 'keyword',
19 | 'done': 'keyword',
20 | 'fun': 'keyword',
21 | 'function': 'keyword',
22 | 'val': 'keyword',
23 | 'type': 'keyword',
24 | 'mutable': 'keyword',
25 | 'match': 'keyword',
26 | 'with': 'keyword',
27 | 'try': 'keyword',
28 | 'raise': 'keyword',
29 | 'begin': 'keyword',
30 | 'end': 'keyword',
31 | 'open': 'builtin',
32 | 'trace': 'builtin',
33 | 'ignore': 'builtin',
34 | 'exit': 'builtin',
35 | 'print_string': 'builtin',
36 | 'print_endline': 'builtin'
37 | };
38 |
39 | function tokenBase(stream, state) {
40 | var ch = stream.next();
41 |
42 | if (ch === '"') {
43 | state.tokenize = tokenString;
44 | return state.tokenize(stream, state);
45 | }
46 | if (ch === '(') {
47 | if (stream.eat('*')) {
48 | state.commentLevel++;
49 | state.tokenize = tokenComment;
50 | return state.tokenize(stream, state);
51 | }
52 | }
53 | if (ch === '~') {
54 | stream.eatWhile(/\w/);
55 | return 'variable-2';
56 | }
57 | if (ch === '`') {
58 | stream.eatWhile(/\w/);
59 | return 'quote';
60 | }
61 | if (/\d/.test(ch)) {
62 | stream.eatWhile(/[\d]/);
63 | if (stream.eat('.')) {
64 | stream.eatWhile(/[\d]/);
65 | }
66 | return 'number';
67 | }
68 | if ( /[+\-*&%=<>!?|]/.test(ch)) {
69 | return 'operator';
70 | }
71 | stream.eatWhile(/\w/);
72 | var cur = stream.current();
73 | return words[cur] || 'variable';
74 | }
75 |
76 | function tokenString(stream, state) {
77 | var next, end = false, escaped = false;
78 | while ((next = stream.next()) != null) {
79 | if (next === '"' && !escaped) {
80 | end = true;
81 | break;
82 | }
83 | escaped = !escaped && next === '\\';
84 | }
85 | if (end && !escaped) {
86 | state.tokenize = tokenBase;
87 | }
88 | return 'string';
89 | };
90 |
91 | function tokenComment(stream, state) {
92 | var prev, next;
93 | while(state.commentLevel > 0 && (next = stream.next()) != null) {
94 | if (prev === '(' && next === '*') state.commentLevel++;
95 | if (prev === '*' && next === ')') state.commentLevel--;
96 | prev = next;
97 | }
98 | if (state.commentLevel <= 0) {
99 | state.tokenize = tokenBase;
100 | }
101 | return 'comment';
102 | }
103 |
104 | return {
105 | startState: function() {return {tokenize: tokenBase, commentLevel: 0};},
106 | token: function(stream, state) {
107 | if (stream.eatSpace()) return null;
108 | return state.tokenize(stream, state);
109 | },
110 |
111 | blockCommentStart: "(*",
112 | blockCommentEnd: "*)"
113 | };
114 | });
115 |
116 | CodeMirror.defineMIME('text/x-ocaml', 'ocaml');
117 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/pascal/pascal.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("pascal", function() {
2 | function words(str) {
3 | var obj = {}, words = str.split(" ");
4 | for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
5 | return obj;
6 | }
7 | var keywords = words("and array begin case const div do downto else end file for forward integer " +
8 | "boolean char function goto if in label mod nil not of or packed procedure " +
9 | "program record repeat set string then to type until var while with");
10 | var atoms = {"null": true};
11 |
12 | var isOperatorChar = /[+\-*&%=<>!?|\/]/;
13 |
14 | function tokenBase(stream, state) {
15 | var ch = stream.next();
16 | if (ch == "#" && state.startOfLine) {
17 | stream.skipToEnd();
18 | return "meta";
19 | }
20 | if (ch == '"' || ch == "'") {
21 | state.tokenize = tokenString(ch);
22 | return state.tokenize(stream, state);
23 | }
24 | if (ch == "(" && stream.eat("*")) {
25 | state.tokenize = tokenComment;
26 | return tokenComment(stream, state);
27 | }
28 | if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
29 | return null;
30 | }
31 | if (/\d/.test(ch)) {
32 | stream.eatWhile(/[\w\.]/);
33 | return "number";
34 | }
35 | if (ch == "/") {
36 | if (stream.eat("/")) {
37 | stream.skipToEnd();
38 | return "comment";
39 | }
40 | }
41 | if (isOperatorChar.test(ch)) {
42 | stream.eatWhile(isOperatorChar);
43 | return "operator";
44 | }
45 | stream.eatWhile(/[\w\$_]/);
46 | var cur = stream.current();
47 | if (keywords.propertyIsEnumerable(cur)) return "keyword";
48 | if (atoms.propertyIsEnumerable(cur)) return "atom";
49 | return "variable";
50 | }
51 |
52 | function tokenString(quote) {
53 | return function(stream, state) {
54 | var escaped = false, next, end = false;
55 | while ((next = stream.next()) != null) {
56 | if (next == quote && !escaped) {end = true; break;}
57 | escaped = !escaped && next == "\\";
58 | }
59 | if (end || !escaped) state.tokenize = null;
60 | return "string";
61 | };
62 | }
63 |
64 | function tokenComment(stream, state) {
65 | var maybeEnd = false, ch;
66 | while (ch = stream.next()) {
67 | if (ch == ")" && maybeEnd) {
68 | state.tokenize = null;
69 | break;
70 | }
71 | maybeEnd = (ch == "*");
72 | }
73 | return "comment";
74 | }
75 |
76 | // Interface
77 |
78 | return {
79 | startState: function() {
80 | return {tokenize: null};
81 | },
82 |
83 | token: function(stream, state) {
84 | if (stream.eatSpace()) return null;
85 | var style = (state.tokenize || tokenBase)(stream, state);
86 | if (style == "comment" || style == "meta") return style;
87 | return style;
88 | },
89 |
90 | electricChars: "{}"
91 | };
92 | });
93 |
94 | CodeMirror.defineMIME("text/x-pascal", "pascal");
95 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/properties/properties.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("properties", function() {
2 | return {
3 | token: function(stream, state) {
4 | var sol = stream.sol() || state.afterSection;
5 | var eol = stream.eol();
6 |
7 | state.afterSection = false;
8 |
9 | if (sol) {
10 | if (state.nextMultiline) {
11 | state.inMultiline = true;
12 | state.nextMultiline = false;
13 | } else {
14 | state.position = "def";
15 | }
16 | }
17 |
18 | if (eol && ! state.nextMultiline) {
19 | state.inMultiline = false;
20 | state.position = "def";
21 | }
22 |
23 | if (sol) {
24 | while(stream.eatSpace());
25 | }
26 |
27 | var ch = stream.next();
28 |
29 | if (sol && (ch === "#" || ch === "!" || ch === ";")) {
30 | state.position = "comment";
31 | stream.skipToEnd();
32 | return "comment";
33 | } else if (sol && ch === "[") {
34 | state.afterSection = true;
35 | stream.skipTo("]"); stream.eat("]");
36 | return "header";
37 | } else if (ch === "=" || ch === ":") {
38 | state.position = "quote";
39 | return null;
40 | } else if (ch === "\\" && state.position === "quote") {
41 | if (stream.next() !== "u") { // u = Unicode sequence \u1234
42 | // Multiline value
43 | state.nextMultiline = true;
44 | }
45 | }
46 |
47 | return state.position;
48 | },
49 |
50 | startState: function() {
51 | return {
52 | position : "def", // Current position, "def", "quote" or "comment"
53 | nextMultiline : false, // Is the next line multiline value
54 | inMultiline : false, // Is the current line a multiline value
55 | afterSection : false // Did we just open a section
56 | };
57 | }
58 |
59 | };
60 | });
61 |
62 | CodeMirror.defineMIME("text/x-properties", "properties");
63 | CodeMirror.defineMIME("text/x-ini", "properties");
64 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/rpm/changes/changes.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("changes", function() {
2 | var headerSeperator = /^-+$/;
3 | var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /;
4 | var simpleEmail = /^[\w+.-]+@[\w.-]+/;
5 |
6 | return {
7 | token: function(stream) {
8 | if (stream.sol()) {
9 | if (stream.match(headerSeperator)) { return 'tag'; }
10 | if (stream.match(headerLine)) { return 'tag'; }
11 | }
12 | if (stream.match(simpleEmail)) { return 'string'; }
13 | stream.next();
14 | return null;
15 | }
16 | };
17 | });
18 |
19 | CodeMirror.defineMIME("text/x-rpm-changes", "changes");
20 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/rpm/spec/spec.css:
--------------------------------------------------------------------------------
1 | .cm-s-default span.cm-preamble {color: #b26818; font-weight: bold;}
2 | .cm-s-default span.cm-macro {color: #b218b2;}
3 | .cm-s-default span.cm-section {color: green; font-weight: bold;}
4 | .cm-s-default span.cm-script {color: red;}
5 | .cm-s-default span.cm-issue {color: yellow;}
6 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/rpm/spec/spec.js:
--------------------------------------------------------------------------------
1 | // Quick and dirty spec file highlighting
2 |
3 | CodeMirror.defineMode("spec", function() {
4 | var arch = /^(i386|i586|i686|x86_64|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;
5 |
6 | var preamble = /^(Name|Version|Release|License|Summary|Url|Group|Source|BuildArch|BuildRequires|BuildRoot|AutoReqProv|Provides|Requires(\(\w+\))?|Obsoletes|Conflicts|Recommends|Source\d*|Patch\d*|ExclusiveArch|NoSource|Supplements):/;
7 | var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preun|postun|pre|post|triggerin|triggerun|pretrans|posttrans|verifyscript|check|triggerpostun|triggerprein|trigger)/;
8 | var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros
9 | var control_flow_simple = /^%(else|endif)/; // rpm control flow macros
10 | var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros
11 |
12 | return {
13 | startState: function () {
14 | return {
15 | controlFlow: false,
16 | macroParameters: false,
17 | section: false
18 | };
19 | },
20 | token: function (stream, state) {
21 | var ch = stream.peek();
22 | if (ch == "#") { stream.skipToEnd(); return "comment"; }
23 |
24 | if (stream.sol()) {
25 | if (stream.match(preamble)) { return "preamble"; }
26 | if (stream.match(section)) { return "section"; }
27 | }
28 |
29 | if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT'
30 | if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}'
31 |
32 | if (stream.match(control_flow_simple)) { return "keyword"; }
33 | if (stream.match(control_flow_complex)) {
34 | state.controlFlow = true;
35 | return "keyword";
36 | }
37 | if (state.controlFlow) {
38 | if (stream.match(operators)) { return "operator"; }
39 | if (stream.match(/^(\d+)/)) { return "number"; }
40 | if (stream.eol()) { state.controlFlow = false; }
41 | }
42 |
43 | if (stream.match(arch)) { return "number"; }
44 |
45 | // Macros like '%make_install' or '%attr(0775,root,root)'
46 | if (stream.match(/^%[\w]+/)) {
47 | if (stream.match(/^\(/)) { state.macroParameters = true; }
48 | return "macro";
49 | }
50 | if (state.macroParameters) {
51 | if (stream.match(/^\d+/)) { return "number";}
52 | if (stream.match(/^\)/)) {
53 | state.macroParameters = false;
54 | return "macro";
55 | }
56 | }
57 | if (stream.match(/^%\{\??[\w \-]+\}/)) { return "macro"; } // Macros like '%{defined fedora}'
58 |
59 | //TODO: Include bash script sub-parser (CodeMirror supports that)
60 | stream.next();
61 | return null;
62 | }
63 | };
64 | });
65 |
66 | CodeMirror.defineMIME("text/x-rpm-spec", "spec");
67 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/shell/shell.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode('shell', function() {
2 |
3 | var words = {};
4 | function define(style, string) {
5 | var split = string.split(' ');
6 | for(var i = 0; i < split.length; i++) {
7 | words[split[i]] = style;
8 | }
9 | };
10 |
11 | // Atoms
12 | define('atom', 'true false');
13 |
14 | // Keywords
15 | define('keyword', 'if then do else elif while until for in esac fi fin ' +
16 | 'fil done exit set unset export function');
17 |
18 | // Commands
19 | define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' +
20 | 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' +
21 | 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' +
22 | 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' +
23 | 'touch vi vim wall wc wget who write yes zsh');
24 |
25 | function tokenBase(stream, state) {
26 |
27 | var sol = stream.sol();
28 | var ch = stream.next();
29 |
30 | if (ch === '\'' || ch === '"' || ch === '`') {
31 | state.tokens.unshift(tokenString(ch));
32 | return tokenize(stream, state);
33 | }
34 | if (ch === '#') {
35 | if (sol && stream.eat('!')) {
36 | stream.skipToEnd();
37 | return 'meta'; // 'comment'?
38 | }
39 | stream.skipToEnd();
40 | return 'comment';
41 | }
42 | if (ch === '$') {
43 | state.tokens.unshift(tokenDollar);
44 | return tokenize(stream, state);
45 | }
46 | if (ch === '+' || ch === '=') {
47 | return 'operator';
48 | }
49 | if (ch === '-') {
50 | stream.eat('-');
51 | stream.eatWhile(/\w/);
52 | return 'attribute';
53 | }
54 | if (/\d/.test(ch)) {
55 | stream.eatWhile(/\d/);
56 | if(!/\w/.test(stream.peek())) {
57 | return 'number';
58 | }
59 | }
60 | stream.eatWhile(/[\w-]/);
61 | var cur = stream.current();
62 | if (stream.peek() === '=' && /\w+/.test(cur)) return 'def';
63 | return words.hasOwnProperty(cur) ? words[cur] : null;
64 | }
65 |
66 | function tokenString(quote) {
67 | return function(stream, state) {
68 | var next, end = false, escaped = false;
69 | while ((next = stream.next()) != null) {
70 | if (next === quote && !escaped) {
71 | end = true;
72 | break;
73 | }
74 | if (next === '$' && !escaped && quote !== '\'') {
75 | escaped = true;
76 | stream.backUp(1);
77 | state.tokens.unshift(tokenDollar);
78 | break;
79 | }
80 | escaped = !escaped && next === '\\';
81 | }
82 | if (end || !escaped) {
83 | state.tokens.shift();
84 | }
85 | return (quote === '`' || quote === ')' ? 'quote' : 'string');
86 | };
87 | };
88 |
89 | var tokenDollar = function(stream, state) {
90 | if (state.tokens.length > 1) stream.eat('$');
91 | var ch = stream.next(), hungry = /\w/;
92 | if (ch === '{') hungry = /[^}]/;
93 | if (ch === '(') {
94 | state.tokens[0] = tokenString(')');
95 | return tokenize(stream, state);
96 | }
97 | if (!/\d/.test(ch)) {
98 | stream.eatWhile(hungry);
99 | stream.eat('}');
100 | }
101 | state.tokens.shift();
102 | return 'def';
103 | };
104 |
105 | function tokenize(stream, state) {
106 | return (state.tokens[0] || tokenBase) (stream, state);
107 | };
108 |
109 | return {
110 | startState: function() {return {tokens:[]};},
111 | token: function(stream, state) {
112 | if (stream.eatSpace()) return null;
113 | return tokenize(stream, state);
114 | }
115 | };
116 | });
117 |
118 | CodeMirror.defineMIME('text/x-sh', 'shell');
119 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/stex/test.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var mode = CodeMirror.getMode({tabSize: 4}, "stex");
3 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
4 |
5 | MT("word",
6 | "foo");
7 |
8 | MT("twoWords",
9 | "foo bar");
10 |
11 | MT("beginEndDocument",
12 | "[tag \\begin][bracket {][atom document][bracket }]",
13 | "[tag \\end][bracket {][atom document][bracket }]");
14 |
15 | MT("beginEndEquation",
16 | "[tag \\begin][bracket {][atom equation][bracket }]",
17 | " E=mc^2",
18 | "[tag \\end][bracket {][atom equation][bracket }]");
19 |
20 | MT("beginModule",
21 | "[tag \\begin][bracket {][atom module][bracket }[[]]]");
22 |
23 | MT("beginModuleId",
24 | "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]");
25 |
26 | MT("importModule",
27 | "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]");
28 |
29 | MT("importModulePath",
30 | "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]");
31 |
32 | MT("psForPDF",
33 | "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]");
34 |
35 | MT("comment",
36 | "[comment % foo]");
37 |
38 | MT("tagComment",
39 | "[tag \\item][comment % bar]");
40 |
41 | MT("commentTag",
42 | " [comment % \\item]");
43 |
44 | MT("commentLineBreak",
45 | "[comment %]",
46 | "foo");
47 |
48 | MT("tagErrorCurly",
49 | "[tag \\begin][error }][bracket {]");
50 |
51 | MT("tagErrorSquare",
52 | "[tag \\item][error ]]][bracket {]");
53 |
54 | MT("commentCurly",
55 | "[comment % }]");
56 |
57 | MT("tagHash",
58 | "the [tag \\#] key");
59 |
60 | MT("tagNumber",
61 | "a [tag \\$][atom 5] stetson");
62 |
63 | MT("tagPercent",
64 | "[atom 100][tag \\%] beef");
65 |
66 | MT("tagAmpersand",
67 | "L [tag \\&] N");
68 |
69 | MT("tagUnderscore",
70 | "foo[tag \\_]bar");
71 |
72 | MT("tagBracketOpen",
73 | "[tag \\emph][bracket {][tag \\{][bracket }]");
74 |
75 | MT("tagBracketClose",
76 | "[tag \\emph][bracket {][tag \\}][bracket }]");
77 |
78 | MT("tagLetterNumber",
79 | "section [tag \\S][atom 1]");
80 |
81 | MT("textTagNumber",
82 | "para [tag \\P][atom 2]");
83 |
84 | MT("thinspace",
85 | "x[tag \\,]y");
86 |
87 | MT("thickspace",
88 | "x[tag \\;]y");
89 |
90 | MT("negativeThinspace",
91 | "x[tag \\!]y");
92 |
93 | MT("periodNotSentence",
94 | "J.\\ L.\\ is");
95 |
96 | MT("periodSentence",
97 | "X[tag \\@]. The");
98 |
99 | MT("italicCorrection",
100 | "[bracket {][tag \\em] If[tag \\/][bracket }] I");
101 |
102 | MT("tagBracket",
103 | "[tag \\newcommand][bracket {][tag \\pop][bracket }]");
104 |
105 | MT("inlineMathTagFollowedByNumber",
106 | "[keyword $][tag \\pi][number 2][keyword $]");
107 |
108 | MT("inlineMath",
109 | "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text");
110 |
111 | MT("displayMath",
112 | "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text");
113 |
114 | MT("mathWithComment",
115 | "[keyword $][variable-2 x] [comment % $]",
116 | "[variable-2 y][keyword $] other text");
117 |
118 | MT("lineBreakArgument",
119 | "[tag \\\\][bracket [[][atom 1cm][bracket ]]]");
120 | })();
121 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/tiddlywiki/tiddlywiki.css:
--------------------------------------------------------------------------------
1 | span.cm-underlined {
2 | text-decoration: underline;
3 | }
4 | span.cm-strikethrough {
5 | text-decoration: line-through;
6 | }
7 | span.cm-brace {
8 | color: #170;
9 | font-weight: bold;
10 | }
11 | span.cm-table {
12 | color: blue;
13 | font-weight: bold;
14 | }
15 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/tiki/tiki.css:
--------------------------------------------------------------------------------
1 | .cm-tw-syntaxerror {
2 | color: #FFF;
3 | background-color: #900;
4 | }
5 |
6 | .cm-tw-deleted {
7 | text-decoration: line-through;
8 | }
9 |
10 | .cm-tw-header5 {
11 | font-weight: bold;
12 | }
13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/
14 | padding-left: 10px;
15 | }
16 |
17 | .cm-tw-box {
18 | border-top-width: 0px ! important;
19 | border-style: solid;
20 | border-width: 1px;
21 | border-color: inherit;
22 | }
23 |
24 | .cm-tw-underline {
25 | text-decoration: underline;
26 | }
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/toml/toml.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("toml", function () {
2 | return {
3 | startState: function () {
4 | return {
5 | inString: false,
6 | stringType: "",
7 | lhs: true,
8 | inArray: 0
9 | };
10 | },
11 | token: function (stream, state) {
12 | //check for state changes
13 | if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) {
14 | state.stringType = stream.peek();
15 | stream.next(); // Skip quote
16 | state.inString = true; // Update state
17 | }
18 | if (stream.sol() && state.inArray === 0) {
19 | state.lhs = true;
20 | }
21 | //return state
22 | if (state.inString) {
23 | while (state.inString && !stream.eol()) {
24 | if (stream.peek() === state.stringType) {
25 | stream.next(); // Skip quote
26 | state.inString = false; // Clear flag
27 | } else if (stream.peek() === '\\') {
28 | stream.next();
29 | stream.next();
30 | } else {
31 | stream.match(/^.[^\\\"\']*/);
32 | }
33 | }
34 | return state.lhs ? "property string" : "string"; // Token style
35 | } else if (state.inArray && stream.peek() === ']') {
36 | stream.next();
37 | state.inArray--;
38 | return 'bracket';
39 | } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) {
40 | stream.next();//skip closing ]
41 | return "atom";
42 | } else if (stream.peek() === "#") {
43 | stream.skipToEnd();
44 | return "comment";
45 | } else if (stream.eatSpace()) {
46 | return null;
47 | } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) {
48 | return "property";
49 | } else if (state.lhs && stream.peek() === "=") {
50 | stream.next();
51 | state.lhs = false;
52 | return null;
53 | } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) {
54 | return 'atom'; //date
55 | } else if (!state.lhs && (stream.match('true') || stream.match('false'))) {
56 | return 'atom';
57 | } else if (!state.lhs && stream.peek() === '[') {
58 | state.inArray++;
59 | stream.next();
60 | return 'bracket';
61 | } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) {
62 | return 'number';
63 | } else if (!stream.eatSpace()) {
64 | stream.next();
65 | }
66 | return null;
67 | }
68 | };
69 | });
70 |
71 | CodeMirror.defineMIME('text/x-toml', 'toml');
72 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/yaml/yaml.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode("yaml", function() {
2 |
3 | var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
4 | var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');
5 |
6 | return {
7 | token: function(stream, state) {
8 | var ch = stream.peek();
9 | var esc = state.escaped;
10 | state.escaped = false;
11 | /* comments */
12 | if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) {
13 | stream.skipToEnd(); return "comment";
14 | }
15 | if (state.literal && stream.indentation() > state.keyCol) {
16 | stream.skipToEnd(); return "string";
17 | } else if (state.literal) { state.literal = false; }
18 | if (stream.sol()) {
19 | state.keyCol = 0;
20 | state.pair = false;
21 | state.pairStart = false;
22 | /* document start */
23 | if(stream.match(/---/)) { return "def"; }
24 | /* document end */
25 | if (stream.match(/\.\.\./)) { return "def"; }
26 | /* array list item */
27 | if (stream.match(/\s*-\s+/)) { return 'meta'; }
28 | }
29 | /* inline pairs/lists */
30 | if (stream.match(/^(\{|\}|\[|\])/)) {
31 | if (ch == '{')
32 | state.inlinePairs++;
33 | else if (ch == '}')
34 | state.inlinePairs--;
35 | else if (ch == '[')
36 | state.inlineList++;
37 | else
38 | state.inlineList--;
39 | return 'meta';
40 | }
41 |
42 | /* list seperator */
43 | if (state.inlineList > 0 && !esc && ch == ',') {
44 | stream.next();
45 | return 'meta';
46 | }
47 | /* pairs seperator */
48 | if (state.inlinePairs > 0 && !esc && ch == ',') {
49 | state.keyCol = 0;
50 | state.pair = false;
51 | state.pairStart = false;
52 | stream.next();
53 | return 'meta';
54 | }
55 |
56 | /* start of value of a pair */
57 | if (state.pairStart) {
58 | /* block literals */
59 | if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
60 | /* references */
61 | if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
62 | /* numbers */
63 | if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
64 | if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
65 | /* keywords */
66 | if (stream.match(keywordRegex)) { return 'keyword'; }
67 | }
68 |
69 | /* pairs (associative arrays) -> key */
70 | if (!state.pair && stream.match(/^\s*\S+(?=\s*:($|\s))/i)) {
71 | state.pair = true;
72 | state.keyCol = stream.indentation();
73 | return "atom";
74 | }
75 | if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
76 |
77 | /* nothing found, continue */
78 | state.pairStart = false;
79 | state.escaped = (ch == '\\');
80 | stream.next();
81 | return null;
82 | },
83 | startState: function() {
84 | return {
85 | pair: false,
86 | pairStart: false,
87 | keyCol: 0,
88 | inlinePairs: 0,
89 | inlineList: 0,
90 | literal: false,
91 | escaped: false
92 | };
93 | }
94 | };
95 | });
96 |
97 | CodeMirror.defineMIME("text/x-yaml", "yaml");
98 |
--------------------------------------------------------------------------------
/bower_components/codemirror/mode/z80/z80.js:
--------------------------------------------------------------------------------
1 | CodeMirror.defineMode('z80', function() {
2 | var keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i;
3 | var keywords2 = /^(call|j[pr]|ret[in]?)\b/i;
4 | var keywords3 = /^b_?(call|jump)\b/i;
5 | var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i;
6 | var variables2 = /^(n?[zc]|p[oe]?|m)\b/i;
7 | var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i;
8 | var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+)\b/i;
9 |
10 | return {
11 | startState: function() {
12 | return {context: 0};
13 | },
14 | token: function(stream, state) {
15 | if (!stream.column())
16 | state.context = 0;
17 |
18 | if (stream.eatSpace())
19 | return null;
20 |
21 | var w;
22 |
23 | if (stream.eatWhile(/\w/)) {
24 | w = stream.current();
25 |
26 | if (stream.indentation()) {
27 | if (state.context == 1 && variables1.test(w))
28 | return 'variable-2';
29 |
30 | if (state.context == 2 && variables2.test(w))
31 | return 'variable-3';
32 |
33 | if (keywords1.test(w)) {
34 | state.context = 1;
35 | return 'keyword';
36 | } else if (keywords2.test(w)) {
37 | state.context = 2;
38 | return 'keyword';
39 | } else if (keywords3.test(w)) {
40 | state.context = 3;
41 | return 'keyword';
42 | }
43 |
44 | if (errors.test(w))
45 | return 'error';
46 | } else if (numbers.test(w)) {
47 | return 'number';
48 | } else {
49 | return null;
50 | }
51 | } else if (stream.eat(';')) {
52 | stream.skipToEnd();
53 | return 'comment';
54 | } else if (stream.eat('"')) {
55 | while (w = stream.next()) {
56 | if (w == '"')
57 | break;
58 |
59 | if (w == '\\')
60 | stream.next();
61 | }
62 | return 'string';
63 | } else if (stream.eat('\'')) {
64 | if (stream.match(/\\?.'/))
65 | return 'number';
66 | } else if (stream.eat('.') || stream.sol() && stream.eat('#')) {
67 | state.context = 4;
68 |
69 | if (stream.eatWhile(/\w/))
70 | return 'def';
71 | } else if (stream.eat('$')) {
72 | if (stream.eatWhile(/[\da-f]/i))
73 | return 'number';
74 | } else if (stream.eat('%')) {
75 | if (stream.eatWhile(/[01]/))
76 | return 'number';
77 | } else {
78 | stream.next();
79 | }
80 | return null;
81 | }
82 | };
83 | });
84 |
85 | CodeMirror.defineMIME("text/x-z80", "z80");
86 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/3024-day.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: 3024 day
4 | Author: Jan T. Sott (http://github.com/idleberg)
5 |
6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
8 |
9 | */
10 |
11 | .cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;}
12 | .cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;}
13 | .cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;}
14 | .cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;}
15 | .cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;}
16 |
17 | .cm-s-3024-day span.cm-comment {color: #cdab53;}
18 | .cm-s-3024-day span.cm-atom {color: #a16a94;}
19 | .cm-s-3024-day span.cm-number {color: #a16a94;}
20 |
21 | .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;}
22 | .cm-s-3024-day span.cm-keyword {color: #db2d20;}
23 | .cm-s-3024-day span.cm-string {color: #fded02;}
24 |
25 | .cm-s-3024-day span.cm-variable {color: #01a252;}
26 | .cm-s-3024-day span.cm-variable-2 {color: #01a0e4;}
27 | .cm-s-3024-day span.cm-def {color: #e8bbd0;}
28 | .cm-s-3024-day span.cm-bracket {color: #3a3432;}
29 | .cm-s-3024-day span.cm-tag {color: #db2d20;}
30 | .cm-s-3024-day span.cm-link {color: #a16a94;}
31 | .cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;}
32 |
33 | .cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;}
34 | .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/3024-night.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: 3024 night
4 | Author: Jan T. Sott (http://github.com/idleberg)
5 |
6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
8 |
9 | */
10 |
11 | .cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;}
12 | .cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;}
13 | .cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;}
14 | .cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;}
15 | .cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;}
16 |
17 | .cm-s-3024-night span.cm-comment {color: #cdab53;}
18 | .cm-s-3024-night span.cm-atom {color: #a16a94;}
19 | .cm-s-3024-night span.cm-number {color: #a16a94;}
20 |
21 | .cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;}
22 | .cm-s-3024-night span.cm-keyword {color: #db2d20;}
23 | .cm-s-3024-night span.cm-string {color: #fded02;}
24 |
25 | .cm-s-3024-night span.cm-variable {color: #01a252;}
26 | .cm-s-3024-night span.cm-variable-2 {color: #01a0e4;}
27 | .cm-s-3024-night span.cm-def {color: #e8bbd0;}
28 | .cm-s-3024-night span.cm-bracket {color: #d6d5d4;}
29 | .cm-s-3024-night span.cm-tag {color: #db2d20;}
30 | .cm-s-3024-night span.cm-link {color: #a16a94;}
31 | .cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;}
32 |
33 | .cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;}
34 | .cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/ambiance-mobile.css:
--------------------------------------------------------------------------------
1 | .cm-s-ambiance.CodeMirror {
2 | -webkit-box-shadow: none;
3 | -moz-box-shadow: none;
4 | box-shadow: none;
5 | }
6 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/base16-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Base16 Default Dark
4 | Author: Chris Kempson (http://chriskempson.com)
5 |
6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)
7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
8 |
9 | */
10 |
11 | .cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;}
12 | .cm-s-base16-dark div.CodeMirror-selected {background: #202020 !important;}
13 | .cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;}
14 | .cm-s-base16-dark .CodeMirror-linenumber {color: #505050;}
15 | .cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;}
16 |
17 | .cm-s-base16-dark span.cm-comment {color: #8f5536;}
18 | .cm-s-base16-dark span.cm-atom {color: #aa759f;}
19 | .cm-s-base16-dark span.cm-number {color: #aa759f;}
20 |
21 | .cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;}
22 | .cm-s-base16-dark span.cm-keyword {color: #ac4142;}
23 | .cm-s-base16-dark span.cm-string {color: #f4bf75;}
24 |
25 | .cm-s-base16-dark span.cm-variable {color: #90a959;}
26 | .cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;}
27 | .cm-s-base16-dark span.cm-def {color: #d28445;}
28 | .cm-s-base16-dark span.cm-bracket {color: #e0e0e0;}
29 | .cm-s-base16-dark span.cm-tag {color: #ac4142;}
30 | .cm-s-base16-dark span.cm-link {color: #aa759f;}
31 | .cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;}
32 |
33 | .cm-s-base16-dark .CodeMirror-activeline-background {background: #2F2F2F !important;}
34 | .cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/base16-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Base16 Default Light
4 | Author: Chris Kempson (http://chriskempson.com)
5 |
6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)
7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
8 |
9 | */
10 |
11 | .cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;}
12 | .cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;}
13 | .cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;}
14 | .cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;}
15 | .cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;}
16 |
17 | .cm-s-base16-light span.cm-comment {color: #8f5536;}
18 | .cm-s-base16-light span.cm-atom {color: #aa759f;}
19 | .cm-s-base16-light span.cm-number {color: #aa759f;}
20 |
21 | .cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;}
22 | .cm-s-base16-light span.cm-keyword {color: #ac4142;}
23 | .cm-s-base16-light span.cm-string {color: #f4bf75;}
24 |
25 | .cm-s-base16-light span.cm-variable {color: #90a959;}
26 | .cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;}
27 | .cm-s-base16-light span.cm-def {color: #d28445;}
28 | .cm-s-base16-light span.cm-bracket {color: #202020;}
29 | .cm-s-base16-light span.cm-tag {color: #ac4142;}
30 | .cm-s-base16-light span.cm-link {color: #aa759f;}
31 | .cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;}
32 |
33 | .cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;}
34 | .cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/blackboard.css:
--------------------------------------------------------------------------------
1 | /* Port of TextMate's Blackboard theme */
2 |
3 | .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }
4 | .cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; }
5 | .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; }
6 | .cm-s-blackboard .CodeMirror-linenumber { color: #888; }
7 | .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }
8 |
9 | .cm-s-blackboard .cm-keyword { color: #FBDE2D; }
10 | .cm-s-blackboard .cm-atom { color: #D8FA3C; }
11 | .cm-s-blackboard .cm-number { color: #D8FA3C; }
12 | .cm-s-blackboard .cm-def { color: #8DA6CE; }
13 | .cm-s-blackboard .cm-variable { color: #FF6400; }
14 | .cm-s-blackboard .cm-operator { color: #FBDE2D;}
15 | .cm-s-blackboard .cm-comment { color: #AEAEAE; }
16 | .cm-s-blackboard .cm-string { color: #61CE3C; }
17 | .cm-s-blackboard .cm-string-2 { color: #61CE3C; }
18 | .cm-s-blackboard .cm-meta { color: #D8FA3C; }
19 | .cm-s-blackboard .cm-builtin { color: #8DA6CE; }
20 | .cm-s-blackboard .cm-tag { color: #8DA6CE; }
21 | .cm-s-blackboard .cm-attribute { color: #8DA6CE; }
22 | .cm-s-blackboard .cm-header { color: #FF6400; }
23 | .cm-s-blackboard .cm-hr { color: #AEAEAE; }
24 | .cm-s-blackboard .cm-link { color: #8DA6CE; }
25 | .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }
26 |
27 | .cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;}
28 | .cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/cobalt.css:
--------------------------------------------------------------------------------
1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; }
2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; }
3 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
4 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; }
5 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; }
6 |
7 | .cm-s-cobalt span.cm-comment { color: #08f; }
8 | .cm-s-cobalt span.cm-atom { color: #845dc4; }
9 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; }
10 | .cm-s-cobalt span.cm-keyword { color: #ffee80; }
11 | .cm-s-cobalt span.cm-string { color: #3ad900; }
12 | .cm-s-cobalt span.cm-meta { color: #ff9d00; }
13 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; }
14 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; }
15 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
16 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
17 | .cm-s-cobalt span.cm-link { color: #845dc4; }
18 | .cm-s-cobalt span.cm-error { color: #9d1e15; }
19 |
20 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;}
21 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}
22 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/eclipse.css:
--------------------------------------------------------------------------------
1 | .cm-s-eclipse span.cm-meta {color: #FF1717;}
2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; }
3 | .cm-s-eclipse span.cm-atom {color: #219;}
4 | .cm-s-eclipse span.cm-number {color: #164;}
5 | .cm-s-eclipse span.cm-def {color: #00f;}
6 | .cm-s-eclipse span.cm-variable {color: black;}
7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;}
8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;}
9 | .cm-s-eclipse span.cm-property {color: black;}
10 | .cm-s-eclipse span.cm-operator {color: black;}
11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;}
12 | .cm-s-eclipse span.cm-string {color: #2A00FF;}
13 | .cm-s-eclipse span.cm-string-2 {color: #f50;}
14 | .cm-s-eclipse span.cm-qualifier {color: #555;}
15 | .cm-s-eclipse span.cm-builtin {color: #30a;}
16 | .cm-s-eclipse span.cm-bracket {color: #cc7;}
17 | .cm-s-eclipse span.cm-tag {color: #170;}
18 | .cm-s-eclipse span.cm-attribute {color: #00c;}
19 | .cm-s-eclipse span.cm-link {color: #219;}
20 | .cm-s-eclipse span.cm-error {color: #f00;}
21 |
22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;}
23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
24 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/elegant.css:
--------------------------------------------------------------------------------
1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;}
2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;}
3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;}
4 | .cm-s-elegant span.cm-variable {color: black;}
5 | .cm-s-elegant span.cm-variable-2 {color: #b11;}
6 | .cm-s-elegant span.cm-qualifier {color: #555;}
7 | .cm-s-elegant span.cm-keyword {color: #730;}
8 | .cm-s-elegant span.cm-builtin {color: #30a;}
9 | .cm-s-elegant span.cm-link {color: #762;}
10 | .cm-s-elegant span.cm-error {background-color: #fdd;}
11 |
12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;}
13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
14 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/erlang-dark.css:
--------------------------------------------------------------------------------
1 | .cm-s-erlang-dark.CodeMirror { background: #002240; color: white; }
2 | .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; }
3 | .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
4 | .cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; }
5 | .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
6 |
7 | .cm-s-erlang-dark span.cm-atom { color: #f133f1; }
8 | .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; }
9 | .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; }
10 | .cm-s-erlang-dark span.cm-builtin { color: #eaa; }
11 | .cm-s-erlang-dark span.cm-comment { color: #77f; }
12 | .cm-s-erlang-dark span.cm-def { color: #e7a; }
13 | .cm-s-erlang-dark span.cm-keyword { color: #ffee80; }
14 | .cm-s-erlang-dark span.cm-meta { color: #50fefe; }
15 | .cm-s-erlang-dark span.cm-number { color: #ffd0d0; }
16 | .cm-s-erlang-dark span.cm-operator { color: #d55; }
17 | .cm-s-erlang-dark span.cm-property { color: #ccc; }
18 | .cm-s-erlang-dark span.cm-qualifier { color: #ccc; }
19 | .cm-s-erlang-dark span.cm-quote { color: #ccc; }
20 | .cm-s-erlang-dark span.cm-special { color: #ffbbbb; }
21 | .cm-s-erlang-dark span.cm-string { color: #3ad900; }
22 | .cm-s-erlang-dark span.cm-string-2 { color: #ccc; }
23 | .cm-s-erlang-dark span.cm-tag { color: #9effff; }
24 | .cm-s-erlang-dark span.cm-variable { color: #50fe50; }
25 | .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }
26 | .cm-s-erlang-dark span.cm-variable-3 { color: #ccc; }
27 | .cm-s-erlang-dark span.cm-error { color: #9d1e15; }
28 |
29 | .cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;}
30 | .cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
31 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/lesser-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | http://lesscss.org/ dark theme
3 | Ported to CodeMirror by Peter Kroon
4 | */
5 | .cm-s-lesser-dark {
6 | line-height: 1.3em;
7 | }
8 | .cm-s-lesser-dark {
9 | font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Monaco', Courier, monospace !important;
10 | }
11 |
12 | .cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }
13 | .cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/
14 | .cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
15 | .cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/
16 |
17 | .cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
18 |
19 | .cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; }
20 | .cm-s-lesser-dark .CodeMirror-linenumber { color: #777; }
21 |
22 | .cm-s-lesser-dark span.cm-keyword { color: #599eff; }
23 | .cm-s-lesser-dark span.cm-atom { color: #C2B470; }
24 | .cm-s-lesser-dark span.cm-number { color: #B35E4D; }
25 | .cm-s-lesser-dark span.cm-def {color: white;}
26 | .cm-s-lesser-dark span.cm-variable { color:#D9BF8C; }
27 | .cm-s-lesser-dark span.cm-variable-2 { color: #669199; }
28 | .cm-s-lesser-dark span.cm-variable-3 { color: white; }
29 | .cm-s-lesser-dark span.cm-property {color: #92A75C;}
30 | .cm-s-lesser-dark span.cm-operator {color: #92A75C;}
31 | .cm-s-lesser-dark span.cm-comment { color: #666; }
32 | .cm-s-lesser-dark span.cm-string { color: #BCD279; }
33 | .cm-s-lesser-dark span.cm-string-2 {color: #f50;}
34 | .cm-s-lesser-dark span.cm-meta { color: #738C73; }
35 | .cm-s-lesser-dark span.cm-qualifier {color: #555;}
36 | .cm-s-lesser-dark span.cm-builtin { color: #ff9e59; }
37 | .cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; }
38 | .cm-s-lesser-dark span.cm-tag { color: #669199; }
39 | .cm-s-lesser-dark span.cm-attribute {color: #00c;}
40 | .cm-s-lesser-dark span.cm-header {color: #a0a;}
41 | .cm-s-lesser-dark span.cm-quote {color: #090;}
42 | .cm-s-lesser-dark span.cm-hr {color: #999;}
43 | .cm-s-lesser-dark span.cm-link {color: #00c;}
44 | .cm-s-lesser-dark span.cm-error { color: #9d1e15; }
45 |
46 | .cm-s-lesser-dark .CodeMirror-activeline-background {background: #3C3A3A !important;}
47 | .cm-s-lesser-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
48 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/mbo.css:
--------------------------------------------------------------------------------
1 | /* Based on mbonaci's Brackets mbo theme */
2 |
3 | .cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffe9;}
4 | .cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;}
5 | .cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;}
6 | .cm-s-mbo .CodeMirror-linenumber {color: #dadada;}
7 | .cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;}
8 |
9 | .cm-s-mbo span.cm-comment {color: #95958a;}
10 | .cm-s-mbo span.cm-atom {color: #00a8c6;}
11 | .cm-s-mbo span.cm-number {color: #00a8c6;}
12 |
13 | .cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;}
14 | .cm-s-mbo span.cm-keyword {color: #ffb928;}
15 | .cm-s-mbo span.cm-string {color: #ffcf6c;}
16 |
17 | .cm-s-mbo span.cm-variable {color: #ffffec;}
18 | .cm-s-mbo span.cm-variable-2 {color: #00a8c6;}
19 | .cm-s-mbo span.cm-def {color: #ffffec;}
20 | .cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;}
21 | .cm-s-mbo span.cm-tag {color: #9ddfe9;}
22 | .cm-s-mbo span.cm-link {color: #f54b07;}
23 | .cm-s-mbo span.cm-error {background: #636363; color: #ffffec;}
24 |
25 | .cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;}
26 | .cm-s-mbo .CodeMirror-matchingbracket {
27 | text-decoration: underline;
28 | color: #f5e107 !important;
29 | }
30 |
31 | div.CodeMirror span.CodeMirror-searching {
32 | background-color: none;
33 | background: none;
34 | box-shadow: 0 0 0 1px #ffffec;
35 | }
36 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/midnight.css:
--------------------------------------------------------------------------------
1 | /* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */
2 |
3 | /**/
4 | .cm-s-midnight span.CodeMirror-matchhighlight { background: #494949 }
5 | .cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }
6 |
7 | /**/
8 | .cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;}
9 |
10 | .cm-s-midnight.CodeMirror {
11 | background: #0F192A;
12 | color: #D1EDFF;
13 | }
14 |
15 | .cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
16 |
17 | .cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;}
18 | .cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;}
19 | .cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;}
20 | .cm-s-midnight .CodeMirror-cursor {
21 | border-left: 1px solid #F8F8F0 !important;
22 | }
23 |
24 | .cm-s-midnight span.cm-comment {color: #428BDD;}
25 | .cm-s-midnight span.cm-atom {color: #AE81FF;}
26 | .cm-s-midnight span.cm-number {color: #D1EDFF;}
27 |
28 | .cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;}
29 | .cm-s-midnight span.cm-keyword {color: #E83737;}
30 | .cm-s-midnight span.cm-string {color: #1DC116;}
31 |
32 | .cm-s-midnight span.cm-variable {color: #FFAA3E;}
33 | .cm-s-midnight span.cm-variable-2 {color: #FFAA3E;}
34 | .cm-s-midnight span.cm-def {color: #4DD;}
35 | .cm-s-midnight span.cm-bracket {color: #D1EDFF;}
36 | .cm-s-midnight span.cm-tag {color: #449;}
37 | .cm-s-midnight span.cm-link {color: #AE81FF;}
38 | .cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;}
39 |
40 | .cm-s-midnight .CodeMirror-matchingbracket {
41 | text-decoration: underline;
42 | color: white !important;
43 | }
44 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/monokai.css:
--------------------------------------------------------------------------------
1 | /* Based on Sublime Text's Monokai theme */
2 |
3 | .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;}
4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;}
5 | .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;}
6 | .cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;}
7 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;}
8 |
9 | .cm-s-monokai span.cm-comment {color: #75715e;}
10 | .cm-s-monokai span.cm-atom {color: #ae81ff;}
11 | .cm-s-monokai span.cm-number {color: #ae81ff;}
12 |
13 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;}
14 | .cm-s-monokai span.cm-keyword {color: #f92672;}
15 | .cm-s-monokai span.cm-string {color: #e6db74;}
16 |
17 | .cm-s-monokai span.cm-variable {color: #a6e22e;}
18 | .cm-s-monokai span.cm-variable-2 {color: #9effff;}
19 | .cm-s-monokai span.cm-def {color: #fd971f;}
20 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;}
21 | .cm-s-monokai span.cm-tag {color: #f92672;}
22 | .cm-s-monokai span.cm-link {color: #ae81ff;}
23 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;}
24 |
25 | .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;}
26 | .cm-s-monokai .CodeMirror-matchingbracket {
27 | text-decoration: underline;
28 | color: white !important;
29 | }
30 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/neat.css:
--------------------------------------------------------------------------------
1 | .cm-s-neat span.cm-comment { color: #a86; }
2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; }
3 | .cm-s-neat span.cm-string { color: #a22; }
4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; }
5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; }
6 | .cm-s-neat span.cm-variable { color: black; }
7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
8 | .cm-s-neat span.cm-meta {color: #555;}
9 | .cm-s-neat span.cm-link { color: #3a3; }
10 |
11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;}
12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
13 |
--------------------------------------------------------------------------------
/bower_components/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 !important; }
5 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
6 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }
7 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; }
8 |
9 | .cm-s-night span.cm-comment { color: #6900a1; }
10 | .cm-s-night span.cm-atom { color: #845dc4; }
11 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; }
12 | .cm-s-night span.cm-keyword { color: #599eff; }
13 | .cm-s-night span.cm-string { color: #37f14a; }
14 | .cm-s-night span.cm-meta { color: #7678e2; }
15 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
16 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }
17 | .cm-s-night span.cm-bracket { color: #8da6ce; }
18 | .cm-s-night span.cm-comment { color: #6900a1; }
19 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
20 | .cm-s-night span.cm-link { color: #845dc4; }
21 | .cm-s-night span.cm-error { color: #9d1e15; }
22 |
23 | .cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;}
24 | .cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
25 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/paraiso-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Paraíso (Dark)
4 | Author: Jan T. Sott
5 |
6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
8 |
9 | */
10 |
11 | .cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;}
12 | .cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;}
13 | .cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;}
14 | .cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;}
15 | .cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;}
16 |
17 | .cm-s-paraiso-dark span.cm-comment {color: #e96ba8;}
18 | .cm-s-paraiso-dark span.cm-atom {color: #815ba4;}
19 | .cm-s-paraiso-dark span.cm-number {color: #815ba4;}
20 |
21 | .cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;}
22 | .cm-s-paraiso-dark span.cm-keyword {color: #ef6155;}
23 | .cm-s-paraiso-dark span.cm-string {color: #fec418;}
24 |
25 | .cm-s-paraiso-dark span.cm-variable {color: #48b685;}
26 | .cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;}
27 | .cm-s-paraiso-dark span.cm-def {color: #f99b15;}
28 | .cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;}
29 | .cm-s-paraiso-dark span.cm-tag {color: #ef6155;}
30 | .cm-s-paraiso-dark span.cm-link {color: #815ba4;}
31 | .cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;}
32 |
33 | .cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;}
34 | .cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/paraiso-light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Paraíso (Light)
4 | Author: Jan T. Sott
5 |
6 | Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
7 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
8 |
9 | */
10 |
11 | .cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;}
12 | .cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;}
13 | .cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;}
14 | .cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;}
15 | .cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;}
16 |
17 | .cm-s-paraiso-light span.cm-comment {color: #e96ba8;}
18 | .cm-s-paraiso-light span.cm-atom {color: #815ba4;}
19 | .cm-s-paraiso-light span.cm-number {color: #815ba4;}
20 |
21 | .cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;}
22 | .cm-s-paraiso-light span.cm-keyword {color: #ef6155;}
23 | .cm-s-paraiso-light span.cm-string {color: #fec418;}
24 |
25 | .cm-s-paraiso-light span.cm-variable {color: #48b685;}
26 | .cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;}
27 | .cm-s-paraiso-light span.cm-def {color: #f99b15;}
28 | .cm-s-paraiso-light span.cm-bracket {color: #41323f;}
29 | .cm-s-paraiso-light span.cm-tag {color: #ef6155;}
30 | .cm-s-paraiso-light span.cm-link {color: #815ba4;}
31 | .cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;}
32 |
33 | .cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;}
34 | .cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/rubyblue.css:
--------------------------------------------------------------------------------
1 | .cm-s-rubyblue { font-family: Trebuchet, Verdana, sans-serif; } /* - customized editor font - */
2 |
3 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; }
4 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; }
5 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; }
6 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; }
7 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; }
8 |
9 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; }
10 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; }
11 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; }
12 | .cm-s-rubyblue span.cm-keyword { color: #F0F; }
13 | .cm-s-rubyblue span.cm-string { color: #F08047; }
14 | .cm-s-rubyblue span.cm-meta { color: #F0F; }
15 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }
16 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }
17 | .cm-s-rubyblue span.cm-bracket { color: #F0F; }
18 | .cm-s-rubyblue span.cm-link { color: #F4C20B; }
19 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
20 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
21 | .cm-s-rubyblue span.cm-error { color: #AF2018; }
22 |
23 | .cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;}
24 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/the-matrix.css:
--------------------------------------------------------------------------------
1 | .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }
2 | .cm-s-the-matrix span.CodeMirror-selected { background: #a8f !important; }
3 | .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; }
4 | .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }
5 | .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; }
6 |
7 | .cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;}
8 | .cm-s-the-matrix span.cm-atom {color: #3FF;}
9 | .cm-s-the-matrix span.cm-number {color: #FFB94F;}
10 | .cm-s-the-matrix span.cm-def {color: #99C;}
11 | .cm-s-the-matrix span.cm-variable {color: #F6C;}
12 | .cm-s-the-matrix span.cm-variable-2 {color: #C6F;}
13 | .cm-s-the-matrix span.cm-variable-3 {color: #96F;}
14 | .cm-s-the-matrix span.cm-property {color: #62FFA0;}
15 | .cm-s-the-matrix span.cm-operator {color: #999}
16 | .cm-s-the-matrix span.cm-comment {color: #CCCCCC;}
17 | .cm-s-the-matrix span.cm-string {color: #39C;}
18 | .cm-s-the-matrix span.cm-meta {color: #C9F;}
19 | .cm-s-the-matrix span.cm-qualifier {color: #FFF700;}
20 | .cm-s-the-matrix span.cm-builtin {color: #30a;}
21 | .cm-s-the-matrix span.cm-bracket {color: #cc7;}
22 | .cm-s-the-matrix span.cm-tag {color: #FFBD40;}
23 | .cm-s-the-matrix span.cm-attribute {color: #FFF700;}
24 | .cm-s-the-matrix span.cm-error {color: #FF0000;}
25 |
26 | .cm-s-the-matrix .CodeMirror-activeline-background {background: #040;}
27 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/tomorrow-night-eighties.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Name: Tomorrow Night - Eighties
4 | Author: Chris Kempson
5 |
6 | CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
7 | Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
8 |
9 | */
10 |
11 | .cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;}
12 | .cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;}
13 | .cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;}
14 | .cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;}
15 | .cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;}
16 |
17 | .cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;}
18 | .cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;}
19 | .cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;}
20 |
21 | .cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;}
22 | .cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;}
23 | .cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;}
24 |
25 | .cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;}
26 | .cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;}
27 | .cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;}
28 | .cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;}
29 | .cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;}
30 | .cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;}
31 | .cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;}
32 |
33 | .cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;}
34 | .cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
35 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/twilight.css:
--------------------------------------------------------------------------------
1 | .cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/
2 | .cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/
3 |
4 | .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; }
5 | .cm-s-twilight .CodeMirror-linenumber { color: #aaa; }
6 | .cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; }
7 |
8 | .cm-s-twilight .cm-keyword { color: #f9ee98; } /**/
9 | .cm-s-twilight .cm-atom { color: #FC0; }
10 | .cm-s-twilight .cm-number { color: #ca7841; } /**/
11 | .cm-s-twilight .cm-def { color: #8DA6CE; }
12 | .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/
13 | .cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/
14 | .cm-s-twilight .cm-operator { color: #cda869; } /**/
15 | .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/
16 | .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/
17 | .cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/
18 | .cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/
19 | .cm-s-twilight .cm-builtin { color: #cda869; } /*?*/
20 | .cm-s-twilight .cm-tag { color: #997643; } /**/
21 | .cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/
22 | .cm-s-twilight .cm-header { color: #FF6400; }
23 | .cm-s-twilight .cm-hr { color: #AEAEAE; }
24 | .cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/
25 | .cm-s-twilight .cm-error { border-bottom: 1px solid red; }
26 |
27 | .cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;}
28 | .cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
29 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/vibrant-ink.css:
--------------------------------------------------------------------------------
1 | /* Taken from the popular Visual Studio Vibrant Ink Schema */
2 |
3 | .cm-s-vibrant-ink.CodeMirror { background: black; color: white; }
4 | .cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; }
5 |
6 | .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
7 | .cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; }
8 | .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; }
9 |
10 | .cm-s-vibrant-ink .cm-keyword { color: #CC7832; }
11 | .cm-s-vibrant-ink .cm-atom { color: #FC0; }
12 | .cm-s-vibrant-ink .cm-number { color: #FFEE98; }
13 | .cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
14 | .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D }
15 | .cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D }
16 | .cm-s-vibrant-ink .cm-operator { color: #888; }
17 | .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
18 | .cm-s-vibrant-ink .cm-string { color: #A5C25C }
19 | .cm-s-vibrant-ink .cm-string-2 { color: red }
20 | .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }
21 | .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }
22 | .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }
23 | .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }
24 | .cm-s-vibrant-ink .cm-header { color: #FF6400; }
25 | .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
26 | .cm-s-vibrant-ink .cm-link { color: blue; }
27 | .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }
28 |
29 | .cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;}
30 | .cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
31 |
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/xq-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2011 by MarkLogic Corporation
3 | Author: Mike Brevoort
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 | */
23 | .cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; }
24 | .cm-s-xq-dark .CodeMirror-selected { background: #27007A !important; }
25 | .cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
26 | .cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; }
27 | .cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
28 |
29 | .cm-s-xq-dark span.cm-keyword {color: #FFBD40;}
30 | .cm-s-xq-dark span.cm-atom {color: #6C8CD5;}
31 | .cm-s-xq-dark span.cm-number {color: #164;}
32 | .cm-s-xq-dark span.cm-def {color: #FFF; text-decoration:underline;}
33 | .cm-s-xq-dark span.cm-variable {color: #FFF;}
34 | .cm-s-xq-dark span.cm-variable-2 {color: #EEE;}
35 | .cm-s-xq-dark span.cm-variable-3 {color: #DDD;}
36 | .cm-s-xq-dark span.cm-property {}
37 | .cm-s-xq-dark span.cm-operator {}
38 | .cm-s-xq-dark span.cm-comment {color: gray;}
39 | .cm-s-xq-dark span.cm-string {color: #9FEE00;}
40 | .cm-s-xq-dark span.cm-meta {color: yellow;}
41 | .cm-s-xq-dark span.cm-qualifier {color: #FFF700;}
42 | .cm-s-xq-dark span.cm-builtin {color: #30a;}
43 | .cm-s-xq-dark span.cm-bracket {color: #cc7;}
44 | .cm-s-xq-dark span.cm-tag {color: #FFBD40;}
45 | .cm-s-xq-dark span.cm-attribute {color: #FFF700;}
46 | .cm-s-xq-dark span.cm-error {color: #f00;}
47 |
48 | .cm-s-xq-dark .CodeMirror-activeline-background {background: #27282E !important;}
49 | .cm-s-xq-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
--------------------------------------------------------------------------------
/bower_components/codemirror/theme/xq-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2011 by MarkLogic Corporation
3 | Author: Mike Brevoort
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 | */
23 | .cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; }
24 | .cm-s-xq-light span.cm-atom {color: #6C8CD5;}
25 | .cm-s-xq-light span.cm-number {color: #164;}
26 | .cm-s-xq-light span.cm-def {text-decoration:underline;}
27 | .cm-s-xq-light span.cm-variable {color: black; }
28 | .cm-s-xq-light span.cm-variable-2 {color:black;}
29 | .cm-s-xq-light span.cm-variable-3 {color: black; }
30 | .cm-s-xq-light span.cm-property {}
31 | .cm-s-xq-light span.cm-operator {}
32 | .cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;}
33 | .cm-s-xq-light span.cm-string {color: red;}
34 | .cm-s-xq-light span.cm-meta {color: yellow;}
35 | .cm-s-xq-light span.cm-qualifier {color: grey}
36 | .cm-s-xq-light span.cm-builtin {color: #7EA656;}
37 | .cm-s-xq-light span.cm-bracket {color: #cc7;}
38 | .cm-s-xq-light span.cm-tag {color: #3F7F7F;}
39 | .cm-s-xq-light span.cm-attribute {color: #7F007F;}
40 | .cm-s-xq-light span.cm-error {color: #f00;}
41 |
42 | .cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;}
43 | .cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;}
--------------------------------------------------------------------------------
/data/type-2014-01-01-1388557136.json:
--------------------------------------------------------------------------------
1 | [{"name":"Type1","href":"type1","description":"this is type1"}]
--------------------------------------------------------------------------------
/data/type.json:
--------------------------------------------------------------------------------
1 | [{"name":"Type1","href":"type1","description":"this is type1"}]
--------------------------------------------------------------------------------
/data/type1-2014-01-01-1388557148.json:
--------------------------------------------------------------------------------
1 | [{"name":
2 | "\u63a5\u53e3\u540d","url":"\u63a5\u53e3url","method":"GET","description":"\u63a5\u53e3\u63cf\u8ff0","params":[{"Name":"param_1_name","Required":"Y","Default":"","Type":"string","Description":"Description of the first parameter."},{"Name":"userId","Required":"Y","Default":"","Type":"string","Description":"The userId parameter that is in the URI."}],"response":[{"Name":"param_1_name","Required":"Y","Default":"","Type":"string","Description":"Description of the first parameter."},{"Name":"userId","Required":"Y","Default":"","Type":"string","Description":"The userId parameter that is in the URI."}],"demo":"
2 | Home
3 | 关于犀鸟
4 |
5 |
6 |
7 | 什么是犀鸟?
8 |
9 | 犀鸟是一个在线文档系统,致力于快速解决团队内部接口文档的编写和沉淀。你可以从 https://github.com/edgeSuperman/hornibills获取源码
10 |
11 | 力求用最简单的方式部署您的文档系统,拥有最方便的文档管理。
12 |
13 |
14 |
15 | 一些想法借鉴了iodocs
16 |
17 |
18 |
19 | 犀鸟如何部署?
20 |
21 | 犀鸟采用bootstrap+angularjs+php开发。
22 |
23 |
24 |
25 | 获取源文件,部署到您支持php的webserver的可访问目录即可。
26 |
27 |
28 |
29 | enjoy!
30 |
31 |
32 | 常见问题
33 | 如何解决版本问题?
34 |
35 | 每次修改动作触发后,都会在 data/ 目录下留下修改文件的一个快照。
36 |
37 | 例如: data/type[2013-12-29]1388326575.json ,适当人工就可以操作一次回滚,或者diff下修改。
38 | 我有很多现成的接口在word里,我如何快速弄到犀鸟里?
39 |
40 | 犀鸟没有db,所有接口在data/各种.json里维护。
41 |
42 |
43 |
44 | data/type.json是一个特殊的json,里面存储的是您接口的分类,格式简单
45 |
46 |
47 | [{"name":"notes模块文档","href":"notes","description":"123"},...]
48 | 其中href是当前分类的类似主键的东西。
49 |
50 |
51 |
52 | 那么data/notes.json对应此分类,维护此分类下的所有接口,样例如下:
53 |
54 |
55 |
56 | [
57 | {
58 | "name": "一个接口的名字",
59 | "url": "该接口的url",
60 | "method": "POST",
61 | "description": " 接口的描述",
62 | "params": [
63 | {
64 | "Name": "param_1_name",
65 | "Required": "Y",
66 | "Default": "",
67 | "Type": "string",
68 | "Description": "Description of the first parameter."
69 | },
70 | {
71 | "Name": "userId",
72 | "Required": "Y",
73 | "Default": "",
74 | "Type": "string",
75 | "Description": "The userId parameter that is in the URI."
76 | }
77 | ],
78 | "response": [
79 | {
80 | "Name": "param_1_name",
81 | "Required": "Y",
82 | "Default": "",
83 | "Type": "string",
84 | "Description": "Description of the first parameter."
85 | },
86 | {
87 | "Name": "userId",
88 | "Required": "Y",
89 | "Default": "",
90 | "Type": "string",
91 | "Description": "The userId parameter that is in the URI."
92 | }
93 | ],
94 | "demo": "<?php \n\r var_dump(123);"
95 | }
96 | ]
97 | 聪明的你一定已经看明白了,你可以自行写一个程序,跑下你之前的接口格式,跑成这样的json文件就可以了。
98 |
99 |
100 |
--------------------------------------------------------------------------------
/html/add.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Home
5 | - {{href?'修改':'添加'}}分类
6 |
7 |
8 |
--------------------------------------------------------------------------------
/html/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | - Home
4 |
5 |
6 |
7 |
8 |
分类 -
9 |
10 |
11 |
12 |
34 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/img/0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/0.jpg
--------------------------------------------------------------------------------
/img/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/1.jpg
--------------------------------------------------------------------------------
/img/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/2.jpg
--------------------------------------------------------------------------------
/img/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/3.jpg
--------------------------------------------------------------------------------
/img/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/4.jpg
--------------------------------------------------------------------------------
/img/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/5.jpg
--------------------------------------------------------------------------------
/img/bird.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/bird.jpg
--------------------------------------------------------------------------------
/img/bird.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/edgeSuperman/hornibills/3700f191a09c4daeb5d4c22a5ef6475f33f6130f/img/bird.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 犀鸟
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
22 |
23 |
24 |
25 |
犀鸟
26 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
74 |
75 |
--------------------------------------------------------------------------------
/js/About.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by danghongyang on 13-12-29.
3 | */
4 | function About($scope){
5 |
6 | }
--------------------------------------------------------------------------------
/js/Add.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by danghongyang on 13-12-26.
3 | */
4 | function Add($scope, $http, $location, $routeParams) {
5 | var json = "data/type.json";
6 |
7 | var href = $routeParams.href;
8 | $scope.href = href;
9 | $http.get(json + "?t=" + (new Date()).getTime()).success(function (data) {
10 | $scope.list = data || [];
11 |
12 | if (href) {
13 | angular.forEach($scope.list, function (item) {
14 | if (item.href == href) {
15 | $scope.current = item;
16 | }
17 |
18 | });
19 | }
20 | else {
21 | $scope.current = {
22 | "name": "",
23 | "href": "",
24 | "description": ""
25 | };
26 | }
27 | console.log($scope.list);
28 | }).error(function(){
29 | $scope.list = [];
30 | });
31 |
32 | var check_unique = function(){
33 | var r = true;
34 |
35 | //是新增的需要检查主键冲突哈哈哈我太蛋疼了
36 | if(!href) {
37 | angular.forEach($scope.list, function (item) {
38 | if ($scope.current.href == item.href) {
39 | r = false;
40 | }
41 |
42 | });
43 | }
44 | return r;
45 | };
46 | $scope.save_me = function () {
47 | $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
48 | $http.post("php/save.php",
49 | "content=" + encodeURIComponent(angular.toJson($scope.list, true)) + "&href=type"
50 | ).success(function (data) {
51 | $location.path("/");
52 | }).error(function (data, status, headers, config) {
53 | alert("add failed");
54 | console.log(arguments);
55 | });
56 | };
57 | $scope.save = function () {
58 | console.log($scope.typeForm);
59 | if($scope.typeForm.$invalid) {
60 | return;
61 | }
62 | if (!href) {
63 | if(check_unique() == false) {
64 | alert("英文名和别的分类冲突了,换一个吧");
65 | return false;
66 | }
67 | $scope.list.push({
68 | "name": $scope.current.name,
69 | "href": $scope.current.href,
70 | "description": $scope.current.description
71 | });
72 | }
73 | $scope.save_me();
74 | };
75 | }
--------------------------------------------------------------------------------
/js/Index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by danghongyang on 13-12-26.
3 | */
4 |
5 | function Index($scope, $http){
6 | var json = "data/type.json";
7 | $http.get(json + "?t=" + (new Date()).getTime()).success(function(data){
8 | $scope.list = data;
9 | });
10 |
11 |
12 | $scope.save_me = function (callback) {
13 | $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
14 | $http.post("php/save.php",
15 | "content=" + encodeURIComponent(angular.toJson($scope.list, true)) + "&href=type"
16 | ).success(function (data) {
17 | callback();
18 | }).error(function (data, status, headers, config) {
19 | alert("add failed");
20 | console.log(arguments);
21 | });
22 | };
23 | var remove_href = function(href){
24 | $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
25 | $http.post("php/delete.php","href=" + href
26 | ).success(function (data) {
27 | }).error(function (data, status, headers, config) {
28 | alert("add failed");
29 | console.log(arguments);
30 | });
31 | };
32 | $scope.remove = function(target) {
33 | if(!confirm("确认删除")) {
34 | return;
35 | }
36 | var href = target.href;
37 | angular.forEach($scope.list, function(item, i){
38 | if(target == item) {
39 | $scope.list.splice(i, 1);
40 | }
41 | });
42 | $scope.save_me(function(){
43 | remove_href(href);
44 | });
45 | };
46 | }
--------------------------------------------------------------------------------
/lib/angular.ngRoute.js:
--------------------------------------------------------------------------------
1 | /*
2 | AngularJS v1.2.5
3 | (c) 2010-2014 Google, Inc. http://angularjs.org
4 | License: MIT
5 | */
6 | (function(h,e,A){'use strict';function u(w,q,k){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,n){function y(){l&&(l.$destroy(),l=null);g&&(k.leave(g),g=null)}function v(){var b=w.current&&w.current.locals;if(b&&b.$template){var b=a.$new(),f=w.current;g=n(b,function(d){k.enter(d,null,g||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||q()});y()});l=f.scope=b;l.$emit("$viewContentLoaded");l.$eval(h)}else y()}var l,g,t=b.autoscroll,h=b.onload||"";a.$on("$routeChangeSuccess",
7 | v);v()}}}function z(e,h,k){return{restrict:"ECA",priority:-400,link:function(a,c){var b=k.current,f=b.locals;c.html(f.$template);var n=e(c.contents());b.controller&&(f.$scope=a,f=h(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));n(a)}}}h=e.module("ngRoute",["ng"]).provider("$route",function(){function h(a,c){return e.extend(new (e.extend(function(){},{prototype:a})),c)}function q(a,e){var b=e.caseInsensitiveMatch,
8 | f={originalPath:a,regexp:a},h=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?|\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var k={};this.when=function(a,c){k[a]=e.extend({reloadOnSearch:!0},c,a&&q(a,c));if(a){var b="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";k[b]=e.extend({redirectTo:a},
9 | q(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,n,q,v,l){function g(){var d=t(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!x)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)x=!1,a.$broadcast("$routeChangeStart",d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?
10 | c.path(u(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?n.get(d):n.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=l.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl=b,c=q.get(b,{cache:v}).then(function(a){return a.data})));
11 | e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function t(){var a,b;e.forEach(k,function(f,k){var p;if(p=!b){var s=c.path();p=f.keys;var l={};if(f.regexp)if(s=f.regexp.exec(s)){for(var g=1,q=s.length;g