ll-plus 2.10.24 → 2.10.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/theme-chalk/code-editor-vue3/addon/comment/comment.js +211 -0
- package/theme-chalk/code-editor-vue3/addon/comment/continuecomment.js +114 -0
- package/theme-chalk/code-editor-vue3/addon/dialog/dialog.css +32 -0
- package/theme-chalk/code-editor-vue3/addon/dialog/dialog.js +163 -0
- package/theme-chalk/code-editor-vue3/addon/display/autorefresh.js +47 -0
- package/theme-chalk/code-editor-vue3/addon/display/fullscreen.css +6 -0
- package/theme-chalk/code-editor-vue3/addon/display/fullscreen.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/display/panel.js +133 -0
- package/theme-chalk/code-editor-vue3/addon/display/placeholder.js +78 -0
- package/theme-chalk/code-editor-vue3/addon/display/rulers.js +51 -0
- package/theme-chalk/code-editor-vue3/addon/edit/closebrackets.js +201 -0
- package/theme-chalk/code-editor-vue3/addon/edit/closetag.js +185 -0
- package/theme-chalk/code-editor-vue3/addon/edit/continuelist.js +101 -0
- package/theme-chalk/code-editor-vue3/addon/edit/matchbrackets.js +160 -0
- package/theme-chalk/code-editor-vue3/addon/edit/matchtags.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/edit/trailingspace.js +27 -0
- package/theme-chalk/code-editor-vue3/addon/fold/brace-fold.js +119 -0
- package/theme-chalk/code-editor-vue3/addon/fold/comment-fold.js +59 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldcode.js +159 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.css +20 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.js +169 -0
- package/theme-chalk/code-editor-vue3/addon/fold/indent-fold.js +48 -0
- package/theme-chalk/code-editor-vue3/addon/fold/markdown-fold.js +49 -0
- package/theme-chalk/code-editor-vue3/addon/fold/xml-fold.js +184 -0
- package/theme-chalk/code-editor-vue3/addon/hint/anyword-hint.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/hint/css-hint.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/hint/html-hint.js +351 -0
- package/theme-chalk/code-editor-vue3/addon/hint/javascript-hint.js +162 -0
- package/theme-chalk/code-editor-vue3/addon/hint/show-hint.css +37 -0
- package/theme-chalk/code-editor-vue3/addon/hint/show-hint.js +523 -0
- package/theme-chalk/code-editor-vue3/addon/hint/sql-hint.js +304 -0
- package/theme-chalk/code-editor-vue3/addon/hint/xml-hint.js +132 -0
- package/theme-chalk/code-editor-vue3/addon/lint/coffeescript-lint.js +47 -0
- package/theme-chalk/code-editor-vue3/addon/lint/css-lint.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/lint/html-lint.js +59 -0
- package/theme-chalk/code-editor-vue3/addon/lint/javascript-lint.js +65 -0
- package/theme-chalk/code-editor-vue3/addon/lint/json-lint.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/lint/lint.css +79 -0
- package/theme-chalk/code-editor-vue3/addon/lint/lint.js +288 -0
- package/theme-chalk/code-editor-vue3/addon/lint/yaml-lint.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/merge/merge.css +119 -0
- package/theme-chalk/code-editor-vue3/addon/merge/merge.js +1018 -0
- package/theme-chalk/code-editor-vue3/addon/mode/loadmode.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/mode/multiplex.js +136 -0
- package/theme-chalk/code-editor-vue3/addon/mode/multiplex_test.js +49 -0
- package/theme-chalk/code-editor-vue3/addon/mode/overlay.js +90 -0
- package/theme-chalk/code-editor-vue3/addon/mode/simple.js +216 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/colorize.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode-standalone.js +334 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode.js +76 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode.node.js +329 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/annotatescrollbar.js +128 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/scrollpastend.js +48 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.css +66 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.js +152 -0
- package/theme-chalk/code-editor-vue3/addon/search/jump-to-line.js +53 -0
- package/theme-chalk/code-editor-vue3/addon/search/match-highlighter.js +167 -0
- package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.css +8 -0
- package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.js +97 -0
- package/theme-chalk/code-editor-vue3/addon/search/search.js +295 -0
- package/theme-chalk/code-editor-vue3/addon/search/searchcursor.js +305 -0
- package/theme-chalk/code-editor-vue3/addon/selection/active-line.js +72 -0
- package/theme-chalk/code-editor-vue3/addon/selection/mark-selection.js +119 -0
- package/theme-chalk/code-editor-vue3/addon/selection/selection-pointer.js +98 -0
- package/theme-chalk/code-editor-vue3/addon/tern/tern.css +87 -0
- package/theme-chalk/code-editor-vue3/addon/tern/tern.js +756 -0
- package/theme-chalk/code-editor-vue3/addon/tern/worker.js +44 -0
- package/theme-chalk/code-editor-vue3/addon/wrap/hardwrap.js +160 -0
- package/theme-chalk/code-editor-vue3/lib/codemirror.css +344 -0
- package/theme-chalk/code-editor-vue3/lib/codemirror.js +9884 -0
- package/theme-chalk/code-editor-vue3/mode/apl/apl.js +174 -0
- package/theme-chalk/code-editor-vue3/mode/asciiarmor/asciiarmor.js +74 -0
- package/theme-chalk/code-editor-vue3/mode/asn.1/asn.1.js +204 -0
- package/theme-chalk/code-editor-vue3/mode/asterisk/asterisk.js +220 -0
- package/theme-chalk/code-editor-vue3/mode/brainfuck/brainfuck.js +85 -0
- package/theme-chalk/code-editor-vue3/mode/clike/clike.js +942 -0
- package/theme-chalk/code-editor-vue3/mode/clojure/clojure.js +293 -0
- package/theme-chalk/code-editor-vue3/mode/cmake/cmake.js +97 -0
- package/theme-chalk/code-editor-vue3/mode/cobol/cobol.js +255 -0
- package/theme-chalk/code-editor-vue3/mode/coffeescript/coffeescript.js +359 -0
- package/theme-chalk/code-editor-vue3/mode/commonlisp/commonlisp.js +125 -0
- package/theme-chalk/code-editor-vue3/mode/crystal/crystal.js +433 -0
- package/theme-chalk/code-editor-vue3/mode/cypher/cypher.js +152 -0
- package/theme-chalk/code-editor-vue3/mode/d/d.js +223 -0
- package/theme-chalk/code-editor-vue3/mode/dart/dart.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/diff/diff.js +47 -0
- package/theme-chalk/code-editor-vue3/mode/django/django.js +356 -0
- package/theme-chalk/code-editor-vue3/mode/dockerfile/dockerfile.js +211 -0
- package/theme-chalk/code-editor-vue3/mode/dtd/dtd.js +142 -0
- package/theme-chalk/code-editor-vue3/mode/dylan/dylan.js +352 -0
- package/theme-chalk/code-editor-vue3/mode/ebnf/ebnf.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/ecl/ecl.js +206 -0
- package/theme-chalk/code-editor-vue3/mode/eiffel/eiffel.js +160 -0
- package/theme-chalk/code-editor-vue3/mode/elm/elm.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/erlang/erlang.js +619 -0
- package/theme-chalk/code-editor-vue3/mode/factor/factor.js +85 -0
- package/theme-chalk/code-editor-vue3/mode/fcl/fcl.js +173 -0
- package/theme-chalk/code-editor-vue3/mode/forth/forth.js +180 -0
- package/theme-chalk/code-editor-vue3/mode/fortran/fortran.js +188 -0
- package/theme-chalk/code-editor-vue3/mode/gas/gas.js +353 -0
- package/theme-chalk/code-editor-vue3/mode/gfm/gfm.js +129 -0
- package/theme-chalk/code-editor-vue3/mode/gherkin/gherkin.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/go/go.js +187 -0
- package/theme-chalk/code-editor-vue3/mode/groovy/groovy.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/haml/haml.js +161 -0
- package/theme-chalk/code-editor-vue3/mode/handlebars/handlebars.js +70 -0
- package/theme-chalk/code-editor-vue3/mode/haskell/haskell.js +268 -0
- package/theme-chalk/code-editor-vue3/mode/haskell-literate/haskell-literate.js +43 -0
- package/theme-chalk/code-editor-vue3/mode/haxe/haxe.js +515 -0
- package/theme-chalk/code-editor-vue3/mode/htmlmixed/htmlmixed.js +153 -0
- package/theme-chalk/code-editor-vue3/mode/http/http.js +113 -0
- package/theme-chalk/code-editor-vue3/mode/idl/idl.js +290 -0
- package/theme-chalk/code-editor-vue3/mode/jinja2/jinja2.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/julia/julia.js +390 -0
- package/theme-chalk/code-editor-vue3/mode/livescript/livescript.js +280 -0
- package/theme-chalk/code-editor-vue3/mode/lua/lua.js +160 -0
- package/theme-chalk/code-editor-vue3/mode/markdown/markdown.js +886 -0
- package/theme-chalk/code-editor-vue3/mode/mathematica/mathematica.js +176 -0
- package/theme-chalk/code-editor-vue3/mode/mbox/mbox.js +129 -0
- package/theme-chalk/code-editor-vue3/mode/meta.js +221 -0
- package/theme-chalk/code-editor-vue3/mode/mirc/mirc.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/mllike/mllike.js +359 -0
- package/theme-chalk/code-editor-vue3/mode/modelica/modelica.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/mscgen/mscgen.js +175 -0
- package/theme-chalk/code-editor-vue3/mode/mumps/mumps.js +148 -0
- package/theme-chalk/code-editor-vue3/mode/nginx/nginx.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/nsis/nsis.js +95 -0
- package/theme-chalk/code-editor-vue3/mode/ntriples/ntriples.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/octave/octave.js +139 -0
- package/theme-chalk/code-editor-vue3/mode/oz/oz.js +252 -0
- package/theme-chalk/code-editor-vue3/mode/pascal/pascal.js +136 -0
- package/theme-chalk/code-editor-vue3/mode/pegjs/pegjs.js +111 -0
- package/theme-chalk/code-editor-vue3/mode/perl/perl.js +836 -0
- package/theme-chalk/code-editor-vue3/mode/php/php.js +234 -0
- package/theme-chalk/code-editor-vue3/mode/pig/pig.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/powershell/powershell.js +398 -0
- package/theme-chalk/code-editor-vue3/mode/properties/properties.js +78 -0
- package/theme-chalk/code-editor-vue3/mode/protobuf/protobuf.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/pug/pug.js +591 -0
- package/theme-chalk/code-editor-vue3/mode/puppet/puppet.js +220 -0
- package/theme-chalk/code-editor-vue3/mode/python/python.js +402 -0
- package/theme-chalk/code-editor-vue3/mode/q/q.js +139 -0
- package/theme-chalk/code-editor-vue3/mode/r/r.js +190 -0
- package/theme-chalk/code-editor-vue3/mode/rpm/changes/index.html +66 -0
- package/theme-chalk/code-editor-vue3/mode/rpm/rpm.js +109 -0
- package/theme-chalk/code-editor-vue3/mode/rst/rst.js +557 -0
- package/theme-chalk/code-editor-vue3/mode/ruby/ruby.js +303 -0
- package/theme-chalk/code-editor-vue3/mode/rust/rust.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/sas/sas.js +303 -0
- package/theme-chalk/code-editor-vue3/mode/sass/sass.js +459 -0
- package/theme-chalk/code-editor-vue3/mode/scheme/scheme.js +284 -0
- package/theme-chalk/code-editor-vue3/mode/shell/shell.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/sieve/sieve.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/slim/slim.js +575 -0
- package/theme-chalk/code-editor-vue3/mode/smalltalk/smalltalk.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/smarty/smarty.js +225 -0
- package/theme-chalk/code-editor-vue3/mode/solr/solr.js +104 -0
- package/theme-chalk/code-editor-vue3/mode/soy/soy.js +665 -0
- package/theme-chalk/code-editor-vue3/mode/sparql/sparql.js +184 -0
- package/theme-chalk/code-editor-vue3/mode/spreadsheet/spreadsheet.js +112 -0
- package/theme-chalk/code-editor-vue3/mode/sql/sql.js +525 -0
- package/theme-chalk/code-editor-vue3/mode/stex/stex.js +264 -0
- package/theme-chalk/code-editor-vue3/mode/stylus/stylus.js +775 -0
- package/theme-chalk/code-editor-vue3/mode/swift/swift.js +221 -0
- package/theme-chalk/code-editor-vue3/mode/tcl/tcl.js +140 -0
- package/theme-chalk/code-editor-vue3/mode/textile/textile.js +469 -0
- package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.css +14 -0
- package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.js +308 -0
- package/theme-chalk/code-editor-vue3/mode/tiki/tiki.css +26 -0
- package/theme-chalk/code-editor-vue3/mode/tiki/tiki.js +312 -0
- package/theme-chalk/code-editor-vue3/mode/toml/toml.js +88 -0
- package/theme-chalk/code-editor-vue3/mode/tornado/tornado.js +68 -0
- package/theme-chalk/code-editor-vue3/mode/troff/troff.js +84 -0
- package/theme-chalk/code-editor-vue3/mode/ttcn/ttcn.js +283 -0
- package/theme-chalk/code-editor-vue3/mode/ttcn-cfg/ttcn-cfg.js +214 -0
- package/theme-chalk/code-editor-vue3/mode/turtle/turtle.js +162 -0
- package/theme-chalk/code-editor-vue3/mode/twig/twig.js +141 -0
- package/theme-chalk/code-editor-vue3/mode/vb/vb.js +275 -0
- package/theme-chalk/code-editor-vue3/mode/vbscript/vbscript.js +350 -0
- package/theme-chalk/code-editor-vue3/mode/velocity/velocity.js +202 -0
- package/theme-chalk/code-editor-vue3/mode/verilog/verilog.js +781 -0
- package/theme-chalk/code-editor-vue3/mode/vhdl/vhdl.js +189 -0
- package/theme-chalk/code-editor-vue3/mode/wast/wast.js +132 -0
- package/theme-chalk/code-editor-vue3/mode/webidl/webidl.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/xml/xml.js +417 -0
- package/theme-chalk/code-editor-vue3/mode/xquery/xquery.js +448 -0
- package/theme-chalk/code-editor-vue3/mode/yacas/yacas.js +204 -0
- package/theme-chalk/code-editor-vue3/mode/yaml/yaml.js +120 -0
- package/theme-chalk/code-editor-vue3/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/z80/z80.js +116 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
DTD mode
|
|
6
|
+
Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
|
|
7
|
+
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
|
|
8
|
+
GitHub: @peterkroon
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function(mod) {
|
|
12
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
13
|
+
mod(require("../../lib/codemirror"));
|
|
14
|
+
else if (typeof define == "function" && define.amd) // AMD
|
|
15
|
+
define(["../../lib/codemirror"], mod);
|
|
16
|
+
else // Plain browser env
|
|
17
|
+
mod(CodeMirror);
|
|
18
|
+
})(function(CodeMirror) {
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
CodeMirror.defineMode("dtd", function(config) {
|
|
22
|
+
var indentUnit = config.indentUnit, type;
|
|
23
|
+
function ret(style, tp) {type = tp; return style;}
|
|
24
|
+
|
|
25
|
+
function tokenBase(stream, state) {
|
|
26
|
+
var ch = stream.next();
|
|
27
|
+
|
|
28
|
+
if (ch == "<" && stream.eat("!") ) {
|
|
29
|
+
if (stream.eatWhile(/[\-]/)) {
|
|
30
|
+
state.tokenize = tokenSGMLComment;
|
|
31
|
+
return tokenSGMLComment(stream, state);
|
|
32
|
+
} else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent");
|
|
33
|
+
} else if (ch == "<" && stream.eat("?")) { //xml declaration
|
|
34
|
+
state.tokenize = inBlock("meta", "?>");
|
|
35
|
+
return ret("meta", ch);
|
|
36
|
+
} else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag");
|
|
37
|
+
else if (ch == "|") return ret("keyword", "separator");
|
|
38
|
+
else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else
|
|
39
|
+
else if (ch.match(/[\[\]]/)) return ret("rule", ch);
|
|
40
|
+
else if (ch == "\"" || ch == "'") {
|
|
41
|
+
state.tokenize = tokenString(ch);
|
|
42
|
+
return state.tokenize(stream, state);
|
|
43
|
+
} else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) {
|
|
44
|
+
var sc = stream.current();
|
|
45
|
+
if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1);
|
|
46
|
+
return ret("tag", "tag");
|
|
47
|
+
} else if (ch == "%" || ch == "*" ) return ret("number", "number");
|
|
48
|
+
else {
|
|
49
|
+
stream.eatWhile(/[\w\\\-_%.{,]/);
|
|
50
|
+
return ret(null, null);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function tokenSGMLComment(stream, state) {
|
|
55
|
+
var dashes = 0, ch;
|
|
56
|
+
while ((ch = stream.next()) != null) {
|
|
57
|
+
if (dashes >= 2 && ch == ">") {
|
|
58
|
+
state.tokenize = tokenBase;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
dashes = (ch == "-") ? dashes + 1 : 0;
|
|
62
|
+
}
|
|
63
|
+
return ret("comment", "comment");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function tokenString(quote) {
|
|
67
|
+
return function(stream, state) {
|
|
68
|
+
var escaped = false, ch;
|
|
69
|
+
while ((ch = stream.next()) != null) {
|
|
70
|
+
if (ch == quote && !escaped) {
|
|
71
|
+
state.tokenize = tokenBase;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
escaped = !escaped && ch == "\\";
|
|
75
|
+
}
|
|
76
|
+
return ret("string", "tag");
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function inBlock(style, terminator) {
|
|
81
|
+
return function(stream, state) {
|
|
82
|
+
while (!stream.eol()) {
|
|
83
|
+
if (stream.match(terminator)) {
|
|
84
|
+
state.tokenize = tokenBase;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
stream.next();
|
|
88
|
+
}
|
|
89
|
+
return style;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
startState: function(base) {
|
|
95
|
+
return {tokenize: tokenBase,
|
|
96
|
+
baseIndent: base || 0,
|
|
97
|
+
stack: []};
|
|
98
|
+
},
|
|
99
|
+
|
|
100
|
+
token: function(stream, state) {
|
|
101
|
+
if (stream.eatSpace()) return null;
|
|
102
|
+
var style = state.tokenize(stream, state);
|
|
103
|
+
|
|
104
|
+
var context = state.stack[state.stack.length-1];
|
|
105
|
+
if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule");
|
|
106
|
+
else if (type === "endtag") state.stack[state.stack.length-1] = "endtag";
|
|
107
|
+
else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop();
|
|
108
|
+
else if (type == "[") state.stack.push("[");
|
|
109
|
+
return style;
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
indent: function(state, textAfter) {
|
|
113
|
+
var n = state.stack.length;
|
|
114
|
+
|
|
115
|
+
if( textAfter.charAt(0) === ']' )n--;
|
|
116
|
+
else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){
|
|
117
|
+
if(textAfter.substr(0,1) === "<") {}
|
|
118
|
+
else if( type == "doindent" && textAfter.length > 1 ) {}
|
|
119
|
+
else if( type == "doindent")n--;
|
|
120
|
+
else if( type == ">" && textAfter.length > 1) {}
|
|
121
|
+
else if( type == "tag" && textAfter !== ">") {}
|
|
122
|
+
else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--;
|
|
123
|
+
else if( type == "tag")n++;
|
|
124
|
+
else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--;
|
|
125
|
+
else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {}
|
|
126
|
+
else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1;
|
|
127
|
+
else if( textAfter === ">") {}
|
|
128
|
+
else n=n-1;
|
|
129
|
+
//over rule them all
|
|
130
|
+
if(type == null || type == "]")n--;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return state.baseIndent + n * indentUnit;
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
electricChars: "]>"
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
CodeMirror.defineMIME("application/xml-dtd", "dtd");
|
|
141
|
+
|
|
142
|
+
});
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
+
|
|
4
|
+
(function(mod) {
|
|
5
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
6
|
+
mod(require("../../lib/codemirror"));
|
|
7
|
+
else if (typeof define == "function" && define.amd) // AMD
|
|
8
|
+
define(["../../lib/codemirror"], mod);
|
|
9
|
+
else // Plain browser env
|
|
10
|
+
mod(CodeMirror);
|
|
11
|
+
})(function(CodeMirror) {
|
|
12
|
+
"use strict";
|
|
13
|
+
|
|
14
|
+
function forEach(arr, f) {
|
|
15
|
+
for (var i = 0; i < arr.length; i++) f(arr[i], i)
|
|
16
|
+
}
|
|
17
|
+
function some(arr, f) {
|
|
18
|
+
for (var i = 0; i < arr.length; i++) if (f(arr[i], i)) return true
|
|
19
|
+
return false
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
CodeMirror.defineMode("dylan", function(_config) {
|
|
23
|
+
// Words
|
|
24
|
+
var words = {
|
|
25
|
+
// Words that introduce unnamed definitions like "define interface"
|
|
26
|
+
unnamedDefinition: ["interface"],
|
|
27
|
+
|
|
28
|
+
// Words that introduce simple named definitions like "define library"
|
|
29
|
+
namedDefinition: ["module", "library", "macro",
|
|
30
|
+
"C-struct", "C-union",
|
|
31
|
+
"C-function", "C-callable-wrapper"
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
// Words that introduce type definitions like "define class".
|
|
35
|
+
// These are also parameterized like "define method" and are
|
|
36
|
+
// appended to otherParameterizedDefinitionWords
|
|
37
|
+
typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"],
|
|
38
|
+
|
|
39
|
+
// Words that introduce trickier definitions like "define method".
|
|
40
|
+
// These require special definitions to be added to startExpressions
|
|
41
|
+
otherParameterizedDefinition: ["method", "function",
|
|
42
|
+
"C-variable", "C-address"
|
|
43
|
+
],
|
|
44
|
+
|
|
45
|
+
// Words that introduce module constant definitions.
|
|
46
|
+
// These must also be simple definitions and are
|
|
47
|
+
// appended to otherSimpleDefinitionWords
|
|
48
|
+
constantSimpleDefinition: ["constant"],
|
|
49
|
+
|
|
50
|
+
// Words that introduce module variable definitions.
|
|
51
|
+
// These must also be simple definitions and are
|
|
52
|
+
// appended to otherSimpleDefinitionWords
|
|
53
|
+
variableSimpleDefinition: ["variable"],
|
|
54
|
+
|
|
55
|
+
// Other words that introduce simple definitions
|
|
56
|
+
// (without implicit bodies).
|
|
57
|
+
otherSimpleDefinition: ["generic", "domain",
|
|
58
|
+
"C-pointer-type",
|
|
59
|
+
"table"
|
|
60
|
+
],
|
|
61
|
+
|
|
62
|
+
// Words that begin statements with implicit bodies.
|
|
63
|
+
statement: ["if", "block", "begin", "method", "case",
|
|
64
|
+
"for", "select", "when", "unless", "until",
|
|
65
|
+
"while", "iterate", "profiling", "dynamic-bind"
|
|
66
|
+
],
|
|
67
|
+
|
|
68
|
+
// Patterns that act as separators in compound statements.
|
|
69
|
+
// This may include any general pattern that must be indented
|
|
70
|
+
// specially.
|
|
71
|
+
separator: ["finally", "exception", "cleanup", "else",
|
|
72
|
+
"elseif", "afterwards"
|
|
73
|
+
],
|
|
74
|
+
|
|
75
|
+
// Keywords that do not require special indentation handling,
|
|
76
|
+
// but which should be highlighted
|
|
77
|
+
other: ["above", "below", "by", "from", "handler", "in",
|
|
78
|
+
"instance", "let", "local", "otherwise", "slot",
|
|
79
|
+
"subclass", "then", "to", "keyed-by", "virtual"
|
|
80
|
+
],
|
|
81
|
+
|
|
82
|
+
// Condition signaling function calls
|
|
83
|
+
signalingCalls: ["signal", "error", "cerror",
|
|
84
|
+
"break", "check-type", "abort"
|
|
85
|
+
]
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
words["otherDefinition"] =
|
|
89
|
+
words["unnamedDefinition"]
|
|
90
|
+
.concat(words["namedDefinition"])
|
|
91
|
+
.concat(words["otherParameterizedDefinition"]);
|
|
92
|
+
|
|
93
|
+
words["definition"] =
|
|
94
|
+
words["typeParameterizedDefinition"]
|
|
95
|
+
.concat(words["otherDefinition"]);
|
|
96
|
+
|
|
97
|
+
words["parameterizedDefinition"] =
|
|
98
|
+
words["typeParameterizedDefinition"]
|
|
99
|
+
.concat(words["otherParameterizedDefinition"]);
|
|
100
|
+
|
|
101
|
+
words["simpleDefinition"] =
|
|
102
|
+
words["constantSimpleDefinition"]
|
|
103
|
+
.concat(words["variableSimpleDefinition"])
|
|
104
|
+
.concat(words["otherSimpleDefinition"]);
|
|
105
|
+
|
|
106
|
+
words["keyword"] =
|
|
107
|
+
words["statement"]
|
|
108
|
+
.concat(words["separator"])
|
|
109
|
+
.concat(words["other"]);
|
|
110
|
+
|
|
111
|
+
// Patterns
|
|
112
|
+
var symbolPattern = "[-_a-zA-Z?!*@<>$%]+";
|
|
113
|
+
var symbol = new RegExp("^" + symbolPattern);
|
|
114
|
+
var patterns = {
|
|
115
|
+
// Symbols with special syntax
|
|
116
|
+
symbolKeyword: symbolPattern + ":",
|
|
117
|
+
symbolClass: "<" + symbolPattern + ">",
|
|
118
|
+
symbolGlobal: "\\*" + symbolPattern + "\\*",
|
|
119
|
+
symbolConstant: "\\$" + symbolPattern
|
|
120
|
+
};
|
|
121
|
+
var patternStyles = {
|
|
122
|
+
symbolKeyword: "atom",
|
|
123
|
+
symbolClass: "tag",
|
|
124
|
+
symbolGlobal: "variable-2",
|
|
125
|
+
symbolConstant: "variable-3"
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// Compile all patterns to regular expressions
|
|
129
|
+
for (var patternName in patterns)
|
|
130
|
+
if (patterns.hasOwnProperty(patternName))
|
|
131
|
+
patterns[patternName] = new RegExp("^" + patterns[patternName]);
|
|
132
|
+
|
|
133
|
+
// Names beginning "with-" and "without-" are commonly
|
|
134
|
+
// used as statement macro
|
|
135
|
+
patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/];
|
|
136
|
+
|
|
137
|
+
var styles = {};
|
|
138
|
+
styles["keyword"] = "keyword";
|
|
139
|
+
styles["definition"] = "def";
|
|
140
|
+
styles["simpleDefinition"] = "def";
|
|
141
|
+
styles["signalingCalls"] = "builtin";
|
|
142
|
+
|
|
143
|
+
// protected words lookup table
|
|
144
|
+
var wordLookup = {};
|
|
145
|
+
var styleLookup = {};
|
|
146
|
+
|
|
147
|
+
forEach([
|
|
148
|
+
"keyword",
|
|
149
|
+
"definition",
|
|
150
|
+
"simpleDefinition",
|
|
151
|
+
"signalingCalls"
|
|
152
|
+
], function(type) {
|
|
153
|
+
forEach(words[type], function(word) {
|
|
154
|
+
wordLookup[word] = type;
|
|
155
|
+
styleLookup[word] = styles[type];
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
function chain(stream, state, f) {
|
|
161
|
+
state.tokenize = f;
|
|
162
|
+
return f(stream, state);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function tokenBase(stream, state) {
|
|
166
|
+
// String
|
|
167
|
+
var ch = stream.peek();
|
|
168
|
+
if (ch == "'" || ch == '"') {
|
|
169
|
+
stream.next();
|
|
170
|
+
return chain(stream, state, tokenString(ch, "string"));
|
|
171
|
+
}
|
|
172
|
+
// Comment
|
|
173
|
+
else if (ch == "/") {
|
|
174
|
+
stream.next();
|
|
175
|
+
if (stream.eat("*")) {
|
|
176
|
+
return chain(stream, state, tokenComment);
|
|
177
|
+
} else if (stream.eat("/")) {
|
|
178
|
+
stream.skipToEnd();
|
|
179
|
+
return "comment";
|
|
180
|
+
}
|
|
181
|
+
stream.backUp(1);
|
|
182
|
+
}
|
|
183
|
+
// Decimal
|
|
184
|
+
else if (/[+\-\d\.]/.test(ch)) {
|
|
185
|
+
if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) ||
|
|
186
|
+
stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) ||
|
|
187
|
+
stream.match(/^[+-]?\d+/)) {
|
|
188
|
+
return "number";
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Hash
|
|
192
|
+
else if (ch == "#") {
|
|
193
|
+
stream.next();
|
|
194
|
+
// Symbol with string syntax
|
|
195
|
+
ch = stream.peek();
|
|
196
|
+
if (ch == '"') {
|
|
197
|
+
stream.next();
|
|
198
|
+
return chain(stream, state, tokenString('"', "string"));
|
|
199
|
+
}
|
|
200
|
+
// Binary number
|
|
201
|
+
else if (ch == "b") {
|
|
202
|
+
stream.next();
|
|
203
|
+
stream.eatWhile(/[01]/);
|
|
204
|
+
return "number";
|
|
205
|
+
}
|
|
206
|
+
// Hex number
|
|
207
|
+
else if (ch == "x") {
|
|
208
|
+
stream.next();
|
|
209
|
+
stream.eatWhile(/[\da-f]/i);
|
|
210
|
+
return "number";
|
|
211
|
+
}
|
|
212
|
+
// Octal number
|
|
213
|
+
else if (ch == "o") {
|
|
214
|
+
stream.next();
|
|
215
|
+
stream.eatWhile(/[0-7]/);
|
|
216
|
+
return "number";
|
|
217
|
+
}
|
|
218
|
+
// Token concatenation in macros
|
|
219
|
+
else if (ch == '#') {
|
|
220
|
+
stream.next();
|
|
221
|
+
return "punctuation";
|
|
222
|
+
}
|
|
223
|
+
// Sequence literals
|
|
224
|
+
else if ((ch == '[') || (ch == '(')) {
|
|
225
|
+
stream.next();
|
|
226
|
+
return "bracket";
|
|
227
|
+
// Hash symbol
|
|
228
|
+
} else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) {
|
|
229
|
+
return "atom";
|
|
230
|
+
} else {
|
|
231
|
+
stream.eatWhile(/[-a-zA-Z]/);
|
|
232
|
+
return "error";
|
|
233
|
+
}
|
|
234
|
+
} else if (ch == "~") {
|
|
235
|
+
stream.next();
|
|
236
|
+
ch = stream.peek();
|
|
237
|
+
if (ch == "=") {
|
|
238
|
+
stream.next();
|
|
239
|
+
ch = stream.peek();
|
|
240
|
+
if (ch == "=") {
|
|
241
|
+
stream.next();
|
|
242
|
+
return "operator";
|
|
243
|
+
}
|
|
244
|
+
return "operator";
|
|
245
|
+
}
|
|
246
|
+
return "operator";
|
|
247
|
+
} else if (ch == ":") {
|
|
248
|
+
stream.next();
|
|
249
|
+
ch = stream.peek();
|
|
250
|
+
if (ch == "=") {
|
|
251
|
+
stream.next();
|
|
252
|
+
return "operator";
|
|
253
|
+
} else if (ch == ":") {
|
|
254
|
+
stream.next();
|
|
255
|
+
return "punctuation";
|
|
256
|
+
}
|
|
257
|
+
} else if ("[](){}".indexOf(ch) != -1) {
|
|
258
|
+
stream.next();
|
|
259
|
+
return "bracket";
|
|
260
|
+
} else if (".,".indexOf(ch) != -1) {
|
|
261
|
+
stream.next();
|
|
262
|
+
return "punctuation";
|
|
263
|
+
} else if (stream.match("end")) {
|
|
264
|
+
return "keyword";
|
|
265
|
+
}
|
|
266
|
+
for (var name in patterns) {
|
|
267
|
+
if (patterns.hasOwnProperty(name)) {
|
|
268
|
+
var pattern = patterns[name];
|
|
269
|
+
if ((pattern instanceof Array && some(pattern, function(p) {
|
|
270
|
+
return stream.match(p);
|
|
271
|
+
})) || stream.match(pattern))
|
|
272
|
+
return patternStyles[name];
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (/[+\-*\/^=<>&|]/.test(ch)) {
|
|
276
|
+
stream.next();
|
|
277
|
+
return "operator";
|
|
278
|
+
}
|
|
279
|
+
if (stream.match("define")) {
|
|
280
|
+
return "def";
|
|
281
|
+
} else {
|
|
282
|
+
stream.eatWhile(/[\w\-]/);
|
|
283
|
+
// Keyword
|
|
284
|
+
if (wordLookup.hasOwnProperty(stream.current())) {
|
|
285
|
+
return styleLookup[stream.current()];
|
|
286
|
+
} else if (stream.current().match(symbol)) {
|
|
287
|
+
return "variable";
|
|
288
|
+
} else {
|
|
289
|
+
stream.next();
|
|
290
|
+
return "variable-2";
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
function tokenComment(stream, state) {
|
|
296
|
+
var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
|
|
297
|
+
while ((ch = stream.next())) {
|
|
298
|
+
if (ch == "/" && maybeEnd) {
|
|
299
|
+
if (nestedCount > 0) {
|
|
300
|
+
nestedCount--;
|
|
301
|
+
} else {
|
|
302
|
+
state.tokenize = tokenBase;
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
} else if (ch == "*" && maybeNested) {
|
|
306
|
+
nestedCount++;
|
|
307
|
+
}
|
|
308
|
+
maybeEnd = (ch == "*");
|
|
309
|
+
maybeNested = (ch == "/");
|
|
310
|
+
}
|
|
311
|
+
return "comment";
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function tokenString(quote, style) {
|
|
315
|
+
return function(stream, state) {
|
|
316
|
+
var escaped = false, next, end = false;
|
|
317
|
+
while ((next = stream.next()) != null) {
|
|
318
|
+
if (next == quote && !escaped) {
|
|
319
|
+
end = true;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
escaped = !escaped && next == "\\";
|
|
323
|
+
}
|
|
324
|
+
if (end || !escaped) {
|
|
325
|
+
state.tokenize = tokenBase;
|
|
326
|
+
}
|
|
327
|
+
return style;
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Interface
|
|
332
|
+
return {
|
|
333
|
+
startState: function() {
|
|
334
|
+
return {
|
|
335
|
+
tokenize: tokenBase,
|
|
336
|
+
currentIndent: 0
|
|
337
|
+
};
|
|
338
|
+
},
|
|
339
|
+
token: function(stream, state) {
|
|
340
|
+
if (stream.eatSpace())
|
|
341
|
+
return null;
|
|
342
|
+
var style = state.tokenize(stream, state);
|
|
343
|
+
return style;
|
|
344
|
+
},
|
|
345
|
+
blockCommentStart: "/*",
|
|
346
|
+
blockCommentEnd: "*/"
|
|
347
|
+
};
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
CodeMirror.defineMIME("text/x-dylan", "dylan");
|
|
351
|
+
|
|
352
|
+
});
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
+
|
|
4
|
+
(function(mod) {
|
|
5
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
6
|
+
mod(require("../../lib/codemirror"));
|
|
7
|
+
else if (typeof define == "function" && define.amd) // AMD
|
|
8
|
+
define(["../../lib/codemirror"], mod);
|
|
9
|
+
else // Plain browser env
|
|
10
|
+
mod(CodeMirror);
|
|
11
|
+
})(function(CodeMirror) {
|
|
12
|
+
"use strict";
|
|
13
|
+
|
|
14
|
+
CodeMirror.defineMode("ebnf", function (config) {
|
|
15
|
+
var commentType = {slash: 0, parenthesis: 1};
|
|
16
|
+
var stateType = {comment: 0, _string: 1, characterClass: 2};
|
|
17
|
+
var bracesMode = null;
|
|
18
|
+
|
|
19
|
+
if (config.bracesMode)
|
|
20
|
+
bracesMode = CodeMirror.getMode(config, config.bracesMode);
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
startState: function () {
|
|
24
|
+
return {
|
|
25
|
+
stringType: null,
|
|
26
|
+
commentType: null,
|
|
27
|
+
braced: 0,
|
|
28
|
+
lhs: true,
|
|
29
|
+
localState: null,
|
|
30
|
+
stack: [],
|
|
31
|
+
inDefinition: false
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
token: function (stream, state) {
|
|
35
|
+
if (!stream) return;
|
|
36
|
+
|
|
37
|
+
//check for state changes
|
|
38
|
+
if (state.stack.length === 0) {
|
|
39
|
+
//strings
|
|
40
|
+
if ((stream.peek() == '"') || (stream.peek() == "'")) {
|
|
41
|
+
state.stringType = stream.peek();
|
|
42
|
+
stream.next(); // Skip quote
|
|
43
|
+
state.stack.unshift(stateType._string);
|
|
44
|
+
} else if (stream.match('/*')) { //comments starting with /*
|
|
45
|
+
state.stack.unshift(stateType.comment);
|
|
46
|
+
state.commentType = commentType.slash;
|
|
47
|
+
} else if (stream.match('(*')) { //comments starting with (*
|
|
48
|
+
state.stack.unshift(stateType.comment);
|
|
49
|
+
state.commentType = commentType.parenthesis;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//return state
|
|
54
|
+
//stack has
|
|
55
|
+
switch (state.stack[0]) {
|
|
56
|
+
case stateType._string:
|
|
57
|
+
while (state.stack[0] === stateType._string && !stream.eol()) {
|
|
58
|
+
if (stream.peek() === state.stringType) {
|
|
59
|
+
stream.next(); // Skip quote
|
|
60
|
+
state.stack.shift(); // Clear flag
|
|
61
|
+
} else if (stream.peek() === "\\") {
|
|
62
|
+
stream.next();
|
|
63
|
+
stream.next();
|
|
64
|
+
} else {
|
|
65
|
+
stream.match(/^.[^\\\"\']*/);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return state.lhs ? "property string" : "string"; // Token style
|
|
69
|
+
|
|
70
|
+
case stateType.comment:
|
|
71
|
+
while (state.stack[0] === stateType.comment && !stream.eol()) {
|
|
72
|
+
if (state.commentType === commentType.slash && stream.match('*/')) {
|
|
73
|
+
state.stack.shift(); // Clear flag
|
|
74
|
+
state.commentType = null;
|
|
75
|
+
} else if (state.commentType === commentType.parenthesis && stream.match('*)')) {
|
|
76
|
+
state.stack.shift(); // Clear flag
|
|
77
|
+
state.commentType = null;
|
|
78
|
+
} else {
|
|
79
|
+
stream.match(/^.[^\*]*/);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return "comment";
|
|
83
|
+
|
|
84
|
+
case stateType.characterClass:
|
|
85
|
+
while (state.stack[0] === stateType.characterClass && !stream.eol()) {
|
|
86
|
+
if (!(stream.match(/^[^\]\\]+/) || stream.match('.'))) {
|
|
87
|
+
state.stack.shift();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return "operator";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var peek = stream.peek();
|
|
94
|
+
|
|
95
|
+
if (bracesMode !== null && (state.braced || peek === "{")) {
|
|
96
|
+
if (state.localState === null)
|
|
97
|
+
state.localState = CodeMirror.startState(bracesMode);
|
|
98
|
+
|
|
99
|
+
var token = bracesMode.token(stream, state.localState),
|
|
100
|
+
text = stream.current();
|
|
101
|
+
|
|
102
|
+
if (!token) {
|
|
103
|
+
for (var i = 0; i < text.length; i++) {
|
|
104
|
+
if (text[i] === "{") {
|
|
105
|
+
if (state.braced === 0) {
|
|
106
|
+
token = "matchingbracket";
|
|
107
|
+
}
|
|
108
|
+
state.braced++;
|
|
109
|
+
} else if (text[i] === "}") {
|
|
110
|
+
state.braced--;
|
|
111
|
+
if (state.braced === 0) {
|
|
112
|
+
token = "matchingbracket";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return token;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//no stack
|
|
121
|
+
switch (peek) {
|
|
122
|
+
case "[":
|
|
123
|
+
stream.next();
|
|
124
|
+
state.stack.unshift(stateType.characterClass);
|
|
125
|
+
return "bracket";
|
|
126
|
+
case ":":
|
|
127
|
+
case "|":
|
|
128
|
+
case ";":
|
|
129
|
+
stream.next();
|
|
130
|
+
return "operator";
|
|
131
|
+
case "%":
|
|
132
|
+
if (stream.match("%%")) {
|
|
133
|
+
return "header";
|
|
134
|
+
} else if (stream.match(/[%][A-Za-z]+/)) {
|
|
135
|
+
return "keyword";
|
|
136
|
+
} else if (stream.match(/[%][}]/)) {
|
|
137
|
+
return "matchingbracket";
|
|
138
|
+
}
|
|
139
|
+
break;
|
|
140
|
+
case "/":
|
|
141
|
+
if (stream.match(/[\/][A-Za-z]+/)) {
|
|
142
|
+
return "keyword";
|
|
143
|
+
}
|
|
144
|
+
case "\\":
|
|
145
|
+
if (stream.match(/[\][a-z]+/)) {
|
|
146
|
+
return "string-2";
|
|
147
|
+
}
|
|
148
|
+
case ".":
|
|
149
|
+
if (stream.match(".")) {
|
|
150
|
+
return "atom";
|
|
151
|
+
}
|
|
152
|
+
case "*":
|
|
153
|
+
case "-":
|
|
154
|
+
case "+":
|
|
155
|
+
case "^":
|
|
156
|
+
if (stream.match(peek)) {
|
|
157
|
+
return "atom";
|
|
158
|
+
}
|
|
159
|
+
case "$":
|
|
160
|
+
if (stream.match("$$")) {
|
|
161
|
+
return "builtin";
|
|
162
|
+
} else if (stream.match(/[$][0-9]+/)) {
|
|
163
|
+
return "variable-3";
|
|
164
|
+
}
|
|
165
|
+
case "<":
|
|
166
|
+
if (stream.match(/<<[a-zA-Z_]+>>/)) {
|
|
167
|
+
return "builtin";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (stream.match('//')) {
|
|
172
|
+
stream.skipToEnd();
|
|
173
|
+
return "comment";
|
|
174
|
+
} else if (stream.match('return')) {
|
|
175
|
+
return "operator";
|
|
176
|
+
} else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) {
|
|
177
|
+
if (stream.match(/(?=[\(.])/)) {
|
|
178
|
+
return "variable";
|
|
179
|
+
} else if (stream.match(/(?=[\s\n]*[:=])/)) {
|
|
180
|
+
return "def";
|
|
181
|
+
}
|
|
182
|
+
return "variable-2";
|
|
183
|
+
} else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) {
|
|
184
|
+
stream.next();
|
|
185
|
+
return "bracket";
|
|
186
|
+
} else if (!stream.eatSpace()) {
|
|
187
|
+
stream.next();
|
|
188
|
+
}
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
CodeMirror.defineMIME("text/x-ebnf", "ebnf");
|
|
195
|
+
});
|