codemirror-rails 5.2 → 5.3

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +34 -27
  4. data/vendor/assets/javascripts/codemirror/addons/display/rulers.js +1 -2
  5. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +1 -0
  6. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +14 -23
  7. data/vendor/assets/javascripts/codemirror/addons/hint/sql-hint.js +12 -3
  8. data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +6 -6
  9. data/vendor/assets/javascripts/codemirror/addons/search/search.js +1 -1
  10. data/vendor/assets/javascripts/codemirror/addons/search/searchcursor.js +2 -2
  11. data/vendor/assets/javascripts/codemirror/addons/tern/worker.js +1 -1
  12. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +64 -67
  13. data/vendor/assets/javascripts/codemirror/modes/apl.js +1 -2
  14. data/vendor/assets/javascripts/codemirror/modes/asn.1.js +204 -0
  15. data/vendor/assets/javascripts/codemirror/modes/asterisk.js +2 -4
  16. data/vendor/assets/javascripts/codemirror/modes/clike.js +98 -36
  17. data/vendor/assets/javascripts/codemirror/modes/css.js +1 -16
  18. data/vendor/assets/javascripts/codemirror/modes/cypher.js +1 -1
  19. data/vendor/assets/javascripts/codemirror/modes/dylan.js +18 -26
  20. data/vendor/assets/javascripts/codemirror/modes/ecl.js +1 -2
  21. data/vendor/assets/javascripts/codemirror/modes/eiffel.js +0 -2
  22. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +2 -2
  23. data/vendor/assets/javascripts/codemirror/modes/julia.js +0 -2
  24. data/vendor/assets/javascripts/codemirror/modes/livescript.js +2 -2
  25. data/vendor/assets/javascripts/codemirror/modes/mathematica.js +175 -0
  26. data/vendor/assets/javascripts/codemirror/modes/php.js +1 -0
  27. data/vendor/assets/javascripts/codemirror/modes/pig.js +15 -25
  28. data/vendor/assets/javascripts/codemirror/modes/sql.js +2 -2
  29. data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +36 -47
  30. data/vendor/assets/javascripts/codemirror/modes/tiki.js +8 -19
  31. data/vendor/assets/javascripts/codemirror/modes/ttcn-cfg.js +214 -0
  32. data/vendor/assets/javascripts/codemirror/modes/ttcn.js +283 -0
  33. data/vendor/assets/javascripts/codemirror/modes/xquery.js +30 -40
  34. data/vendor/assets/stylesheets/codemirror/addons/dialog/dialog.css +2 -2
  35. data/vendor/assets/stylesheets/codemirror/themes/monokai.css +1 -0
  36. data/vendor/assets/stylesheets/codemirror/themes/ttcn.css +66 -0
  37. metadata +8 -7
  38. data/vendor/assets/javascripts/codemirror/addons/mode/multiplex_test.js +0 -33
  39. data/vendor/assets/javascripts/codemirror/modes/less_test.js +0 -54
  40. data/vendor/assets/javascripts/codemirror/modes/scss_test.js +0 -110
  41. data/vendor/assets/javascripts/codemirror/modes/test.js +0 -67
