codemirror-rails 3.02 → 3.12

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 (109) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +1 -1
  3. data/LICENSE +1 -1
  4. data/codemirror-rails.gemspec +1 -0
  5. data/doc/CodeMirror-LICENSE +5 -1
  6. data/lib/codemirror/rails/version.rb +2 -2
  7. data/vendor/assets/javascripts/codemirror/{utils → addons/dialog}/dialog.js +4 -0
  8. data/vendor/assets/javascripts/codemirror/addons/display/placeholder.js +54 -0
  9. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +54 -0
  10. data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/closetag.js +9 -8
  11. data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/continuecomment.js +12 -4
  12. data/vendor/assets/javascripts/codemirror/addons/edit/continuelist.js +25 -0
  13. data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/matchbrackets.js +30 -11
  14. data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +31 -0
  15. data/vendor/assets/javascripts/codemirror/addons/fold/foldcode.js +32 -0
  16. data/vendor/assets/javascripts/codemirror/addons/fold/indent-fold.js +11 -0
  17. data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +64 -0
  18. data/vendor/assets/javascripts/codemirror/addons/hint/html-hint.js +582 -0
  19. data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/javascript-hint.js +15 -11
  20. data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/pig-hint.js +19 -19
  21. data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/python-hint.js +2 -2
  22. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +180 -0
  23. data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/xml-hint.js +5 -18
  24. data/vendor/assets/javascripts/codemirror/addons/lint/javascript-lint.js +127 -0
  25. data/vendor/assets/javascripts/codemirror/addons/lint/json-lint.js +14 -0
  26. data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +197 -0
  27. data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/loadmode.js +0 -0
  28. data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/multiplex.js +2 -2
  29. data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/overlay.js +2 -2
  30. data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/colorize.js +0 -0
  31. data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/runmode-standalone.js +2 -3
  32. data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/runmode.js +0 -0
  33. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.node.js +89 -0
  34. data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +60 -0
  35. data/vendor/assets/javascripts/codemirror/{utils → addons/search}/search.js +5 -5
  36. data/vendor/assets/javascripts/codemirror/{utils → addons/search}/searchcursor.js +37 -30
  37. data/vendor/assets/javascripts/codemirror/addons/selection/active-line.js +39 -0
  38. data/vendor/assets/javascripts/codemirror/addons/selection/mark-selection.js +34 -0
  39. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +721 -188
  40. data/vendor/assets/javascripts/codemirror/modes/asterisk.js +6 -6
  41. data/vendor/assets/javascripts/codemirror/modes/clike.js +14 -14
  42. data/vendor/assets/javascripts/codemirror/modes/clojure.js +23 -7
  43. data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +2 -2
  44. data/vendor/assets/javascripts/codemirror/modes/css.js +337 -235
  45. data/vendor/assets/javascripts/codemirror/modes/ecl.js +12 -12
  46. data/vendor/assets/javascripts/codemirror/modes/erlang.js +1 -1
  47. data/vendor/assets/javascripts/codemirror/modes/gas.js +326 -0
  48. data/vendor/assets/javascripts/codemirror/modes/gfm.js +1 -0
  49. data/vendor/assets/javascripts/codemirror/modes/haskell.js +26 -26
  50. data/vendor/assets/javascripts/codemirror/modes/haxe.js +17 -17
  51. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +6 -6
  52. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +43 -23
  53. data/vendor/assets/javascripts/codemirror/modes/javascript.js +78 -33
  54. data/vendor/assets/javascripts/codemirror/modes/jinja2.js +2 -2
  55. data/vendor/assets/javascripts/codemirror/modes/less.js +38 -38
  56. data/vendor/assets/javascripts/codemirror/modes/livescript.js +267 -0
  57. data/vendor/assets/javascripts/codemirror/modes/lua.js +7 -7
  58. data/vendor/assets/javascripts/codemirror/modes/markdown.js +108 -57
  59. data/vendor/assets/javascripts/codemirror/modes/mirc.js +177 -0
  60. data/vendor/assets/javascripts/codemirror/modes/ntriples.js +22 -22
  61. data/vendor/assets/javascripts/codemirror/modes/ocaml.js +1 -1
  62. data/vendor/assets/javascripts/codemirror/modes/perl.js +791 -791
  63. data/vendor/assets/javascripts/codemirror/modes/php.js +1 -1
  64. data/vendor/assets/javascripts/codemirror/modes/pig.js +163 -163
  65. data/vendor/assets/javascripts/codemirror/modes/python.js +31 -31
  66. data/vendor/assets/javascripts/codemirror/modes/q.js +124 -0
  67. data/vendor/assets/javascripts/codemirror/modes/rst.js +486 -250
  68. data/vendor/assets/javascripts/codemirror/modes/sass.js +3 -3
  69. data/vendor/assets/javascripts/codemirror/modes/scss_test.js +80 -0
  70. data/vendor/assets/javascripts/codemirror/modes/shell.js +2 -2
  71. data/vendor/assets/javascripts/codemirror/modes/sieve.js +10 -10
  72. data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +129 -129
  73. data/vendor/assets/javascripts/codemirror/modes/smarty.js +3 -3
  74. data/vendor/assets/javascripts/codemirror/modes/sparql.js +1 -1
  75. data/vendor/assets/javascripts/codemirror/modes/sql.js +23 -23
  76. data/vendor/assets/javascripts/codemirror/modes/stex.js +192 -121
  77. data/vendor/assets/javascripts/codemirror/modes/tcl.js +131 -0
  78. data/vendor/assets/javascripts/codemirror/modes/test.js +64 -0
  79. data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +345 -345
  80. data/vendor/assets/javascripts/codemirror/modes/tiki.js +297 -298
  81. data/vendor/assets/javascripts/codemirror/modes/turtle.js +145 -0
  82. data/vendor/assets/javascripts/codemirror/modes/vb.js +31 -32
  83. data/vendor/assets/javascripts/codemirror/modes/vbscript.js +4 -4
  84. data/vendor/assets/javascripts/codemirror/modes/xml.js +10 -6
  85. data/vendor/assets/javascripts/codemirror/modes/xquery.js +55 -55
  86. data/vendor/assets/javascripts/codemirror/modes/yaml.js +90 -90
  87. data/vendor/assets/javascripts/codemirror/modes/z80.js +82 -110
  88. data/vendor/assets/javascripts/codemirror.js +1914 -1115
  89. data/vendor/assets/stylesheets/codemirror/{utils → addons/dialog}/dialog.css +0 -0
  90. data/vendor/assets/stylesheets/codemirror/addons/hint/show-hint.css +38 -0
  91. data/vendor/assets/stylesheets/codemirror/addons/lint/lint.css +96 -0
  92. data/vendor/assets/stylesheets/codemirror/modes/tiki.css +2 -2
  93. data/vendor/assets/stylesheets/codemirror/themes/ambiance-mobile.css +0 -1
  94. data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +0 -1
  95. data/vendor/assets/stylesheets/codemirror/themes/eclipse.css +2 -2
  96. data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +5 -5
  97. data/vendor/assets/stylesheets/codemirror/themes/midnight.css +52 -0
  98. data/vendor/assets/stylesheets/codemirror/themes/xq-light.css +43 -0
  99. data/vendor/assets/stylesheets/codemirror.css +16 -10
  100. metadata +60 -52
  101. data/vendor/assets/javascripts/codemirror/modes/mysql.js +0 -203
  102. data/vendor/assets/javascripts/codemirror/modes/plsql.js +0 -216
  103. data/vendor/assets/javascripts/codemirror/utils/collapserange.js +0 -68
  104. data/vendor/assets/javascripts/codemirror/utils/continuelist.js +0 -28
  105. data/vendor/assets/javascripts/codemirror/utils/foldcode.js +0 -183
  106. data/vendor/assets/javascripts/codemirror/utils/formatting.js +0 -114
  107. data/vendor/assets/javascripts/codemirror/utils/match-highlighter.js +0 -46
  108. data/vendor/assets/javascripts/codemirror/utils/simple-hint.js +0 -102
  109. data/vendor/assets/stylesheets/codemirror/utils/simple-hint.css +0 -16
