Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
malwaredllc
GitHub Repository: malwaredllc/byob
Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/livescript/livescript.js
1294 views
1
/**
2
* Link to the project's GitHub page:
3
* https://github.com/duralog/CodeMirror
4
*/
5
(function() {
6
CodeMirror.defineMode('livescript', function(){
7
var tokenBase, external;
8
tokenBase = function(stream, state){
9
var next_rule, nr, i$, len$, r, m;
10
if (next_rule = state.next || 'start') {
11
state.next = state.next;
12
if (Array.isArray(nr = Rules[next_rule])) {
13
for (i$ = 0, len$ = nr.length; i$ < len$; ++i$) {
14
r = nr[i$];
15
if (r.regex && (m = stream.match(r.regex))) {
16
state.next = r.next;
17
return r.token;
18
}
19
}
20
stream.next();
21
return 'error';
22
}
23
if (stream.match(r = Rules[next_rule])) {
24
if (r.regex && stream.match(r.regex)) {
25
state.next = r.next;
26
return r.token;
27
} else {
28
stream.next();
29
return 'error';
30
}
31
}
32
}
33
stream.next();
34
return 'error';
35
};
36
external = {
37
startState: function(){
38
return {
39
next: 'start',
40
lastToken: null
41
};
42
},
43
token: function(stream, state){
44
var style;
45
style = tokenBase(stream, state);
46
state.lastToken = {
47
style: style,
48
indent: stream.indentation(),
49
content: stream.current()
50
};
51
return style.replace(/\./g, ' ');
52
},
53
indent: function(state){
54
var indentation;
55
indentation = state.lastToken.indent;
56
if (state.lastToken.content.match(indenter)) {
57
indentation += 2;
58
}
59
return indentation;
60
}
61
};
62
return external;
63
});
64
65
var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*';
66
var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$');
67
var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))';
68
var stringfill = {
69
token: 'string',
70
regex: '.+'
71
};
72
var Rules = {
73
start: [
74
{
75
token: 'comment.doc',
76
regex: '/\\*',
77
next: 'comment'
78
}, {
79
token: 'comment',
80
regex: '#.*'
81
}, {
82
token: 'keyword',
83
regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend
84
}, {
85
token: 'constant.language',
86
regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend
87
}, {
88
token: 'invalid.illegal',
89
regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend
90
}, {
91
token: 'language.support.class',
92
regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend
93
}, {
94
token: 'language.support.function',
95
regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend
96
}, {
97
token: 'variable.language',
98
regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend
99
}, {
100
token: 'identifier',
101
regex: identifier + '\\s*:(?![:=])'
102
}, {
103
token: 'variable',
104
regex: identifier
105
}, {
106
token: 'keyword.operator',
107
regex: '(?:\\.{3}|\\s+\\?)'
108
}, {
109
token: 'keyword.variable',
110
regex: '(?:@+|::|\\.\\.)',
111
next: 'key'
112
}, {
113
token: 'keyword.operator',
114
regex: '\\.\\s*',
115
next: 'key'
116
}, {
117
token: 'string',
118
regex: '\\\\\\S[^\\s,;)}\\]]*'
119
}, {
120
token: 'string.doc',
121
regex: '\'\'\'',
122
next: 'qdoc'
123
}, {
124
token: 'string.doc',
125
regex: '"""',
126
next: 'qqdoc'
127
}, {
128
token: 'string',
129
regex: '\'',
130
next: 'qstring'
131
}, {
132
token: 'string',
133
regex: '"',
134
next: 'qqstring'
135
}, {
136
token: 'string',
137
regex: '`',
138
next: 'js'
139
}, {
140
token: 'string',
141
regex: '<\\[',
142
next: 'words'
143
}, {
144
token: 'string.regex',
145
regex: '//',
146
next: 'heregex'
147
}, {
148
token: 'string.regex',
149
regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}',
150
next: 'key'
151
}, {
152
token: 'constant.numeric',
153
regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)'
154
}, {
155
token: 'lparen',
156
regex: '[({[]'
157
}, {
158
token: 'rparen',
159
regex: '[)}\\]]',
160
next: 'key'
161
}, {
162
token: 'keyword.operator',
163
regex: '\\S+'
164
}, {
165
token: 'text',
166
regex: '\\s+'
167
}
168
],
169
heregex: [
170
{
171
token: 'string.regex',
172
regex: '.*?//[gimy$?]{0,4}',
173
next: 'start'
174
}, {
175
token: 'string.regex',
176
regex: '\\s*#{'
177
}, {
178
token: 'comment.regex',
179
regex: '\\s+(?:#.*)?'
180
}, {
181
token: 'string.regex',
182
regex: '\\S+'
183
}
184
],
185
key: [
186
{
187
token: 'keyword.operator',
188
regex: '[.?@!]+'
189
}, {
190
token: 'identifier',
191
regex: identifier,
192
next: 'start'
193
}, {
194
token: 'text',
195
regex: '.',
196
next: 'start'
197
}
198
],
199
comment: [
200
{
201
token: 'comment.doc',
202
regex: '.*?\\*/',
203
next: 'start'
204
}, {
205
token: 'comment.doc',
206
regex: '.+'
207
}
208
],
209
qdoc: [
210
{
211
token: 'string',
212
regex: ".*?'''",
213
next: 'key'
214
}, stringfill
215
],
216
qqdoc: [
217
{
218
token: 'string',
219
regex: '.*?"""',
220
next: 'key'
221
}, stringfill
222
],
223
qstring: [
224
{
225
token: 'string',
226
regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'',
227
next: 'key'
228
}, stringfill
229
],
230
qqstring: [
231
{
232
token: 'string',
233
regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',
234
next: 'key'
235
}, stringfill
236
],
237
js: [
238
{
239
token: 'string',
240
regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`',
241
next: 'key'
242
}, stringfill
243
],
244
words: [
245
{
246
token: 'string',
247
regex: '.*?\\]>',
248
next: 'key'
249
}, stringfill
250
]
251
};
252
for (var idx in Rules) {
253
var r = Rules[idx];
254
if (Array.isArray(r)) {
255
for (var i = 0, len = r.length; i < len; ++i) {
256
var rr = r[i];
257
if (rr.regex) {
258
Rules[idx][i].regex = new RegExp('^' + rr.regex);
259
}
260
}
261
} else if (r.regex) {
262
Rules[idx].regex = new RegExp('^' + r.regex);
263
}
264
}
265
})();
266
267
CodeMirror.defineMIME('text/x-livescript', 'livescript');
268
269