@@ -0,0 +1,283 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/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("ttcn", function(config, parserConfig) {
15
+ var indentUnit = config.indentUnit,
16
+ keywords = parserConfig.keywords || {},
17
+ builtin = parserConfig.builtin || {},
18
+ timerOps = parserConfig.timerOps || {},
19
+ portOps = parserConfig.portOps || {},
20
+ configOps = parserConfig.configOps || {},
21
+ verdictOps = parserConfig.verdictOps || {},
22
+ sutOps = parserConfig.sutOps || {},
23
+ functionOps = parserConfig.functionOps || {},
24
+
25
+ verdictConsts = parserConfig.verdictConsts || {},
26
+ booleanConsts = parserConfig.booleanConsts || {},
27
+ otherConsts = parserConfig.otherConsts || {},
28
+
29
+ types = parserConfig.types || {},
30
+ visibilityModifiers = parserConfig.visibilityModifiers || {},
31
+ templateMatch = parserConfig.templateMatch || {},
32
+ multiLineStrings = parserConfig.multiLineStrings,
33
+ indentStatements = parserConfig.indentStatements !== false;
34
+ var isOperatorChar = /[+\-*&@=<>!\/]/;
35
+ var curPunc;
36
+
37
+ function tokenBase(stream, state) {
38
+ var ch = stream.next();
39
+
40
+ if (ch == '"' || ch == "'") {
41
+ state.tokenize = tokenString(ch);
42
+ return state.tokenize(stream, state);
43
+ }
44
+ if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) {
45
+ curPunc = ch;
46
+ return "punctuation";
47
+ }
48
+ if (ch == "#"){
49
+ stream.skipToEnd();
50
+ return "atom preprocessor";
51
+ }
52
+ if (ch == "%"){
53
+ stream.eatWhile(/\b/);
54
+ return "atom ttcn3Macros";
55
+ }
56
+ if (/\d/.test(ch)) {
57
+ stream.eatWhile(/[\w\.]/);
58
+ return "number";
59
+ }
60
+ if (ch == "/") {
61
+ if (stream.eat("*")) {
62
+ state.tokenize = tokenComment;
63
+ return tokenComment(stream, state);
64
+ }
65
+ if (stream.eat("/")) {
66
+ stream.skipToEnd();
67
+ return "comment";
68
+ }
69
+ }
70
+ if (isOperatorChar.test(ch)) {
71
+ if(ch == "@"){
72
+ if(stream.match("try") || stream.match("catch")
73
+ || stream.match("lazy")){
74
+ return "keyword";
75
+ }
76
+ }
77
+ stream.eatWhile(isOperatorChar);
78
+ return "operator";
79
+ }
80
+ stream.eatWhile(/[\w\$_\xa1-\uffff]/);
81
+ var cur = stream.current();
82
+
83
+ if (keywords.propertyIsEnumerable(cur)) return "keyword";
84
+ if (builtin.propertyIsEnumerable(cur)) return "builtin";
85
+
86
+ if (timerOps.propertyIsEnumerable(cur)) return "def timerOps";
87
+ if (configOps.propertyIsEnumerable(cur)) return "def configOps";
88
+ if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps";
89
+ if (portOps.propertyIsEnumerable(cur)) return "def portOps";
90
+ if (sutOps.propertyIsEnumerable(cur)) return "def sutOps";
91
+ if (functionOps.propertyIsEnumerable(cur)) return "def functionOps";
92
+
93
+ if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts";
94
+ if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts";
95
+ if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts";
96
+
97
+ if (types.propertyIsEnumerable(cur)) return "builtin types";
98
+ if (visibilityModifiers.propertyIsEnumerable(cur))
99
+ return "builtin visibilityModifiers";
100
+ if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch";
101
+
102
+ return "variable";
103
+ }
104
+
105
+ function tokenString(quote) {
106
+ return function(stream, state) {
107
+ var escaped = false, next, end = false;
108
+ while ((next = stream.next()) != null) {
109
+ if (next == quote && !escaped){
110
+ var afterQuote = stream.peek();
111
+ //look if the character after the quote is like the B in '10100010'B
112
+ if (afterQuote){
113
+ afterQuote = afterQuote.toLowerCase();
114
+ if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o")
115
+ stream.next();
116
+ }
117
+ end = true; break;
118
+ }
119
+ escaped = !escaped && next == "\\";
120
+ }
121
+ if (end || !(escaped || multiLineStrings))
122
+ state.tokenize = null;
123
+ return "string";
124
+ };
125
+ }
126
+
127
+ function tokenComment(stream, state) {
128
+ var maybeEnd = false, ch;
129
+ while (ch = stream.next()) {
130
+ if (ch == "/" && maybeEnd) {
131
+ state.tokenize = null;
132
+ break;
133
+ }
134
+ maybeEnd = (ch == "*");
135
+ }
136
+ return "comment";
137
+ }
138
+
139
+ function Context(indented, column, type, align, prev) {
140
+ this.indented = indented;
141
+ this.column = column;
142
+ this.type = type;
143
+ this.align = align;
144
+ this.prev = prev;
145
+ }
146
+
147
+ function pushContext(state, col, type) {
148
+ var indent = state.indented;
149
+ if (state.context && state.context.type == "statement")
150
+ indent = state.context.indented;
151
+ return state.context = new Context(indent, col, type, null, state.context);
152
+ }
153
+
154
+ function popContext(state) {
155
+ var t = state.context.type;
156
+ if (t == ")" || t == "]" || t == "}")
157
+ state.indented = state.context.indented;
158
+ return state.context = state.context.prev;
159
+ }
160
+
161
+ //Interface
162
+ return {
163
+ startState: function(basecolumn) {
164
+ return {
165
+ tokenize: null,
166
+ context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
167
+ indented: 0,
168
+ startOfLine: true
169
+ };
170
+ },
171
+
172
+ token: function(stream, state) {
173
+ var ctx = state.context;
174
+ if (stream.sol()) {
175
+ if (ctx.align == null) ctx.align = false;
176
+ state.indented = stream.indentation();
177
+ state.startOfLine = true;
178
+ }
179
+ if (stream.eatSpace()) return null;
180
+ curPunc = null;
181
+ var style = (state.tokenize || tokenBase)(stream, state);
182
+ if (style == "comment") return style;
183
+ if (ctx.align == null) ctx.align = true;
184
+
185
+ if ((curPunc == ";" || curPunc == ":" || curPunc == ",")
186
+ && ctx.type == "statement"){
187
+ popContext(state);
188
+ }
189
+ else if (curPunc == "{") pushContext(state, stream.column(), "}");
190
+ else if (curPunc == "[") pushContext(state, stream.column(), "]");
191
+ else if (curPunc == "(") pushContext(state, stream.column(), ")");
192
+ else if (curPunc == "}") {
193
+ while (ctx.type == "statement") ctx = popContext(state);
194
+ if (ctx.type == "}") ctx = popContext(state);
195
+ while (ctx.type == "statement") ctx = popContext(state);
196
+ }
197
+ else if (curPunc == ctx.type) popContext(state);
198
+ else if (indentStatements &&
199
+ (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') ||
200
+ (ctx.type == "statement" && curPunc == "newstatement")))
201
+ pushContext(state, stream.column(), "statement");
202
+
203
+ state.startOfLine = false;
204
+
205
+ return style;
206
+ },
207
+
208
+ electricChars: "{}",
209
+ blockCommentStart: "/*",
210
+ blockCommentEnd: "*/",
211
+ lineComment: "//",
212
+ fold: "brace"
213
+ };
214
+ });
215
+
216
+ function words(str) {
217
+ var obj = {}, words = str.split(" ");
218
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
219
+ return obj;
220
+ }
221
+
222
+ function def(mimes, mode) {
223
+ if (typeof mimes == "string") mimes = [mimes];
224
+ var words = [];
225
+ function add(obj) {
226
+ if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))
227
+ words.push(prop);
228
+ }
229
+
230
+ add(mode.keywords);
231
+ add(mode.builtin);
232
+ add(mode.timerOps);
233
+ add(mode.portOps);
234
+
235
+ if (words.length) {
236
+ mode.helperType = mimes[0];
237
+ CodeMirror.registerHelper("hintWords", mimes[0], words);
238
+ }
239
+
240
+ for (var i = 0; i < mimes.length; ++i)
241
+ CodeMirror.defineMIME(mimes[i], mode);
242
+ }
243
+
244
+ def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], {
245
+ name: "ttcn",
246
+ keywords: words("activate address alive all alt altstep and and4b any" +
247
+ " break case component const continue control deactivate" +
248
+ " display do else encode enumerated except exception" +
249
+ " execute extends extension external for from function" +
250
+ " goto group if import in infinity inout interleave" +
251
+ " label language length log match message mixed mod" +
252
+ " modifies module modulepar mtc noblock not not4b nowait" +
253
+ " of on optional or or4b out override param pattern port" +
254
+ " procedure record recursive rem repeat return runs select" +
255
+ " self sender set signature system template testcase to" +
256
+ " type union value valueof var variant while with xor xor4b"),
257
+ builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" +
258
+ " decomp decvalue float2int float2str hex2bit hex2int" +
259
+ " hex2oct hex2str int2bit int2char int2float int2hex" +
260
+ " int2oct int2str int2unichar isbound ischosen ispresent" +
261
+ " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" +
262
+ " oct2str regexp replace rnd sizeof str2bit str2float" +
263
+ " str2hex str2int str2oct substr unichar2int unichar2char" +
264
+ " enum2int"),
265
+ types: words("anytype bitstring boolean char charstring default float" +
266
+ " hexstring integer objid octetstring universal verdicttype timer"),
267
+ timerOps: words("read running start stop timeout"),
268
+ portOps: words("call catch check clear getcall getreply halt raise receive" +
269
+ " reply send trigger"),
270
+ configOps: words("create connect disconnect done kill killed map unmap"),
271
+ verdictOps: words("getverdict setverdict"),
272
+ sutOps: words("action"),
273
+ functionOps: words("apply derefers refers"),
274
+
275
+ verdictConsts: words("error fail inconc none pass"),
276
+ booleanConsts: words("true false"),
277
+ otherConsts: words("null NULL omit"),
278
+
279
+ visibilityModifiers: words("private public friend"),
280
+ templateMatch: words("complement ifpresent subset superset permutation"),
281
+ multiLineStrings: true
282
+ });
283
+ });
@@ -68,15 +68,6 @@ CodeMirror.defineMode("xquery", function() {
68
68
  return kwObj;
69
69
  }();
70
70
 
71
- // Used as scratch variables to communicate multiple values without
72
- // consing up tons of objects.
73
- var type, content;
74
-
75
- function ret(tp, style, cont) {
76
- type = tp; content = cont;
77
- return style;
78
- }
79
-
80
71
  function chain(stream, state, f) {
81
72
  state.tokenize = f;
82
73
  return f(stream, state);
@@ -95,7 +86,7 @@ CodeMirror.defineMode("xquery", function() {
95
86
 
96
87
  if(stream.match("![CDATA", false)) {
97
88
  state.tokenize = tokenCDATA;
98
- return ret("tag", "tag");
89
+ return "tag";
99
90
  }
100
91
 
101
92
  if(stream.match("?", false)) {
@@ -112,28 +103,28 @@ CodeMirror.defineMode("xquery", function() {
112
103
  // start code block
113
104
  else if(ch == "{") {
114
105
  pushStateStack(state,{ type: "codeblock"});
115
- return ret("", null);
106
+ return null;
116
107
  }
117
108
  // end code block
118
109
  else if(ch == "}") {
119
110
  popStateStack(state);
120
- return ret("", null);
111
+ return null;
121
112
  }
122
113
  // if we're in an XML block
123
114
  else if(isInXmlBlock(state)) {
124
115
  if(ch == ">")
125
- return ret("tag", "tag");
116
+ return "tag";
126
117
  else if(ch == "/" && stream.eat(">")) {
127
118
  popStateStack(state);
128
- return ret("tag", "tag");
119
+ return "tag";
129
120
  }
130
121
  else
131
- return ret("word", "variable");
122
+ return "variable";
132
123
  }
133
124
  // if a number
134
125
  else if (/\d/.test(ch)) {
135
126
  stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/);
136
- return ret("number", "atom");
127
+ return "atom";
137
128
  }
138
129
  // comment start
139
130
  else if (ch === "(" && stream.eat(":")) {
@@ -149,27 +140,27 @@ CodeMirror.defineMode("xquery", function() {
149
140
  }
150
141
  // assignment
151
142
  else if(ch ===":" && stream.eat("=")) {
152
- return ret("operator", "keyword");
143
+ return "keyword";
153
144
  }
154
145
  // open paren
155
146
  else if(ch === "(") {
156
147
  pushStateStack(state, { type: "paren"});
157
- return ret("", null);
148
+ return null;
158
149
  }
159
150
  // close paren
160
151
  else if(ch === ")") {
161
152
  popStateStack(state);
162
- return ret("", null);
153
+ return null;
163
154
  }
164
155
  // open paren
165
156
  else if(ch === "[") {
166
157
  pushStateStack(state, { type: "bracket"});
167
- return ret("", null);
158
+ return null;
168
159
  }
169
160
  // close paren
170
161
  else if(ch === "]") {
171
162
  popStateStack(state);
172
- return ret("", null);
163
+ return null;
173
164
  }
174
165
  else {
175
166
  var known = keywords.propertyIsEnumerable(ch) && keywords[ch];
@@ -204,15 +195,14 @@ CodeMirror.defineMode("xquery", function() {
204
195
  // if the previous word was element, attribute, axis specifier, this word should be the name of that
205
196
  if(isInXmlConstructor(state)) {
206
197
  popStateStack(state);
207
- return ret("word", "variable", word);
198
+ return "variable";
208
199
  }
209
200
  // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
210
201
  // push the stack so we know to look for it on the next word
211
202
  if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"});
212
203
 
213
204
  // if the word is known, return the details of that else just call this a generic 'word'
214
- return known ? ret(known.type, known.style, word) :
215
- ret("word", "variable", word);
205
+ return known ? known.style : "variable";
216
206
  }
217
207
  }
218
208
 
@@ -235,7 +225,7 @@ CodeMirror.defineMode("xquery", function() {
235
225
  maybeNested = (ch == "(");
236
226
  }
237
227
 
238
- return ret("comment", "comment");
228
+ return "comment";
239
229
  }
240
230
 
241
231
  // tokenizer for string literals
@@ -247,7 +237,7 @@ CodeMirror.defineMode("xquery", function() {
247
237
  if(isInString(state) && stream.current() == quote) {
248
238
  popStateStack(state);
249
239
  if(f) state.tokenize = f;
250
- return ret("string", "string");
240
+ return "string";
251
241
  }
252
242
 
253
243
  pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) });
@@ -255,7 +245,7 @@ CodeMirror.defineMode("xquery", function() {
255
245
  // if we're in a string and in an XML block, allow an embedded code block
256
246
  if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
257
247
  state.tokenize = tokenBase;
258
- return ret("string", "string");
248
+ return "string";
259
249
  }
260
250
 
261
251
 
@@ -269,13 +259,13 @@ CodeMirror.defineMode("xquery", function() {
269
259
  // if we're in a string and in an XML block, allow an embedded code block in an attribute
270
260
  if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
271
261
  state.tokenize = tokenBase;
272
- return ret("string", "string");
262
+ return "string";
273
263
  }
274
264
 
275
265
  }
276
266
  }
277
267
 
278
- return ret("string", "string");
268
+ return "string";
279
269
  };
280
270
  }
281
271
 
@@ -293,7 +283,7 @@ CodeMirror.defineMode("xquery", function() {
293
283
  }
294
284
  stream.eatWhile(isVariableChar);
295
285
  state.tokenize = tokenBase;
296
- return ret("variable", "variable");
286
+ return "variable";
297
287
  }
298
288
 
299
289
  // tokenizer for XML tags
@@ -303,19 +293,19 @@ CodeMirror.defineMode("xquery", function() {
303
293
  if(isclose && stream.eat(">")) {
304
294
  popStateStack(state);
305
295
  state.tokenize = tokenBase;
306
- return ret("tag", "tag");
296
+ return "tag";
307
297
  }
308
298
  // self closing tag without attributes?
309
299
  if(!stream.eat("/"))
310
300
  pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase});
311
301
  if(!stream.eat(">")) {
312
302
  state.tokenize = tokenAttribute;
313
- return ret("tag", "tag");
303
+ return "tag";
314
304
  }
315
305
  else {
316
306
  state.tokenize = tokenBase;
317
307
  }
318
- return ret("tag", "tag");
308
+ return "tag";
319
309
  };
320
310
  }
321
311
 
@@ -326,14 +316,14 @@ CodeMirror.defineMode("xquery", function() {
326
316
  if(ch == "/" && stream.eat(">")) {
327
317
  if(isInXmlAttributeBlock(state)) popStateStack(state);
328
318
  if(isInXmlBlock(state)) popStateStack(state);
329
- return ret("tag", "tag");
319
+ return "tag";
330
320
  }
331
321
  if(ch == ">") {
332
322
  if(isInXmlAttributeBlock(state)) popStateStack(state);
333
- return ret("tag", "tag");
323
+ return "tag";
334
324
  }
335
325
  if(ch == "=")
336
- return ret("", null);
326
+ return null;
337
327
  // quoted string
338
328
  if (ch == '"' || ch == "'")
339
329
  return chain(stream, state, tokenString(ch, tokenAttribute));
@@ -351,7 +341,7 @@ CodeMirror.defineMode("xquery", function() {
351
341
  state.tokenize = tokenBase;
352
342
  }
353
343
 
354
- return ret("attribute", "attribute");
344
+ return "attribute";
355
345
  }
356
346
 
357
347
  // handle comments, including nested
@@ -360,7 +350,7 @@ CodeMirror.defineMode("xquery", function() {
360
350
  while (ch = stream.next()) {
361
351
  if (ch == "-" && stream.match("->", true)) {
362
352
  state.tokenize = tokenBase;
363
- return ret("comment", "comment");
353
+ return "comment";
364
354
  }
365
355
  }
366
356
  }
@@ -372,7 +362,7 @@ CodeMirror.defineMode("xquery", function() {
372
362
  while (ch = stream.next()) {
373
363
  if (ch == "]" && stream.match("]", true)) {
374
364
  state.tokenize = tokenBase;
375
- return ret("comment", "comment");
365
+ return "comment";
376
366
  }
377
367
  }
378
368
  }
@@ -383,7 +373,7 @@ CodeMirror.defineMode("xquery", function() {
383
373
  while (ch = stream.next()) {
384
374
  if (ch == "?" && stream.match(">", true)) {
385
375
  state.tokenize = tokenBase;
386
- return ret("comment", "comment meta");
376
+ return "comment meta";
387
377
  }
388
378
  }
389
379
  }