@@ -35,18 +35,18 @@ CodeMirror.defineMode("xquery", function() {
35
35
  , atom = {type: "atom", style: "atom"}
36
36
  , punctuation = {type: "punctuation", style: null}
37
37
  , qualifier = {type: "axis_specifier", style: "qualifier"};
38
-
38
+
39
39
  // kwObj is what is return from this function at the end
40
40
  var kwObj = {
41
41
  'if': A, 'switch': A, 'while': A, 'for': A,
42
42
  'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B,
43
- 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,
44
- 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,
43
+ 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,
44
+ 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,
45
45
  ',': punctuation,
46
46
  'null': atom, 'fn:false()': atom, 'fn:true()': atom
47
47
  };
48
-
49
- // a list of 'basic' keywords. For each add a property to kwObj with the value of
48
+
49
+ // a list of 'basic' keywords. For each add a property to kwObj with the value of
50
50
  // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"}
51
51
  var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before',
52
52
  'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self',
@@ -57,20 +57,20 @@ CodeMirror.defineMode("xquery", function() {
57
57
  'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where',
58
58
  'xquery', 'empty-sequence'];
59
59
  for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);};
60
-
61
- // a list of types. For each add a property to kwObj with the value of
60
+
61
+ // a list of types. For each add a property to kwObj with the value of
62
62
  // {type: "atom", style: "atom"}
63
- var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',
64
- 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',
63
+ var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',
64
+ 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',
65
65
  'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration'];
