claude-maestro 0.1.16
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/README.md +130 -0
- package/bin/maestro.mjs +45 -0
- package/out/main/index.js +5293 -0
- package/out/preload/index.js +130 -0
- package/out/renderer/assets/apl-fqmucPXA.js +140 -0
- package/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
- package/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
- package/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
- package/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
- package/out/renderer/assets/clike-xqXYL6ge.js +805 -0
- package/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
- package/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
- package/out/renderer/assets/cobol-4yqQntpt.js +120 -0
- package/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
- package/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
- package/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
- package/out/renderer/assets/css-c-jst79C.js +1783 -0
- package/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
- package/out/renderer/assets/d-UURgV0Ux.js +179 -0
- package/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
- package/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
- package/out/renderer/assets/dtd-Dy74G54E.js +114 -0
- package/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
- package/out/renderer/assets/ebnf-4fKAGW3a.js +140 -0
- package/out/renderer/assets/ecl-B59qGGVg.js +178 -0
- package/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
- package/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
- package/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
- package/out/renderer/assets/factor-CMxFHDqz.js +65 -0
- package/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
- package/out/renderer/assets/forth-B9D2JCeE.js +116 -0
- package/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
- package/out/renderer/assets/gas-d3KEcW3x.js +294 -0
- package/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
- package/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
- package/out/renderer/assets/haskell-ySd-OUo8.js +459 -0
- package/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
- package/out/renderer/assets/http-BqypyemW.js +79 -0
- package/out/renderer/assets/idl-4HIGJlDI.js +985 -0
- package/out/renderer/assets/index-2SQReYbL.js +117 -0
- package/out/renderer/assets/index-B4G_DF7l.js +178 -0
- package/out/renderer/assets/index-BJ7HHtlW.css +4015 -0
- package/out/renderer/assets/index-BLk1t3tc.js +151 -0
- package/out/renderer/assets/index-BLtm0KYA.js +157 -0
- package/out/renderer/assets/index-BPgGZ4iY.js +82 -0
- package/out/renderer/assets/index-BQE9vCdv.js +332 -0
- package/out/renderer/assets/index-BYr39Do3.js +61 -0
- package/out/renderer/assets/index-Ba0sUbhl.js +47177 -0
- package/out/renderer/assets/index-BewSkGJT.js +1041 -0
- package/out/renderer/assets/index-BnId7J8H.js +1021 -0
- package/out/renderer/assets/index-Btn996gP.js +406 -0
- package/out/renderer/assets/index-C7i4WyfA.js +311 -0
- package/out/renderer/assets/index-CW9SAu99.js +385 -0
- package/out/renderer/assets/index-CXmk7jHk.js +291 -0
- package/out/renderer/assets/index-CyQp9UDR.js +82 -0
- package/out/renderer/assets/index-Da2gJ_Wd.js +704 -0
- package/out/renderer/assets/index-DkFO-IXC.js +2488 -0
- package/out/renderer/assets/index-DqrDpNqn.js +689 -0
- package/out/renderer/assets/index-Dw7p19YD.js +327 -0
- package/out/renderer/assets/index-QPm3UFYR.js +97 -0
- package/out/renderer/assets/index-RGiHNShF.js +1768 -0
- package/out/renderer/assets/index-RgZE5T_I.js +642 -0
- package/out/renderer/assets/index-t8kJBumF.js +312 -0
- package/out/renderer/assets/javascript-C_OHM9hj.js +994 -0
- package/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
- package/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
- package/out/renderer/assets/lua-Cvg8VrAA.js +256 -0
- package/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
- package/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
- package/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
- package/out/renderer/assets/mllike-DHn7xckP.js +334 -0
- package/out/renderer/assets/modelica-0d55jYY0.js +147 -0
- package/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
- package/out/renderer/assets/mumps-Btr8VblO.js +93 -0
- package/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
- package/out/renderer/assets/nsis-3zG7tgur.js +62 -0
- package/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
- package/out/renderer/assets/octave-DYBj3-tl.js +200 -0
- package/out/renderer/assets/oz-R_e8WMIi.js +231 -0
- package/out/renderer/assets/pascal-GD8iposT.js +105 -0
- package/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
- package/out/renderer/assets/pig-C_4T4YIV.js +101 -0
- package/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
- package/out/renderer/assets/properties-BR-vP1aU.js +58 -0
- package/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
- package/out/renderer/assets/pug-CTXt1f8z.js +405 -0
- package/out/renderer/assets/puppet-Bdao66PW.js +137 -0
- package/out/renderer/assets/python-CvWbmiX4.js +427 -0
- package/out/renderer/assets/q-CrbCVq4a.js +131 -0
- package/out/renderer/assets/r-V7nswm59.js +170 -0
- package/out/renderer/assets/rpm-C-DLY-If.js +109 -0
- package/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
- package/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
- package/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
- package/out/renderer/assets/shell-BlsXDxCn.js +222 -0
- package/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
- package/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
- package/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
- package/out/renderer/assets/solr-CwD7U71z.js +69 -0
- package/out/renderer/assets/sparql-DYskk2vE.js +249 -0
- package/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
- package/out/renderer/assets/sql-BSrOzCRI.js +354 -0
- package/out/renderer/assets/stex-B6LNC55o.js +231 -0
- package/out/renderer/assets/stylus-BkS-boTH.js +565 -0
- package/out/renderer/assets/swift-FRZi1uvB.js +291 -0
- package/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
- package/out/renderer/assets/textile-BnFpjsrl.js +414 -0
- package/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
- package/out/renderer/assets/tiki-DK9DOeWn.js +268 -0
- package/out/renderer/assets/toml-BOuWGMcf.js +76 -0
- package/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
- package/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
- package/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
- package/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
- package/out/renderer/assets/vb-Dp90gtsv.js +196 -0
- package/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
- package/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
- package/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
- package/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
- package/out/renderer/assets/webidl-BTLTThCm.js +204 -0
- package/out/renderer/assets/xquery-BrBUuxMR.js +525 -0
- package/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
- package/out/renderer/assets/z80-BZV19vqv.js +93 -0
- package/out/renderer/index.html +16 -0
- package/package.json +109 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
function words(str) {
|
|
2
|
+
var obj = {}, words2 = str.split(" ");
|
|
3
|
+
for (var i = 0; i < words2.length; ++i) obj[words2[i]] = true;
|
|
4
|
+
return obj;
|
|
5
|
+
}
|
|
6
|
+
var keywords = words("if elsif else stop require");
|
|
7
|
+
var atoms = words("true false not");
|
|
8
|
+
function tokenBase(stream, state) {
|
|
9
|
+
var ch = stream.next();
|
|
10
|
+
if (ch == "/" && stream.eat("*")) {
|
|
11
|
+
state.tokenize = tokenCComment;
|
|
12
|
+
return tokenCComment(stream, state);
|
|
13
|
+
}
|
|
14
|
+
if (ch === "#") {
|
|
15
|
+
stream.skipToEnd();
|
|
16
|
+
return "comment";
|
|
17
|
+
}
|
|
18
|
+
if (ch == '"') {
|
|
19
|
+
state.tokenize = tokenString(ch);
|
|
20
|
+
return state.tokenize(stream, state);
|
|
21
|
+
}
|
|
22
|
+
if (ch == "(") {
|
|
23
|
+
state._indent.push("(");
|
|
24
|
+
state._indent.push("{");
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (ch === "{") {
|
|
28
|
+
state._indent.push("{");
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (ch == ")") {
|
|
32
|
+
state._indent.pop();
|
|
33
|
+
state._indent.pop();
|
|
34
|
+
}
|
|
35
|
+
if (ch === "}") {
|
|
36
|
+
state._indent.pop();
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (ch == ",")
|
|
40
|
+
return null;
|
|
41
|
+
if (ch == ";")
|
|
42
|
+
return null;
|
|
43
|
+
if (/[{}\(\),;]/.test(ch))
|
|
44
|
+
return null;
|
|
45
|
+
if (/\d/.test(ch)) {
|
|
46
|
+
stream.eatWhile(/[\d]/);
|
|
47
|
+
stream.eat(/[KkMmGg]/);
|
|
48
|
+
return "number";
|
|
49
|
+
}
|
|
50
|
+
if (ch == ":") {
|
|
51
|
+
stream.eatWhile(/[a-zA-Z_]/);
|
|
52
|
+
stream.eatWhile(/[a-zA-Z0-9_]/);
|
|
53
|
+
return "operator";
|
|
54
|
+
}
|
|
55
|
+
stream.eatWhile(/\w/);
|
|
56
|
+
var cur = stream.current();
|
|
57
|
+
if (cur == "text" && stream.eat(":")) {
|
|
58
|
+
state.tokenize = tokenMultiLineString;
|
|
59
|
+
return "string";
|
|
60
|
+
}
|
|
61
|
+
if (keywords.propertyIsEnumerable(cur))
|
|
62
|
+
return "keyword";
|
|
63
|
+
if (atoms.propertyIsEnumerable(cur))
|
|
64
|
+
return "atom";
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function tokenMultiLineString(stream, state) {
|
|
68
|
+
state._multiLineString = true;
|
|
69
|
+
if (!stream.sol()) {
|
|
70
|
+
stream.eatSpace();
|
|
71
|
+
if (stream.peek() == "#") {
|
|
72
|
+
stream.skipToEnd();
|
|
73
|
+
return "comment";
|
|
74
|
+
}
|
|
75
|
+
stream.skipToEnd();
|
|
76
|
+
return "string";
|
|
77
|
+
}
|
|
78
|
+
if (stream.next() == "." && stream.eol()) {
|
|
79
|
+
state._multiLineString = false;
|
|
80
|
+
state.tokenize = tokenBase;
|
|
81
|
+
}
|
|
82
|
+
return "string";
|
|
83
|
+
}
|
|
84
|
+
function tokenCComment(stream, state) {
|
|
85
|
+
var maybeEnd = false, ch;
|
|
86
|
+
while ((ch = stream.next()) != null) {
|
|
87
|
+
if (maybeEnd && ch == "/") {
|
|
88
|
+
state.tokenize = tokenBase;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
maybeEnd = ch == "*";
|
|
92
|
+
}
|
|
93
|
+
return "comment";
|
|
94
|
+
}
|
|
95
|
+
function tokenString(quote) {
|
|
96
|
+
return function(stream, state) {
|
|
97
|
+
var escaped = false, ch;
|
|
98
|
+
while ((ch = stream.next()) != null) {
|
|
99
|
+
if (ch == quote && !escaped)
|
|
100
|
+
break;
|
|
101
|
+
escaped = !escaped && ch == "\\";
|
|
102
|
+
}
|
|
103
|
+
if (!escaped) state.tokenize = tokenBase;
|
|
104
|
+
return "string";
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const sieve = {
|
|
108
|
+
name: "sieve",
|
|
109
|
+
startState: function(base) {
|
|
110
|
+
return {
|
|
111
|
+
tokenize: tokenBase,
|
|
112
|
+
baseIndent: base || 0,
|
|
113
|
+
_indent: []
|
|
114
|
+
};
|
|
115
|
+
},
|
|
116
|
+
token: function(stream, state) {
|
|
117
|
+
if (stream.eatSpace())
|
|
118
|
+
return null;
|
|
119
|
+
return (state.tokenize || tokenBase)(stream, state);
|
|
120
|
+
},
|
|
121
|
+
indent: function(state, _textAfter, cx) {
|
|
122
|
+
var length = state._indent.length;
|
|
123
|
+
if (_textAfter && _textAfter[0] == "}")
|
|
124
|
+
length--;
|
|
125
|
+
if (length < 0)
|
|
126
|
+
length = 0;
|
|
127
|
+
return length * cx.unit;
|
|
128
|
+
},
|
|
129
|
+
languageData: {
|
|
130
|
+
indentOnInput: /^\s*\}$/
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
export {
|
|
134
|
+
sieve
|
|
135
|
+
};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
function simpleMode(states) {
|
|
2
|
+
ensureState(states, "start");
|
|
3
|
+
var states_ = {}, meta = states.languageData || {}, hasIndentation = false;
|
|
4
|
+
for (var state in states) if (state != meta && states.hasOwnProperty(state)) {
|
|
5
|
+
var list = states_[state] = [], orig = states[state];
|
|
6
|
+
for (var i = 0; i < orig.length; i++) {
|
|
7
|
+
var data = orig[i];
|
|
8
|
+
list.push(new Rule(data, states));
|
|
9
|
+
if (data.indent || data.dedent) hasIndentation = true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
name: meta.name,
|
|
14
|
+
startState: function() {
|
|
15
|
+
return { state: "start", pending: null, indent: hasIndentation ? [] : null };
|
|
16
|
+
},
|
|
17
|
+
copyState: function(state2) {
|
|
18
|
+
var s = { state: state2.state, pending: state2.pending, indent: state2.indent && state2.indent.slice(0) };
|
|
19
|
+
if (state2.stack)
|
|
20
|
+
s.stack = state2.stack.slice(0);
|
|
21
|
+
return s;
|
|
22
|
+
},
|
|
23
|
+
token: tokenFunction(states_),
|
|
24
|
+
indent: indentFunction(states_, meta),
|
|
25
|
+
mergeTokens: meta.mergeTokens,
|
|
26
|
+
languageData: meta
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function ensureState(states, name) {
|
|
30
|
+
if (!states.hasOwnProperty(name))
|
|
31
|
+
throw new Error("Undefined state " + name + " in simple mode");
|
|
32
|
+
}
|
|
33
|
+
function toRegex(val, caret) {
|
|
34
|
+
if (!val) return /(?:)/;
|
|
35
|
+
var flags = "";
|
|
36
|
+
if (val instanceof RegExp) {
|
|
37
|
+
if (val.ignoreCase) flags = "i";
|
|
38
|
+
if (val.unicode) flags += "u";
|
|
39
|
+
val = val.source;
|
|
40
|
+
} else {
|
|
41
|
+
val = String(val);
|
|
42
|
+
}
|
|
43
|
+
return new RegExp("^(?:" + val + ")", flags);
|
|
44
|
+
}
|
|
45
|
+
function asToken(val) {
|
|
46
|
+
if (!val) return null;
|
|
47
|
+
if (val.apply) return val;
|
|
48
|
+
if (typeof val == "string") return val.replace(/\./g, " ");
|
|
49
|
+
var result = [];
|
|
50
|
+
for (var i = 0; i < val.length; i++)
|
|
51
|
+
result.push(val[i] && val[i].replace(/\./g, " "));
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function Rule(data, states) {
|
|
55
|
+
if (data.next || data.push) ensureState(states, data.next || data.push);
|
|
56
|
+
this.regex = toRegex(data.regex);
|
|
57
|
+
this.token = asToken(data.token);
|
|
58
|
+
this.data = data;
|
|
59
|
+
}
|
|
60
|
+
function tokenFunction(states) {
|
|
61
|
+
return function(stream, state) {
|
|
62
|
+
if (state.pending) {
|
|
63
|
+
var pend = state.pending.shift();
|
|
64
|
+
if (state.pending.length == 0) state.pending = null;
|
|
65
|
+
stream.pos += pend.text.length;
|
|
66
|
+
return pend.token;
|
|
67
|
+
}
|
|
68
|
+
var curState = states[state.state];
|
|
69
|
+
for (var i = 0; i < curState.length; i++) {
|
|
70
|
+
var rule = curState[i];
|
|
71
|
+
var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);
|
|
72
|
+
if (matches) {
|
|
73
|
+
if (rule.data.next) {
|
|
74
|
+
state.state = rule.data.next;
|
|
75
|
+
} else if (rule.data.push) {
|
|
76
|
+
(state.stack || (state.stack = [])).push(state.state);
|
|
77
|
+
state.state = rule.data.push;
|
|
78
|
+
} else if (rule.data.pop && state.stack && state.stack.length) {
|
|
79
|
+
state.state = state.stack.pop();
|
|
80
|
+
}
|
|
81
|
+
if (rule.data.indent)
|
|
82
|
+
state.indent.push(stream.indentation() + stream.indentUnit);
|
|
83
|
+
if (rule.data.dedent)
|
|
84
|
+
state.indent.pop();
|
|
85
|
+
var token = rule.token;
|
|
86
|
+
if (token && token.apply) token = token(matches);
|
|
87
|
+
if (matches.length > 2 && rule.token && typeof rule.token != "string") {
|
|
88
|
+
state.pending = [];
|
|
89
|
+
for (var j = 2; j < matches.length; j++)
|
|
90
|
+
if (matches[j])
|
|
91
|
+
state.pending.push({ text: matches[j], token: rule.token[j - 1] });
|
|
92
|
+
stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));
|
|
93
|
+
return token[0];
|
|
94
|
+
} else if (token && token.join) {
|
|
95
|
+
return token[0];
|
|
96
|
+
} else {
|
|
97
|
+
return token;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
stream.next();
|
|
102
|
+
return null;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function indentFunction(states, meta) {
|
|
106
|
+
return function(state, textAfter) {
|
|
107
|
+
if (state.indent == null || meta.dontIndentStates && meta.dontIndentStates.indexOf(state.state) > -1)
|
|
108
|
+
return null;
|
|
109
|
+
var pos = state.indent.length - 1, rules = states[state.state];
|
|
110
|
+
scan: for (; ; ) {
|
|
111
|
+
for (var i = 0; i < rules.length; i++) {
|
|
112
|
+
var rule = rules[i];
|
|
113
|
+
if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {
|
|
114
|
+
var m = rule.regex.exec(textAfter);
|
|
115
|
+
if (m && m[0]) {
|
|
116
|
+
pos--;
|
|
117
|
+
if (rule.next || rule.push) rules = states[rule.next || rule.push];
|
|
118
|
+
textAfter = textAfter.slice(m[0].length);
|
|
119
|
+
continue scan;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return pos < 0 ? 0 : state.indent[pos];
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export {
|
|
129
|
+
simpleMode as s
|
|
130
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/;
|
|
2
|
+
var keywords = /true|false|nil|self|super|thisContext/;
|
|
3
|
+
var Context = function(tokenizer, parent) {
|
|
4
|
+
this.next = tokenizer;
|
|
5
|
+
this.parent = parent;
|
|
6
|
+
};
|
|
7
|
+
var Token = function(name, context, eos) {
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.context = context;
|
|
10
|
+
this.eos = eos;
|
|
11
|
+
};
|
|
12
|
+
var State = function() {
|
|
13
|
+
this.context = new Context(next, null);
|
|
14
|
+
this.expectVariable = true;
|
|
15
|
+
this.indentation = 0;
|
|
16
|
+
this.userIndentationDelta = 0;
|
|
17
|
+
};
|
|
18
|
+
State.prototype.userIndent = function(indentation, indentUnit) {
|
|
19
|
+
this.userIndentationDelta = indentation > 0 ? indentation / indentUnit - this.indentation : 0;
|
|
20
|
+
};
|
|
21
|
+
var next = function(stream, context, state) {
|
|
22
|
+
var token = new Token(null, context, false);
|
|
23
|
+
var aChar = stream.next();
|
|
24
|
+
if (aChar === '"') {
|
|
25
|
+
token = nextComment(stream, new Context(nextComment, context));
|
|
26
|
+
} else if (aChar === "'") {
|
|
27
|
+
token = nextString(stream, new Context(nextString, context));
|
|
28
|
+
} else if (aChar === "#") {
|
|
29
|
+
if (stream.peek() === "'") {
|
|
30
|
+
stream.next();
|
|
31
|
+
token = nextSymbol(stream, new Context(nextSymbol, context));
|
|
32
|
+
} else {
|
|
33
|
+
if (stream.eatWhile(/[^\s.{}\[\]()]/))
|
|
34
|
+
token.name = "string.special";
|
|
35
|
+
else
|
|
36
|
+
token.name = "meta";
|
|
37
|
+
}
|
|
38
|
+
} else if (aChar === "$") {
|
|
39
|
+
if (stream.next() === "<") {
|
|
40
|
+
stream.eatWhile(/[^\s>]/);
|
|
41
|
+
stream.next();
|
|
42
|
+
}
|
|
43
|
+
token.name = "string.special";
|
|
44
|
+
} else if (aChar === "|" && state.expectVariable) {
|
|
45
|
+
token.context = new Context(nextTemporaries, context);
|
|
46
|
+
} else if (/[\[\]{}()]/.test(aChar)) {
|
|
47
|
+
token.name = "bracket";
|
|
48
|
+
token.eos = /[\[{(]/.test(aChar);
|
|
49
|
+
if (aChar === "[") {
|
|
50
|
+
state.indentation++;
|
|
51
|
+
} else if (aChar === "]") {
|
|
52
|
+
state.indentation = Math.max(0, state.indentation - 1);
|
|
53
|
+
}
|
|
54
|
+
} else if (specialChars.test(aChar)) {
|
|
55
|
+
stream.eatWhile(specialChars);
|
|
56
|
+
token.name = "operator";
|
|
57
|
+
token.eos = aChar !== ";";
|
|
58
|
+
} else if (/\d/.test(aChar)) {
|
|
59
|
+
stream.eatWhile(/[\w\d]/);
|
|
60
|
+
token.name = "number";
|
|
61
|
+
} else if (/[\w_]/.test(aChar)) {
|
|
62
|
+
stream.eatWhile(/[\w\d_]/);
|
|
63
|
+
token.name = state.expectVariable ? keywords.test(stream.current()) ? "keyword" : "variable" : null;
|
|
64
|
+
} else {
|
|
65
|
+
token.eos = state.expectVariable;
|
|
66
|
+
}
|
|
67
|
+
return token;
|
|
68
|
+
};
|
|
69
|
+
var nextComment = function(stream, context) {
|
|
70
|
+
stream.eatWhile(/[^"]/);
|
|
71
|
+
return new Token("comment", stream.eat('"') ? context.parent : context, true);
|
|
72
|
+
};
|
|
73
|
+
var nextString = function(stream, context) {
|
|
74
|
+
stream.eatWhile(/[^']/);
|
|
75
|
+
return new Token("string", stream.eat("'") ? context.parent : context, false);
|
|
76
|
+
};
|
|
77
|
+
var nextSymbol = function(stream, context) {
|
|
78
|
+
stream.eatWhile(/[^']/);
|
|
79
|
+
return new Token("string.special", stream.eat("'") ? context.parent : context, false);
|
|
80
|
+
};
|
|
81
|
+
var nextTemporaries = function(stream, context) {
|
|
82
|
+
var token = new Token(null, context, false);
|
|
83
|
+
var aChar = stream.next();
|
|
84
|
+
if (aChar === "|") {
|
|
85
|
+
token.context = context.parent;
|
|
86
|
+
token.eos = true;
|
|
87
|
+
} else {
|
|
88
|
+
stream.eatWhile(/[^|]/);
|
|
89
|
+
token.name = "variable";
|
|
90
|
+
}
|
|
91
|
+
return token;
|
|
92
|
+
};
|
|
93
|
+
const smalltalk = {
|
|
94
|
+
name: "smalltalk",
|
|
95
|
+
startState: function() {
|
|
96
|
+
return new State();
|
|
97
|
+
},
|
|
98
|
+
token: function(stream, state) {
|
|
99
|
+
state.userIndent(stream.indentation(), stream.indentUnit);
|
|
100
|
+
if (stream.eatSpace()) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
var token = state.context.next(stream, state.context, state);
|
|
104
|
+
state.context = token.context;
|
|
105
|
+
state.expectVariable = token.eos;
|
|
106
|
+
return token.name;
|
|
107
|
+
},
|
|
108
|
+
blankLine: function(state, indentUnit) {
|
|
109
|
+
state.userIndent(0, indentUnit);
|
|
110
|
+
},
|
|
111
|
+
indent: function(state, textAfter, cx) {
|
|
112
|
+
var i = state.context.next === next && textAfter && textAfter.charAt(0) === "]" ? -1 : state.userIndentationDelta;
|
|
113
|
+
return (state.indentation + i) * cx.unit;
|
|
114
|
+
},
|
|
115
|
+
languageData: {
|
|
116
|
+
indentOnInput: /^\s*\]$/
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
export {
|
|
120
|
+
smalltalk
|
|
121
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/;
|
|
2
|
+
var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/;
|
|
3
|
+
var isOperatorString = /^(OR|AND|NOT|TO)$/;
|
|
4
|
+
function isNumber(word) {
|
|
5
|
+
return parseFloat(word).toString() === word;
|
|
6
|
+
}
|
|
7
|
+
function tokenString(quote) {
|
|
8
|
+
return function(stream, state) {
|
|
9
|
+
var escaped = false, next;
|
|
10
|
+
while ((next = stream.next()) != null) {
|
|
11
|
+
if (next == quote && !escaped) break;
|
|
12
|
+
escaped = !escaped && next == "\\";
|
|
13
|
+
}
|
|
14
|
+
if (!escaped) state.tokenize = tokenBase;
|
|
15
|
+
return "string";
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function tokenOperator(operator) {
|
|
19
|
+
return function(stream, state) {
|
|
20
|
+
if (operator == "|")
|
|
21
|
+
stream.eat(/\|/);
|
|
22
|
+
else if (operator == "&")
|
|
23
|
+
stream.eat(/\&/);
|
|
24
|
+
state.tokenize = tokenBase;
|
|
25
|
+
return "operator";
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function tokenWord(ch) {
|
|
29
|
+
return function(stream, state) {
|
|
30
|
+
var word = ch;
|
|
31
|
+
while ((ch = stream.peek()) && ch.match(isStringChar) != null) {
|
|
32
|
+
word += stream.next();
|
|
33
|
+
}
|
|
34
|
+
state.tokenize = tokenBase;
|
|
35
|
+
if (isOperatorString.test(word))
|
|
36
|
+
return "operator";
|
|
37
|
+
else if (isNumber(word))
|
|
38
|
+
return "number";
|
|
39
|
+
else if (stream.peek() == ":")
|
|
40
|
+
return "propertyName";
|
|
41
|
+
else
|
|
42
|
+
return "string";
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function tokenBase(stream, state) {
|
|
46
|
+
var ch = stream.next();
|
|
47
|
+
if (ch == '"')
|
|
48
|
+
state.tokenize = tokenString(ch);
|
|
49
|
+
else if (isOperatorChar.test(ch))
|
|
50
|
+
state.tokenize = tokenOperator(ch);
|
|
51
|
+
else if (isStringChar.test(ch))
|
|
52
|
+
state.tokenize = tokenWord(ch);
|
|
53
|
+
return state.tokenize != tokenBase ? state.tokenize(stream, state) : null;
|
|
54
|
+
}
|
|
55
|
+
const solr = {
|
|
56
|
+
name: "solr",
|
|
57
|
+
startState: function() {
|
|
58
|
+
return {
|
|
59
|
+
tokenize: tokenBase
|
|
60
|
+
};
|
|
61
|
+
},
|
|
62
|
+
token: function(stream, state) {
|
|
63
|
+
if (stream.eatSpace()) return null;
|
|
64
|
+
return state.tokenize(stream, state);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
solr
|
|
69
|
+
};
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
var curPunc;
|
|
2
|
+
function wordRegexp(words) {
|
|
3
|
+
return new RegExp("^(?:" + words.join("|") + ")$", "i");
|
|
4
|
+
}
|
|
5
|
+
var ops = wordRegexp([
|
|
6
|
+
"str",
|
|
7
|
+
"lang",
|
|
8
|
+
"langmatches",
|
|
9
|
+
"datatype",
|
|
10
|
+
"bound",
|
|
11
|
+
"sameterm",
|
|
12
|
+
"isiri",
|
|
13
|
+
"isuri",
|
|
14
|
+
"iri",
|
|
15
|
+
"uri",
|
|
16
|
+
"bnode",
|
|
17
|
+
"count",
|
|
18
|
+
"sum",
|
|
19
|
+
"min",
|
|
20
|
+
"max",
|
|
21
|
+
"avg",
|
|
22
|
+
"sample",
|
|
23
|
+
"group_concat",
|
|
24
|
+
"rand",
|
|
25
|
+
"abs",
|
|
26
|
+
"ceil",
|
|
27
|
+
"floor",
|
|
28
|
+
"round",
|
|
29
|
+
"concat",
|
|
30
|
+
"substr",
|
|
31
|
+
"strlen",
|
|
32
|
+
"replace",
|
|
33
|
+
"ucase",
|
|
34
|
+
"lcase",
|
|
35
|
+
"encode_for_uri",
|
|
36
|
+
"contains",
|
|
37
|
+
"strstarts",
|
|
38
|
+
"strends",
|
|
39
|
+
"strbefore",
|
|
40
|
+
"strafter",
|
|
41
|
+
"year",
|
|
42
|
+
"month",
|
|
43
|
+
"day",
|
|
44
|
+
"hours",
|
|
45
|
+
"minutes",
|
|
46
|
+
"seconds",
|
|
47
|
+
"timezone",
|
|
48
|
+
"tz",
|
|
49
|
+
"now",
|
|
50
|
+
"uuid",
|
|
51
|
+
"struuid",
|
|
52
|
+
"md5",
|
|
53
|
+
"sha1",
|
|
54
|
+
"sha256",
|
|
55
|
+
"sha384",
|
|
56
|
+
"sha512",
|
|
57
|
+
"coalesce",
|
|
58
|
+
"if",
|
|
59
|
+
"strlang",
|
|
60
|
+
"strdt",
|
|
61
|
+
"isnumeric",
|
|
62
|
+
"regex",
|
|
63
|
+
"exists",
|
|
64
|
+
"isblank",
|
|
65
|
+
"isliteral",
|
|
66
|
+
"a",
|
|
67
|
+
"bind"
|
|
68
|
+
]);
|
|
69
|
+
var keywords = wordRegexp([
|
|
70
|
+
"base",
|
|
71
|
+
"prefix",
|
|
72
|
+
"select",
|
|
73
|
+
"distinct",
|
|
74
|
+
"reduced",
|
|
75
|
+
"construct",
|
|
76
|
+
"describe",
|
|
77
|
+
"ask",
|
|
78
|
+
"from",
|
|
79
|
+
"named",
|
|
80
|
+
"where",
|
|
81
|
+
"order",
|
|
82
|
+
"limit",
|
|
83
|
+
"offset",
|
|
84
|
+
"filter",
|
|
85
|
+
"optional",
|
|
86
|
+
"graph",
|
|
87
|
+
"by",
|
|
88
|
+
"asc",
|
|
89
|
+
"desc",
|
|
90
|
+
"as",
|
|
91
|
+
"having",
|
|
92
|
+
"undef",
|
|
93
|
+
"values",
|
|
94
|
+
"group",
|
|
95
|
+
"minus",
|
|
96
|
+
"in",
|
|
97
|
+
"not",
|
|
98
|
+
"service",
|
|
99
|
+
"silent",
|
|
100
|
+
"using",
|
|
101
|
+
"insert",
|
|
102
|
+
"delete",
|
|
103
|
+
"union",
|
|
104
|
+
"true",
|
|
105
|
+
"false",
|
|
106
|
+
"with",
|
|
107
|
+
"data",
|
|
108
|
+
"copy",
|
|
109
|
+
"to",
|
|
110
|
+
"move",
|
|
111
|
+
"add",
|
|
112
|
+
"create",
|
|
113
|
+
"drop",
|
|
114
|
+
"clear",
|
|
115
|
+
"load",
|
|
116
|
+
"into"
|
|
117
|
+
]);
|
|
118
|
+
var operatorChars = /[*+\-<>=&|\^\/!\?]/;
|
|
119
|
+
var PN_CHARS = "[A-Za-z_\\-0-9]";
|
|
120
|
+
var PREFIX_START = new RegExp("[A-Za-z]");
|
|
121
|
+
var PREFIX_REMAINDER = new RegExp("((" + PN_CHARS + "|\\.)*(" + PN_CHARS + "))?:");
|
|
122
|
+
function tokenBase(stream, state) {
|
|
123
|
+
var ch = stream.next();
|
|
124
|
+
curPunc = null;
|
|
125
|
+
if (ch == "$" || ch == "?") {
|
|
126
|
+
if (ch == "?" && stream.match(/\s/, false)) {
|
|
127
|
+
return "operator";
|
|
128
|
+
}
|
|
129
|
+
stream.match(/^[A-Za-z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][A-Za-z0-9_\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]*/);
|
|
130
|
+
return "variableName.local";
|
|
131
|
+
} else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) {
|
|
132
|
+
stream.match(/^[^\s\u00a0>]*>?/);
|
|
133
|
+
return "atom";
|
|
134
|
+
} else if (ch == '"' || ch == "'") {
|
|
135
|
+
state.tokenize = tokenLiteral(ch);
|
|
136
|
+
return state.tokenize(stream, state);
|
|
137
|
+
} else if (/[{}\(\),\.;\[\]]/.test(ch)) {
|
|
138
|
+
curPunc = ch;
|
|
139
|
+
return "bracket";
|
|
140
|
+
} else if (ch == "#") {
|
|
141
|
+
stream.skipToEnd();
|
|
142
|
+
return "comment";
|
|
143
|
+
} else if (operatorChars.test(ch)) {
|
|
144
|
+
return "operator";
|
|
145
|
+
} else if (ch == ":") {
|
|
146
|
+
eatPnLocal(stream);
|
|
147
|
+
return "atom";
|
|
148
|
+
} else if (ch == "@") {
|
|
149
|
+
stream.eatWhile(/[a-z\d\-]/i);
|
|
150
|
+
return "meta";
|
|
151
|
+
} else if (PREFIX_START.test(ch) && stream.match(PREFIX_REMAINDER)) {
|
|
152
|
+
eatPnLocal(stream);
|
|
153
|
+
return "atom";
|
|
154
|
+
}
|
|
155
|
+
stream.eatWhile(/[_\w\d]/);
|
|
156
|
+
var word = stream.current();
|
|
157
|
+
if (ops.test(word))
|
|
158
|
+
return "builtin";
|
|
159
|
+
else if (keywords.test(word))
|
|
160
|
+
return "keyword";
|
|
161
|
+
else
|
|
162
|
+
return "variable";
|
|
163
|
+
}
|
|
164
|
+
function eatPnLocal(stream) {
|
|
165
|
+
stream.match(/(\.(?=[\w_\-\\%])|[:\w_-]|\\[-\\_~.!$&'()*+,;=/?#@%]|%[a-f\d][a-f\d])+/i);
|
|
166
|
+
}
|
|
167
|
+
function tokenLiteral(quote) {
|
|
168
|
+
return function(stream, state) {
|
|
169
|
+
var escaped = false, ch;
|
|
170
|
+
while ((ch = stream.next()) != null) {
|
|
171
|
+
if (ch == quote && !escaped) {
|
|
172
|
+
state.tokenize = tokenBase;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
escaped = !escaped && ch == "\\";
|
|
176
|
+
}
|
|
177
|
+
return "string";
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function pushContext(state, type, col) {
|
|
181
|
+
state.context = { prev: state.context, indent: state.indent, col, type };
|
|
182
|
+
}
|
|
183
|
+
function popContext(state) {
|
|
184
|
+
state.indent = state.context.indent;
|
|
185
|
+
state.context = state.context.prev;
|
|
186
|
+
}
|
|
187
|
+
const sparql = {
|
|
188
|
+
name: "sparql",
|
|
189
|
+
startState: function() {
|
|
190
|
+
return {
|
|
191
|
+
tokenize: tokenBase,
|
|
192
|
+
context: null,
|
|
193
|
+
indent: 0,
|
|
194
|
+
col: 0
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
token: function(stream, state) {
|
|
198
|
+
if (stream.sol()) {
|
|
199
|
+
if (state.context && state.context.align == null) state.context.align = false;
|
|
200
|
+
state.indent = stream.indentation();
|
|
201
|
+
}
|
|
202
|
+
if (stream.eatSpace()) return null;
|
|
203
|
+
var style = state.tokenize(stream, state);
|
|
204
|
+
if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") {
|
|
205
|
+
state.context.align = true;
|
|
206
|
+
}
|
|
207
|
+
if (curPunc == "(") pushContext(state, ")", stream.column());
|
|
208
|
+
else if (curPunc == "[") pushContext(state, "]", stream.column());
|
|
209
|
+
else if (curPunc == "{") pushContext(state, "}", stream.column());
|
|
210
|
+
else if (/[\]\}\)]/.test(curPunc)) {
|
|
211
|
+
while (state.context && state.context.type == "pattern") popContext(state);
|
|
212
|
+
if (state.context && curPunc == state.context.type) {
|
|
213
|
+
popContext(state);
|
|
214
|
+
if (curPunc == "}" && state.context && state.context.type == "pattern")
|
|
215
|
+
popContext(state);
|
|
216
|
+
}
|
|
217
|
+
} else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state);
|
|
218
|
+
else if (/atom|string|variable/.test(style) && state.context) {
|
|
219
|
+
if (/[\}\]]/.test(state.context.type))
|
|
220
|
+
pushContext(state, "pattern", stream.column());
|
|
221
|
+
else if (state.context.type == "pattern" && !state.context.align) {
|
|
222
|
+
state.context.align = true;
|
|
223
|
+
state.context.col = stream.column();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return style;
|
|
227
|
+
},
|
|
228
|
+
indent: function(state, textAfter, cx) {
|
|
229
|
+
var firstChar = textAfter && textAfter.charAt(0);
|
|
230
|
+
var context = state.context;
|
|
231
|
+
if (/[\]\}]/.test(firstChar))
|
|
232
|
+
while (context && context.type == "pattern") context = context.prev;
|
|
233
|
+
var closing = context && firstChar == context.type;
|
|
234
|
+
if (!context)
|
|
235
|
+
return 0;
|
|
236
|
+
else if (context.type == "pattern")
|
|
237
|
+
return context.col;
|
|
238
|
+
else if (context.align)
|
|
239
|
+
return context.col + (closing ? 0 : 1);
|
|
240
|
+
else
|
|
241
|
+
return context.indent + (closing ? 0 : cx.unit);
|
|
242
|
+
},
|
|
243
|
+
languageData: {
|
|
244
|
+
commentTokens: { line: "#" }
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
export {
|
|
248
|
+
sparql
|
|
249
|
+
};
|