liquid_cms 0.3.0.1 → 0.3.0.2
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.
- data/CHANGELOG.rdoc +5 -1
- data/Gemfile.lock +1 -1
- data/README.rdoc +5 -1
- data/app/helpers/cms/common_helper.rb +1 -0
- data/app/views/cms/pages/_page.html.erb +2 -1
- data/app/views/layouts/cms.html.erb +2 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/LICENSE +2 -2
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/csscolors.css +12 -8
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/css/docs.css +123 -29
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/csstest.html +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/htmltest.html +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/index.html +232 -179
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/codemirror.js +211 -65
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/editor.js +360 -194
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/mirrorframe.js +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsecss.js +11 -7
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsejavascript.js +14 -5
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/parsesparql.js +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/select.js +140 -87
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/stringstream.js +5 -0
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/tokenizejavascript.js +1 -1
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/js/undo.js +7 -7
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/manual.html +148 -52
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/story.html +631 -614
- data/lib/generators/liquid_cms/templates/public/cms/stylesheets/styles.css +7 -7
- data/lib/liquid_cms/version.rb +1 -1
- metadata +4 -26
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/lua/LICENSE +0 -32
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/lua/css/luacolors.css +0 -63
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/lua/index.html +0 -68
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/lua/js/parselua.js +0 -253
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/LICENSE +0 -37
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/css/phpcolors.css +0 -114
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/index.html +0 -292
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/js/parsephp.js +0 -371
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/js/parsephphtmlmixed.js +0 -90
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/php/js/tokenizephp.js +0 -1006
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/plsql/LICENSE +0 -22
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/plsql/css/plsqlcolors.css +0 -57
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/plsql/index.html +0 -67
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/plsql/js/parseplsql.js +0 -233
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/python/LICENSE +0 -32
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/python/css/pythoncolors.css +0 -58
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/python/index.html +0 -141
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/python/js/parsepython.js +0 -542
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/sql/LICENSE +0 -22
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/sql/css/sqlcolors.css +0 -57
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/sql/index.html +0 -56
- data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/sql/js/parsesql.js +0 -211
data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/python/js/parsepython.js
DELETED
@@ -1,542 +0,0 @@
|
|
1
|
-
var PythonParser = Editor.Parser = (function() {
|
2
|
-
function wordRegexp(words) {
|
3
|
-
return new RegExp("^(?:" + words.join("|") + ")$");
|
4
|
-
}
|
5
|
-
var DELIMITERCLASS = 'py-delimiter';
|
6
|
-
var LITERALCLASS = 'py-literal';
|
7
|
-
var ERRORCLASS = 'py-error';
|
8
|
-
var OPERATORCLASS = 'py-operator';
|
9
|
-
var IDENTIFIERCLASS = 'py-identifier';
|
10
|
-
var STRINGCLASS = 'py-string';
|
11
|
-
var BYTESCLASS = 'py-bytes';
|
12
|
-
var UNICODECLASS = 'py-unicode';
|
13
|
-
var RAWCLASS = 'py-raw';
|
14
|
-
var NORMALCONTEXT = 'normal';
|
15
|
-
var STRINGCONTEXT = 'string';
|
16
|
-
var singleOperators = '+-*/%&|^~<>';
|
17
|
-
var doubleOperators = wordRegexp(['==', '!=', '\\<=', '\\>=', '\\<\\>',
|
18
|
-
'\\<\\<', '\\>\\>', '\\/\\/', '\\*\\*']);
|
19
|
-
var singleDelimiters = '()[]{}@,:`=;';
|
20
|
-
var doubleDelimiters = ['\\+=', '\\-=', '\\*=', '/=', '%=', '&=', '\\|=',
|
21
|
-
'\\^='];
|
22
|
-
var tripleDelimiters = wordRegexp(['//=','\\>\\>=','\\<\\<=','\\*\\*=']);
|
23
|
-
var singleStarters = singleOperators + singleDelimiters + '=!';
|
24
|
-
var doubleStarters = '=<>*/';
|
25
|
-
var identifierStarters = /[_A-Za-z]/;
|
26
|
-
|
27
|
-
var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']);
|
28
|
-
var commonkeywords = ['as', 'assert', 'break', 'class', 'continue',
|
29
|
-
'def', 'del', 'elif', 'else', 'except', 'finally',
|
30
|
-
'for', 'from', 'global', 'if', 'import',
|
31
|
-
'lambda', 'pass', 'raise', 'return',
|
32
|
-
'try', 'while', 'with', 'yield'];
|
33
|
-
var commontypes = ['bool', 'classmethod', 'complex', 'dict', 'enumerate',
|
34
|
-
'float', 'frozenset', 'int', 'list', 'object',
|
35
|
-
'property', 'reversed', 'set', 'slice', 'staticmethod',
|
36
|
-
'str', 'super', 'tuple', 'type'];
|
37
|
-
var py2 = {'types': ['basestring', 'buffer', 'file', 'long', 'unicode',
|
38
|
-
'xrange'],
|
39
|
-
'keywords': ['exec', 'print'],
|
40
|
-
'version': 2 };
|
41
|
-
var py3 = {'types': ['bytearray', 'bytes', 'filter', 'map', 'memoryview',
|
42
|
-
'open', 'range', 'zip'],
|
43
|
-
'keywords': ['nonlocal'],
|
44
|
-
'version': 3};
|
45
|
-
|
46
|
-
var py, keywords, types, stringStarters, stringTypes, config;
|
47
|
-
|
48
|
-
function configure(conf) {
|
49
|
-
if (!conf.hasOwnProperty('pythonVersion')) {
|
50
|
-
conf.pythonVersion = 2;
|
51
|
-
}
|
52
|
-
if (!conf.hasOwnProperty('strictErrors')) {
|
53
|
-
conf.strictErrors = true;
|
54
|
-
}
|
55
|
-
if (conf.pythonVersion != 2 && conf.pythonVersion != 3) {
|
56
|
-
alert('CodeMirror: Unknown Python Version "' +
|
57
|
-
conf.pythonVersion +
|
58
|
-
'", defaulting to Python 2.x.');
|
59
|
-
conf.pythonVersion = 2;
|
60
|
-
}
|
61
|
-
if (conf.pythonVersion == 3) {
|
62
|
-
py = py3;
|
63
|
-
stringStarters = /[\'\"rbRB]/;
|
64
|
-
stringTypes = /[rb]/;
|
65
|
-
doubleDelimiters.push('\\-\\>');
|
66
|
-
} else {
|
67
|
-
py = py2;
|
68
|
-
stringStarters = /[\'\"RUru]/;
|
69
|
-
stringTypes = /[ru]/;
|
70
|
-
}
|
71
|
-
config = conf;
|
72
|
-
keywords = wordRegexp(commonkeywords.concat(py.keywords));
|
73
|
-
types = wordRegexp(commontypes.concat(py.types));
|
74
|
-
doubleDelimiters = wordRegexp(doubleDelimiters);
|
75
|
-
}
|
76
|
-
|
77
|
-
var tokenizePython = (function() {
|
78
|
-
function normal(source, setState) {
|
79
|
-
var stringDelim, threeStr, temp, type, word, possible = {};
|
80
|
-
var ch = source.next();
|
81
|
-
|
82
|
-
function filterPossible(token, styleIfPossible) {
|
83
|
-
if (!possible.style && !possible.content) {
|
84
|
-
return token;
|
85
|
-
} else if (typeof(token) == STRINGCONTEXT) {
|
86
|
-
token = {content: source.get(), style: token};
|
87
|
-
}
|
88
|
-
if (possible.style || styleIfPossible) {
|
89
|
-
token.style = styleIfPossible ? styleIfPossible : possible.style;
|
90
|
-
}
|
91
|
-
if (possible.content) {
|
92
|
-
token.content = possible.content + token.content;
|
93
|
-
}
|
94
|
-
possible = {};
|
95
|
-
return token;
|
96
|
-
}
|
97
|
-
|
98
|
-
// Handle comments
|
99
|
-
if (ch == '#') {
|
100
|
-
while (!source.endOfLine()) {
|
101
|
-
source.next();
|
102
|
-
}
|
103
|
-
return 'py-comment';
|
104
|
-
}
|
105
|
-
// Handle special chars
|
106
|
-
if (ch == '\\') {
|
107
|
-
if (!source.endOfLine()) {
|
108
|
-
var whitespace = true;
|
109
|
-
while (!source.endOfLine()) {
|
110
|
-
if(!(/[\s\u00a0]/.test(source.next()))) {
|
111
|
-
whitespace = false;
|
112
|
-
}
|
113
|
-
}
|
114
|
-
if (!whitespace) {
|
115
|
-
return ERRORCLASS;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
return 'py-special';
|
119
|
-
}
|
120
|
-
// Handle operators and delimiters
|
121
|
-
if (singleStarters.indexOf(ch) != -1 || (ch == "." && !source.matches(/\d/))) {
|
122
|
-
if (doubleStarters.indexOf(source.peek()) != -1) {
|
123
|
-
temp = ch + source.peek();
|
124
|
-
// It must be a double delimiter or operator or triple delimiter
|
125
|
-
if (doubleOperators.test(temp)) {
|
126
|
-
source.next();
|
127
|
-
var nextChar = source.peek();
|
128
|
-
if (nextChar && tripleDelimiters.test(temp + nextChar)) {
|
129
|
-
source.next();
|
130
|
-
return DELIMITERCLASS;
|
131
|
-
} else {
|
132
|
-
return OPERATORCLASS;
|
133
|
-
}
|
134
|
-
} else if (doubleDelimiters.test(temp)) {
|
135
|
-
source.next();
|
136
|
-
return DELIMITERCLASS;
|
137
|
-
}
|
138
|
-
}
|
139
|
-
// It must be a single delimiter or operator
|
140
|
-
if (singleOperators.indexOf(ch) != -1 || ch == ".") {
|
141
|
-
return OPERATORCLASS;
|
142
|
-
} else if (singleDelimiters.indexOf(ch) != -1) {
|
143
|
-
if (ch == '@' && source.matches(/\w/)) {
|
144
|
-
source.nextWhileMatches(/[\w\d_]/);
|
145
|
-
return {style:'py-decorator',
|
146
|
-
content: source.get()};
|
147
|
-
} else {
|
148
|
-
return DELIMITERCLASS;
|
149
|
-
}
|
150
|
-
} else {
|
151
|
-
return ERRORCLASS;
|
152
|
-
}
|
153
|
-
}
|
154
|
-
// Handle number literals
|
155
|
-
if (/\d/.test(ch) || (ch == "." && source.matches(/\d/))) {
|
156
|
-
if (ch === '0' && !source.endOfLine()) {
|
157
|
-
switch (source.peek()) {
|
158
|
-
case 'o':
|
159
|
-
case 'O':
|
160
|
-
source.next();
|
161
|
-
source.nextWhileMatches(/[0-7]/);
|
162
|
-
return filterPossible(LITERALCLASS, ERRORCLASS);
|
163
|
-
case 'x':
|
164
|
-
case 'X':
|
165
|
-
source.next();
|
166
|
-
source.nextWhileMatches(/[0-9A-Fa-f]/);
|
167
|
-
return filterPossible(LITERALCLASS, ERRORCLASS);
|
168
|
-
case 'b':
|
169
|
-
case 'B':
|
170
|
-
source.next();
|
171
|
-
source.nextWhileMatches(/[01]/);
|
172
|
-
return filterPossible(LITERALCLASS, ERRORCLASS);
|
173
|
-
}
|
174
|
-
}
|
175
|
-
source.nextWhileMatches(/\d/);
|
176
|
-
if (ch != '.' && source.peek() == '.') {
|
177
|
-
source.next();
|
178
|
-
source.nextWhileMatches(/\d/);
|
179
|
-
}
|
180
|
-
// Grab an exponent
|
181
|
-
if (source.matches(/e/i)) {
|
182
|
-
source.next();
|
183
|
-
if (source.peek() == '+' || source.peek() == '-') {
|
184
|
-
source.next();
|
185
|
-
}
|
186
|
-
if (source.matches(/\d/)) {
|
187
|
-
source.nextWhileMatches(/\d/);
|
188
|
-
} else {
|
189
|
-
return filterPossible(ERRORCLASS);
|
190
|
-
}
|
191
|
-
}
|
192
|
-
// Grab a complex number
|
193
|
-
if (source.matches(/j/i)) {
|
194
|
-
source.next();
|
195
|
-
}
|
196
|
-
|
197
|
-
return filterPossible(LITERALCLASS);
|
198
|
-
}
|
199
|
-
// Handle strings
|
200
|
-
if (stringStarters.test(ch)) {
|
201
|
-
var peek = source.peek();
|
202
|
-
var stringType = STRINGCLASS;
|
203
|
-
if ((stringTypes.test(ch)) && (peek == '"' || peek == "'")) {
|
204
|
-
switch (ch.toLowerCase()) {
|
205
|
-
case 'b':
|
206
|
-
stringType = BYTESCLASS;
|
207
|
-
break;
|
208
|
-
case 'r':
|
209
|
-
stringType = RAWCLASS;
|
210
|
-
break;
|
211
|
-
case 'u':
|
212
|
-
stringType = UNICODECLASS;
|
213
|
-
break;
|
214
|
-
}
|
215
|
-
ch = source.next();
|
216
|
-
stringDelim = ch;
|
217
|
-
if (source.peek() != stringDelim) {
|
218
|
-
setState(inString(stringType, stringDelim));
|
219
|
-
return null;
|
220
|
-
} else {
|
221
|
-
source.next();
|
222
|
-
if (source.peek() == stringDelim) {
|
223
|
-
source.next();
|
224
|
-
threeStr = stringDelim + stringDelim + stringDelim;
|
225
|
-
setState(inString(stringType, threeStr));
|
226
|
-
return null;
|
227
|
-
} else {
|
228
|
-
return stringType;
|
229
|
-
}
|
230
|
-
}
|
231
|
-
} else if (ch == "'" || ch == '"') {
|
232
|
-
stringDelim = ch;
|
233
|
-
if (source.peek() != stringDelim) {
|
234
|
-
setState(inString(stringType, stringDelim));
|
235
|
-
return null;
|
236
|
-
} else {
|
237
|
-
source.next();
|
238
|
-
if (source.peek() == stringDelim) {
|
239
|
-
source.next();
|
240
|
-
threeStr = stringDelim + stringDelim + stringDelim;
|
241
|
-
setState(inString(stringType, threeStr));
|
242
|
-
return null;
|
243
|
-
} else {
|
244
|
-
return stringType;
|
245
|
-
}
|
246
|
-
}
|
247
|
-
}
|
248
|
-
}
|
249
|
-
// Handle Identifier
|
250
|
-
if (identifierStarters.test(ch)) {
|
251
|
-
source.nextWhileMatches(/[\w\d_]/);
|
252
|
-
word = source.get();
|
253
|
-
if (wordOperators.test(word)) {
|
254
|
-
type = OPERATORCLASS;
|
255
|
-
} else if (keywords.test(word)) {
|
256
|
-
type = 'py-keyword';
|
257
|
-
} else if (types.test(word)) {
|
258
|
-
type = 'py-type';
|
259
|
-
} else {
|
260
|
-
type = IDENTIFIERCLASS;
|
261
|
-
while (source.peek() == '.') {
|
262
|
-
source.next();
|
263
|
-
if (source.matches(identifierStarters)) {
|
264
|
-
source.nextWhileMatches(/[\w\d]/);
|
265
|
-
} else {
|
266
|
-
type = ERRORCLASS;
|
267
|
-
break;
|
268
|
-
}
|
269
|
-
}
|
270
|
-
word = word + source.get();
|
271
|
-
}
|
272
|
-
return filterPossible({style: type, content: word});
|
273
|
-
}
|
274
|
-
|
275
|
-
// Register Dollar sign and Question mark as errors. Always!
|
276
|
-
if (/\$\?/.test(ch)) {
|
277
|
-
return filterPossible(ERRORCLASS);
|
278
|
-
}
|
279
|
-
|
280
|
-
return filterPossible(ERRORCLASS);
|
281
|
-
}
|
282
|
-
|
283
|
-
function inString(style, terminator) {
|
284
|
-
return function(source, setState) {
|
285
|
-
var matches = [];
|
286
|
-
var found = false;
|
287
|
-
while (!found && !source.endOfLine()) {
|
288
|
-
var ch = source.next(), newMatches = [];
|
289
|
-
// Skip escaped characters
|
290
|
-
if (ch == '\\') {
|
291
|
-
if (source.peek() == '\n') {
|
292
|
-
break;
|
293
|
-
}
|
294
|
-
ch = source.next();
|
295
|
-
ch = source.next();
|
296
|
-
}
|
297
|
-
if (ch == terminator.charAt(0)) {
|
298
|
-
matches.push(terminator);
|
299
|
-
}
|
300
|
-
for (var i = 0; i < matches.length; i++) {
|
301
|
-
var match = matches[i];
|
302
|
-
if (match.charAt(0) == ch) {
|
303
|
-
if (match.length == 1) {
|
304
|
-
setState(normal);
|
305
|
-
found = true;
|
306
|
-
break;
|
307
|
-
} else {
|
308
|
-
newMatches.push(match.slice(1));
|
309
|
-
}
|
310
|
-
}
|
311
|
-
}
|
312
|
-
matches = newMatches;
|
313
|
-
}
|
314
|
-
return style;
|
315
|
-
};
|
316
|
-
}
|
317
|
-
|
318
|
-
return function(source, startState) {
|
319
|
-
return tokenizer(source, startState || normal);
|
320
|
-
};
|
321
|
-
})();
|
322
|
-
|
323
|
-
function parsePython(source, basecolumn) {
|
324
|
-
if (!keywords) {
|
325
|
-
configure({});
|
326
|
-
}
|
327
|
-
basecolumn = basecolumn || 0;
|
328
|
-
|
329
|
-
var tokens = tokenizePython(source);
|
330
|
-
var lastToken = null;
|
331
|
-
var column = basecolumn;
|
332
|
-
var context = {prev: null,
|
333
|
-
endOfScope: false,
|
334
|
-
startNewScope: false,
|
335
|
-
level: basecolumn,
|
336
|
-
next: null,
|
337
|
-
type: NORMALCONTEXT
|
338
|
-
};
|
339
|
-
|
340
|
-
function pushContext(level, type) {
|
341
|
-
type = type ? type : NORMALCONTEXT;
|
342
|
-
context = {prev: context,
|
343
|
-
endOfScope: false,
|
344
|
-
startNewScope: false,
|
345
|
-
level: level,
|
346
|
-
next: null,
|
347
|
-
type: type
|
348
|
-
};
|
349
|
-
}
|
350
|
-
|
351
|
-
function popContext(remove) {
|
352
|
-
remove = remove ? remove : false;
|
353
|
-
if (context.prev) {
|
354
|
-
if (remove) {
|
355
|
-
context = context.prev;
|
356
|
-
context.next = null;
|
357
|
-
} else {
|
358
|
-
context.prev.next = context;
|
359
|
-
context = context.prev;
|
360
|
-
}
|
361
|
-
}
|
362
|
-
}
|
363
|
-
|
364
|
-
function indentPython(context) {
|
365
|
-
var temp;
|
366
|
-
return function(nextChars, currentLevel, direction) {
|
367
|
-
if (direction === null || direction === undefined) {
|
368
|
-
if (nextChars) {
|
369
|
-
while (context.next) {
|
370
|
-
context = context.next;
|
371
|
-
}
|
372
|
-
}
|
373
|
-
return context.level;
|
374
|
-
}
|
375
|
-
else if (direction === true) {
|
376
|
-
if (currentLevel == context.level) {
|
377
|
-
if (context.next) {
|
378
|
-
return context.next.level;
|
379
|
-
} else {
|
380
|
-
return context.level;
|
381
|
-
}
|
382
|
-
} else {
|
383
|
-
temp = context;
|
384
|
-
while (temp.prev && temp.prev.level > currentLevel) {
|
385
|
-
temp = temp.prev;
|
386
|
-
}
|
387
|
-
return temp.level;
|
388
|
-
}
|
389
|
-
} else if (direction === false) {
|
390
|
-
if (currentLevel > context.level) {
|
391
|
-
return context.level;
|
392
|
-
} else if (context.prev) {
|
393
|
-
temp = context;
|
394
|
-
while (temp.prev && temp.prev.level >= currentLevel) {
|
395
|
-
temp = temp.prev;
|
396
|
-
}
|
397
|
-
if (temp.prev) {
|
398
|
-
return temp.prev.level;
|
399
|
-
} else {
|
400
|
-
return temp.level;
|
401
|
-
}
|
402
|
-
}
|
403
|
-
}
|
404
|
-
return context.level;
|
405
|
-
};
|
406
|
-
}
|
407
|
-
|
408
|
-
var iter = {
|
409
|
-
next: function() {
|
410
|
-
var token = tokens.next();
|
411
|
-
var type = token.style;
|
412
|
-
var content = token.content;
|
413
|
-
|
414
|
-
if (lastToken) {
|
415
|
-
if (lastToken.content == 'def' && type == IDENTIFIERCLASS) {
|
416
|
-
token.style = 'py-func';
|
417
|
-
}
|
418
|
-
if (lastToken.content == '\n') {
|
419
|
-
var tempCtx = context;
|
420
|
-
// Check for a different scope
|
421
|
-
if (type == 'whitespace' && context.type == NORMALCONTEXT) {
|
422
|
-
if (token.value.length < context.level) {
|
423
|
-
while (token.value.length < context.level) {
|
424
|
-
popContext();
|
425
|
-
}
|
426
|
-
|
427
|
-
if (token.value.length != context.level) {
|
428
|
-
context = tempCtx;
|
429
|
-
if (config.strictErrors) {
|
430
|
-
token.style = ERRORCLASS;
|
431
|
-
}
|
432
|
-
} else {
|
433
|
-
context.next = null;
|
434
|
-
}
|
435
|
-
}
|
436
|
-
} else if (context.level !== basecolumn &&
|
437
|
-
context.type == NORMALCONTEXT) {
|
438
|
-
while (basecolumn !== context.level) {
|
439
|
-
popContext();
|
440
|
-
}
|
441
|
-
|
442
|
-
if (context.level !== basecolumn) {
|
443
|
-
context = tempCtx;
|
444
|
-
if (config.strictErrors) {
|
445
|
-
token.style = ERRORCLASS;
|
446
|
-
}
|
447
|
-
}
|
448
|
-
}
|
449
|
-
}
|
450
|
-
}
|
451
|
-
|
452
|
-
// Handle Scope Changes
|
453
|
-
switch(type) {
|
454
|
-
case STRINGCLASS:
|
455
|
-
case BYTESCLASS:
|
456
|
-
case RAWCLASS:
|
457
|
-
case UNICODECLASS:
|
458
|
-
if (context.type !== STRINGCONTEXT) {
|
459
|
-
pushContext(context.level + 1, STRINGCONTEXT);
|
460
|
-
}
|
461
|
-
break;
|
462
|
-
default:
|
463
|
-
if (context.type === STRINGCONTEXT) {
|
464
|
-
popContext(true);
|
465
|
-
}
|
466
|
-
break;
|
467
|
-
}
|
468
|
-
switch(content) {
|
469
|
-
case '.':
|
470
|
-
case '@':
|
471
|
-
// These delimiters don't appear by themselves
|
472
|
-
if (content !== token.value) {
|
473
|
-
token.style = ERRORCLASS;
|
474
|
-
}
|
475
|
-
break;
|
476
|
-
case ':':
|
477
|
-
// Colons only delimit scope inside a normal scope
|
478
|
-
if (context.type === NORMALCONTEXT) {
|
479
|
-
context.startNewScope = context.level+indentUnit;
|
480
|
-
}
|
481
|
-
break;
|
482
|
-
case '(':
|
483
|
-
case '[':
|
484
|
-
case '{':
|
485
|
-
// These start a sequence scope
|
486
|
-
pushContext(column + content.length, 'sequence');
|
487
|
-
break;
|
488
|
-
case ')':
|
489
|
-
case ']':
|
490
|
-
case '}':
|
491
|
-
// These end a sequence scope
|
492
|
-
popContext(true);
|
493
|
-
break;
|
494
|
-
case 'pass':
|
495
|
-
case 'return':
|
496
|
-
// These end a normal scope
|
497
|
-
if (context.type === NORMALCONTEXT) {
|
498
|
-
context.endOfScope = true;
|
499
|
-
}
|
500
|
-
break;
|
501
|
-
case '\n':
|
502
|
-
// Reset our column
|
503
|
-
column = basecolumn;
|
504
|
-
// Make any scope changes
|
505
|
-
if (context.endOfScope) {
|
506
|
-
context.endOfScope = false;
|
507
|
-
popContext();
|
508
|
-
} else if (context.startNewScope !== false) {
|
509
|
-
var temp = context.startNewScope;
|
510
|
-
context.startNewScope = false;
|
511
|
-
pushContext(temp, NORMALCONTEXT);
|
512
|
-
}
|
513
|
-
// Newlines require an indentation function wrapped in a closure for proper context.
|
514
|
-
token.indentation = indentPython(context);
|
515
|
-
break;
|
516
|
-
}
|
517
|
-
|
518
|
-
// Keep track of current column for certain scopes.
|
519
|
-
if (content != '\n') {
|
520
|
-
column += token.value.length;
|
521
|
-
}
|
522
|
-
|
523
|
-
lastToken = token;
|
524
|
-
return token;
|
525
|
-
},
|
526
|
-
|
527
|
-
copy: function() {
|
528
|
-
var _context = context, _tokenState = tokens.state;
|
529
|
-
return function(source) {
|
530
|
-
tokens = tokenizePython(source, _tokenState);
|
531
|
-
context = _context;
|
532
|
-
return iter;
|
533
|
-
};
|
534
|
-
}
|
535
|
-
};
|
536
|
-
return iter;
|
537
|
-
}
|
538
|
-
|
539
|
-
return {make: parsePython,
|
540
|
-
electricChars: "",
|
541
|
-
configure: configure};
|
542
|
-
})();
|
@@ -1,22 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 John Benediktsson
|
2
|
-
|
3
|
-
This software is provided 'as-is', without any express or implied
|
4
|
-
warranty. In no event will the authors be held liable for any
|
5
|
-
damages arising from the use of this software.
|
6
|
-
|
7
|
-
Permission is granted to anyone to use this software for any
|
8
|
-
purpose, including commercial applications, and to alter it and
|
9
|
-
redistribute it freely, subject to the following restrictions:
|
10
|
-
|
11
|
-
1. The origin of this software must not be misrepresented; you must
|
12
|
-
not claim that you wrote the original software. If you use this
|
13
|
-
software in a product, an acknowledgment in the product
|
14
|
-
documentation would be appreciated but is not required.
|
15
|
-
|
16
|
-
2. Altered source versions must be plainly marked as such, and must
|
17
|
-
not be misrepresented as being the original software.
|
18
|
-
|
19
|
-
3. This notice may not be removed or altered from any source
|
20
|
-
distribution.
|
21
|
-
|
22
|
-
John Benediktsson
|
data/lib/generators/liquid_cms/templates/public/cms/codemirror/contrib/sql/css/sqlcolors.css
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
html {
|
2
|
-
cursor: text;
|
3
|
-
}
|
4
|
-
|
5
|
-
.editbox {
|
6
|
-
margin: .4em;
|
7
|
-
padding: 0;
|
8
|
-
font-family: monospace;
|
9
|
-
font-size: 10pt;
|
10
|
-
color: black;
|
11
|
-
}
|
12
|
-
|
13
|
-
.editbox p {
|
14
|
-
margin: 0;
|
15
|
-
}
|
16
|
-
|
17
|
-
span.sql-keyword {
|
18
|
-
color: blue;
|
19
|
-
}
|
20
|
-
|
21
|
-
span.sql-var {
|
22
|
-
color: red;
|
23
|
-
}
|
24
|
-
|
25
|
-
span.sql-comment {
|
26
|
-
color: #AA7700;
|
27
|
-
}
|
28
|
-
|
29
|
-
span.sql-literal {
|
30
|
-
color: green;
|
31
|
-
}
|
32
|
-
|
33
|
-
span.sql-operator {
|
34
|
-
color: blue;
|
35
|
-
}
|
36
|
-
|
37
|
-
span.sql-word {
|
38
|
-
color: black;
|
39
|
-
}
|
40
|
-
|
41
|
-
span.sql-function {
|
42
|
-
color: darkorange;
|
43
|
-
}
|
44
|
-
|
45
|
-
span.sql-type {
|
46
|
-
color: purple;
|
47
|
-
}
|
48
|
-
|
49
|
-
span.sql-separator {
|
50
|
-
color: #666666;
|
51
|
-
}
|
52
|
-
|
53
|
-
span.sql-number {
|
54
|
-
color: darkcyan;
|
55
|
-
}
|
56
|
-
|
57
|
-
|
@@ -1,56 +0,0 @@
|
|
1
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
2
|
-
<head>
|
3
|
-
<script src="../../js/codemirror.js" type="text/javascript"></script>
|
4
|
-
<title>CodeMirror: SQL demonstration</title>
|
5
|
-
<link rel="stylesheet" type="text/css" href="../../css/docs.css"/>
|
6
|
-
</head>
|
7
|
-
<body style="padding: 20px;">
|
8
|
-
|
9
|
-
<p>Demonstration of <a href="index.html">CodeMirror</a>'s SQL
|
10
|
-
highlighter.</p>
|
11
|
-
|
12
|
-
<p>Written by John Benediktsson (<a href="LICENSE">license</a>).</p>
|
13
|
-
|
14
|
-
<div class="border">
|
15
|
-
<textarea id="code" cols="120" rows="50">
|
16
|
-
create table if not exists table1(
|
17
|
-
a bigint(13) not null primary key,
|
18
|
-
b char(4) not null,
|
19
|
-
c char(50) not null,
|
20
|
-
d int(9) not null,
|
21
|
-
);
|
22
|
-
|
23
|
-
insert into table1 values (1234567890123, "b", "c", 0);
|
24
|
-
|
25
|
-
select from_unixtime(a/1000), b, c, min(d) as `using`
|
26
|
-
from table1 t1
|
27
|
-
left join table2 t2 using (a)
|
28
|
-
-- inner join table3 t3 on t3._a = t1.a
|
29
|
-
join (
|
30
|
-
select a, b, c
|
31
|
-
from data
|
32
|
-
) as foo on foo.a = t1.a
|
33
|
-
|
34
|
-
where a > 10
|
35
|
-
and b like '%foo'
|
36
|
-
or c = 3.14159
|
37
|
-
and d < -15.7
|
38
|
-
order by 1 desc
|
39
|
-
;
|
40
|
-
|
41
|
-
select @total := sum(d) from data;
|
42
|
-
</textarea>
|
43
|
-
</div>
|
44
|
-
|
45
|
-
<script type="text/javascript">
|
46
|
-
var editor = CodeMirror.fromTextArea('code', {
|
47
|
-
height: "450px",
|
48
|
-
parserfile: "../contrib/sql/js/parsesql.js",
|
49
|
-
stylesheet: "css/sqlcolors.css",
|
50
|
-
path: "../../js/",
|
51
|
-
textWrapping: false
|
52
|
-
});
|
53
|
-
</script>
|
54
|
-
|
55
|
-
</body>
|
56
|
-
</html>
|