66
66
  for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};
67
-
67
+
68
68
  // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"}
69
69
  var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-'];
70
70
  for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;};
71
-
71
+
72
72
  // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"}
73
- var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::",
73
+ var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::",
74
74
  "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"];
75
75
  for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; };
76
76
 
@@ -80,42 +80,42 @@ CodeMirror.defineMode("xquery", function() {
80
80
  // Used as scratch variables to communicate multiple values without
81
81
  // consing up tons of objects.
82
82
  var type, content;
83
-
83
+
84
84
  function ret(tp, style, cont) {
85
85
  type = tp; content = cont;
86
86
  return style;
87
87
  }
88
-
88
+
89
89
  function chain(stream, state, f) {
90
90
  state.tokenize = f;
91
91
  return f(stream, state);
92
92
  }
93
-
93
+
94
94
  // the primary mode tokenizer
95
95
  function tokenBase(stream, state) {
96
- var ch = stream.next(),
96
+ var ch = stream.next(),
97
97
  mightBeFunction = false,
98
98
  isEQName = isEQNameAhead(stream);
99
-
99
+
100
100
  // an XML tag (if not in some sub, chained tokenizer)
101
101
  if (ch == "<") {
102
102
  if(stream.match("!--", true))
103
103
  return chain(stream, state, tokenXMLComment);
104
-
104
+
105
105
  if(stream.match("![CDATA", false)) {
106
106
  state.tokenize = tokenCDATA;
107
107
  return ret("tag", "tag");
108
108
  }
109
-
109
+
110
110
  if(stream.match("?", false)) {
111
111
  return chain(stream, state, tokenPreProcessing);
112
112
  }
113
-
113
+
114
114
  var isclose = stream.eat("/");
115
115
  stream.eatSpace();
116
116
  var tagName = "", c;
117
117
  while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;
118
-
118
+
119
119
  return chain(stream, state, tokenTag(tagName, isclose));
120
120
  }
121
121
  // start code block
@@ -136,7 +136,7 @@ CodeMirror.defineMode("xquery", function() {
136
136
  popStateStack(state);
137
137
  return ret("tag", "tag");
138
138
  }
139
- else
139
+ else
140
140
  return ret("word", "variable");
141
141
  }
142
142
  // if a number
@@ -186,13 +186,13 @@ CodeMirror.defineMode("xquery", function() {
186
186
  // if there's a EQName ahead, consume the rest of the string portion, it's likely a function
187
187
  if(isEQName && ch === '\"') while(stream.next() !== '"'){}
188
188
  if(isEQName && ch === '\'') while(stream.next() !== '\''){}
189
-
189
+
190
190
  // gobble up a word if the character is not known
191
191
  if(!known) stream.eatWhile(/[\w\$_-]/);
192
-
192
+
193
193
  // gobble a colon in the case that is a lib func type call fn:doc
194
194
  var foundColon = stream.eat(":");
195
-
195
+
196
196
  // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier
197
197
  // which should get matched as a keyword
198
198
  if(!stream.eat(":") && foundColon) {
@@ -205,27 +205,27 @@ CodeMirror.defineMode("xquery", function() {
205
205
  // is the word a keyword?
206
206
  var word = stream.current();
207
207
  known = keywords.propertyIsEnumerable(word) && keywords[word];
208
-
209
- // if we think it's a function call but not yet known,
208
+
209
+ // if we think it's a function call but not yet known,
210
210
  // set style to variable for now for lack of something better
211
211
  if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"};
212
-
212
+
213
213
  // if the previous word was element, attribute, axis specifier, this word should be the name of that
214
214
  if(isInXmlConstructor(state)) {
215
215
  popStateStack(state);
216
216
  return ret("word", "variable", word);
217
217
  }
218
- // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
218
+ // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
219
219
  // push the stack so we know to look for it on the next word
220
220
  if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"});
221
-
221
+
222
222
  // if the word is known, return the details of that else just call this a generic 'word'
223
223
  return known ? ret(known.type, known.style, word) :
224
224
  ret("word", "variable", word);
225
225
  }
226
226
  }
227
227
 
228
- // handle comments, including nested
228
+ // handle comments, including nested
229
229
  function tokenComment(stream, state) {
230
230
  var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
231
231
  while (ch = stream.next()) {
@@ -243,7 +243,7 @@ CodeMirror.defineMode("xquery", function() {
243
243
  maybeEnd = (ch == ":");
244
244
  maybeNested = (ch == "(");
245
245
  }
246
-
246
+
247
247
  return ret("comment", "comment");
248
248
  }
249
249
 
@@ -264,10 +264,10 @@ CodeMirror.defineMode("xquery", function() {
264
264
  // if we're in a string and in an XML block, allow an embedded code block
265
265
  if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
266
266
  state.tokenize = tokenBase;
267
- return ret("string", "string");
267
+ return ret("string", "string");
268
268
  }
269
269
 
270
-
270
+
271
271
  while (ch = stream.next()) {
272
272
  if (ch == quote) {
273
273
  popStateStack(state);
@@ -278,16 +278,16 @@ CodeMirror.defineMode("xquery", function() {
278
278
  // if we're in a string and in an XML block, allow an embedded code block in an attribute
279
279
  if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
280
280
  state.tokenize = tokenBase;
281
- return ret("string", "string");
281
+ return ret("string", "string");
282
282
  }
283
283
 
284
284
  }
285
285
  }
286
-
286
+
287
287
  return ret("string", "string");
288
288
  };
289
289
  }
290
-
290
+
291
291
  // tokenizer for variables
292
292
  function tokenVariable(stream, state) {
293
293
  var isVariableChar = /[\w\$_-]/;
@@ -304,7 +304,7 @@ CodeMirror.defineMode("xquery", function() {
304
304
  state.tokenize = tokenBase;
305
305
  return ret("variable", "variable");
306
306
  }
307
-
307
+
308
308
  // tokenizer for XML tags
309
309
  function tokenTag(name, isclose) {
310
310
  return function(stream, state) {
@@ -322,7 +322,7 @@ CodeMirror.defineMode("xquery", function() {
322
322
  return ret("tag", "tag");
323
323
  }
324
324
  else {
325
- state.tokenize = tokenBase;
325
+ state.tokenize = tokenBase;
326
326
  }
327
327
  return ret("tag", "tag");
328
328
  };
@@ -331,7 +331,7 @@ CodeMirror.defineMode("xquery", function() {
331
331
  // tokenizer for XML attributes
332
332
  function tokenAttribute(stream, state) {
333
333
  var ch = stream.next();
334
-
334
+
335
335
  if(ch == "/" && stream.eat(">")) {
336
336
  if(isInXmlAttributeBlock(state)) popStateStack(state);
337
337
  if(isInXmlBlock(state)) popStateStack(state);
@@ -347,7 +347,7 @@ CodeMirror.defineMode("xquery", function() {
347
347
  if (ch == '"' || ch == "'")
348
348
  return chain(stream, state, tokenString(ch, tokenAttribute));
349
349
 
350
- if(!isInXmlAttributeBlock(state))
350
+ if(!isInXmlAttributeBlock(state))
351
351
  pushStateStack(state, { type: "attribute", name: name, tokenize: tokenAttribute});
352
352
 
353
353
  stream.eat(/[a-zA-Z_:]/);
@@ -357,18 +357,18 @@ CodeMirror.defineMode("xquery", function() {
357
357
  // the case where the attribute has not value and the tag was closed
358
358
  if(stream.match(">", false) || stream.match("/", false)) {
359
359
  popStateStack(state);
360
- state.tokenize = tokenBase;
360
+ state.tokenize = tokenBase;
361
361
  }
362
362
 
363
363
  return ret("attribute", "attribute");
364
364
  }
365
-
366
- // handle comments, including nested
365
+
366
+ // handle comments, including nested
367
367
  function tokenXMLComment(stream, state) {
368
368
  var ch;
369
369
  while (ch = stream.next()) {
370
370
  if (ch == "-" && stream.match("->", true)) {
371
- state.tokenize = tokenBase;
371
+ state.tokenize = tokenBase;
372
372
  return ret("comment", "comment");
373
373
  }
374
374
  }
@@ -380,7 +380,7 @@ CodeMirror.defineMode("xquery", function() {
380
380
  var ch;
381
381
  while (ch = stream.next()) {
382
382
  if (ch == "]" && stream.match("]", true)) {
383
- state.tokenize = tokenBase;
383
+ state.tokenize = tokenBase;
384
384
  return ret("comment", "comment");
385
385
  }
386
386
  }
@@ -391,20 +391,20 @@ CodeMirror.defineMode("xquery", function() {
391
391
  var ch;
392
392
  while (ch = stream.next()) {
393
393
  if (ch == "?" && stream.match(">", true)) {
394
- state.tokenize = tokenBase;
394
+ state.tokenize = tokenBase;
395
395
  return ret("comment", "comment meta");
396
396
  }
397
397
  }
398
398
  }
399
-
400
-
399
+
400
+
401
401
  // functions to test the current context of the state
402
402
  function isInXmlBlock(state) { return isIn(state, "tag"); }
403
403
  function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
404
404
  function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); }
405
405
  function isInString(state) { return isIn(state, "string"); }
406
406
 
407
- function isEQNameAhead(stream) {
407
+ function isEQNameAhead(stream) {
408
408
  // assume we've already eaten a quote (")
409
409
  if(stream.current() === '"')
410
410
  return stream.match(/^[^\"]+\"\:/, false);
@@ -413,21 +413,21 @@ CodeMirror.defineMode("xquery", function() {
413
413
  else
414
414
  return false;
415
415
  }
416
-
416
+
417
417
  function isIn(state, type) {
418
- return (state.stack.length && state.stack[state.stack.length - 1].type == type);
418
+ return (state.stack.length && state.stack[state.stack.length - 1].type == type);
419
419
  }
420
-
420
+
421
421
  function pushStateStack(state, newState) {
422
422
  state.stack.push(newState);
423
423
  }
424
-
424
+
425
425
  function popStateStack(state) {
426
426
  state.stack.pop();
427
427
  var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize;
428
428
  state.tokenize = reinstateTokenize || tokenBase;
429
429
  }
430
-
430
+
431
431
  // the interface for the mode API
432
432
  return {
433
433
  startState: function() {
@@ -1,95 +1,95 @@
1
1
  CodeMirror.defineMode("yaml", function() {
2
-
3
- var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
4
- var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');
5
-
6
- return {
7
- token: function(stream, state) {
8
- var ch = stream.peek();
9
- var esc = state.escaped;
10
- state.escaped = false;
11
- /* comments */
12
- if (ch == "#") { stream.skipToEnd(); return "comment"; }
13
- if (state.literal && stream.indentation() > state.keyCol) {
14
- stream.skipToEnd(); return "string";
15
- } else if (state.literal) { state.literal = false; }
16
- if (stream.sol()) {
17
- state.keyCol = 0;
18
- state.pair = false;
19
- state.pairStart = false;
20
- /* document start */
21
- if(stream.match(/---/)) { return "def"; }
22
- /* document end */
23
- if (stream.match(/\.\.\./)) { return "def"; }
24
- /* array list item */
25
- if (stream.match(/\s*-\s+/)) { return 'meta'; }
26
- }
27
- /* pairs (associative arrays) -> key */
28
- if (!state.pair && stream.match(/^\s*([a-z0-9\._-])+(?=\s*:)/i)) {
29
- state.pair = true;
30
- state.keyCol = stream.indentation();
31
- return "atom";
32
- }
33
- if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
34
-
35
- /* inline pairs/lists */
36
- if (stream.match(/^(\{|\}|\[|\])/)) {
37
- if (ch == '{')
38
- state.inlinePairs++;
39
- else if (ch == '}')
40
- state.inlinePairs--;
41
- else if (ch == '[')
42
- state.inlineList++;
43
- else
44
- state.inlineList--;
45
- return 'meta';
46
- }
47
-
48
- /* list seperator */
49
- if (state.inlineList > 0 && !esc && ch == ',') {
50
- stream.next();
51
- return 'meta';
52
- }
53
- /* pairs seperator */
54
- if (state.inlinePairs > 0 && !esc && ch == ',') {
55
- state.keyCol = 0;
56
- state.pair = false;
57
- state.pairStart = false;
58
- stream.next();
59
- return 'meta';
60
- }
61
-
62
- /* start of value of a pair */
63
- if (state.pairStart) {
64
- /* block literals */
65
- if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
66
- /* references */
67
- if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
68
- /* numbers */
69
- if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
70
- if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
71
- /* keywords */
72
- if (stream.match(keywordRegex)) { return 'keyword'; }
73
- }
74
2
 
75
- /* nothing found, continue */
76
- state.pairStart = false;
77
- state.escaped = (ch == '\\');
78
- stream.next();
79
- return null;
80
- },
81
- startState: function() {
82
- return {
83
- pair: false,
84
- pairStart: false,
85
- keyCol: 0,
86
- inlinePairs: 0,
87
- inlineList: 0,
88
- literal: false,
89
- escaped: false
90
- };
91
- }
92
- };
3
+ var cons = ['true', 'false', 'on', 'off', 'yes', 'no'];
4
+ var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i');
5
+
6
+ return {
7
+ token: function(stream, state) {
8
+ var ch = stream.peek();
9
+ var esc = state.escaped;
10
+ state.escaped = false;
11
+ /* comments */
12
+ if (ch == "#") { stream.skipToEnd(); return "comment"; }
13
+ if (state.literal && stream.indentation() > state.keyCol) {
14
+ stream.skipToEnd(); return "string";
15
+ } else if (state.literal) { state.literal = false; }
16
+ if (stream.sol()) {
17
+ state.keyCol = 0;
18
+ state.pair = false;
19
+ state.pairStart = false;
20
+ /* document start */
21
+ if(stream.match(/---/)) { return "def"; }
22
+ /* document end */
23
+ if (stream.match(/\.\.\./)) { return "def"; }
24
+ /* array list item */
25
+ if (stream.match(/\s*-\s+/)) { return 'meta'; }
26
+ }
27
+ /* pairs (associative arrays) -> key */
28
+ if (!state.pair && stream.match(/^\s*([a-z0-9\._-])+(?=\s*:)/i)) {
29
+ state.pair = true;
30
+ state.keyCol = stream.indentation();
31
+ return "atom";
32
+ }
33
+ if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; }
34
+
35
+ /* inline pairs/lists */
36
+ if (stream.match(/^(\{|\}|\[|\])/)) {
37
+ if (ch == '{')
38
+ state.inlinePairs++;
39
+ else if (ch == '}')
40
+ state.inlinePairs--;
41
+ else if (ch == '[')
42
+ state.inlineList++;
43
+ else
44
+ state.inlineList--;
45
+ return 'meta';
46
+ }
47
+
48
+ /* list seperator */
49
+ if (state.inlineList > 0 && !esc && ch == ',') {
50
+ stream.next();
51
+ return 'meta';
52
+ }
53
+ /* pairs seperator */
54
+ if (state.inlinePairs > 0 && !esc && ch == ',') {
55
+ state.keyCol = 0;
56
+ state.pair = false;
57
+ state.pairStart = false;
58
+ stream.next();
59
+ return 'meta';
60
+ }
61
+
62
+ /* start of value of a pair */
63
+ if (state.pairStart) {
64
+ /* block literals */
65
+ if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; };
66
+ /* references */
67
+ if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; }
68
+ /* numbers */
69
+ if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; }
70
+ if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; }
71
+ /* keywords */
72
+ if (stream.match(keywordRegex)) { return 'keyword'; }
73
+ }
74
+
75
+ /* nothing found, continue */
76
+ state.pairStart = false;
77
+ state.escaped = (ch == '\\');
78
+ stream.next();
79
+ return null;
80
+ },
81
+ startState: function() {
82
+ return {
83
+ pair: false,
84
+ pairStart: false,
85
+ keyCol: 0,
86
+ inlinePairs: 0,
87
+ inlineList: 0,
88
+ literal: false,
89
+ escaped: false
90
+ };
91
+ }
92
+ };
93
93
  });
94
94
 
95
95
  CodeMirror.defineMIME("text/x-yaml", "yaml");