codemirror-rails 2.32 → 2.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/codemirror-rails.gemspec +1 -1
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +355 -349
  4. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +6 -5
  5. data/vendor/assets/javascripts/codemirror/modes/clike.js +6 -2
  6. data/vendor/assets/javascripts/codemirror/modes/clojure.js +1 -1
  7. data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +3 -3
  8. data/vendor/assets/javascripts/codemirror/modes/css.js +52 -2
  9. data/vendor/assets/javascripts/codemirror/modes/ecl.js +1 -1
  10. data/vendor/assets/javascripts/codemirror/modes/gfm.js +4 -3
  11. data/vendor/assets/javascripts/codemirror/modes/go.js +2 -2
  12. data/vendor/assets/javascripts/codemirror/modes/groovy.js +1 -1
  13. data/vendor/assets/javascripts/codemirror/modes/haskell.js +2 -2
  14. data/vendor/assets/javascripts/codemirror/modes/haxe.js +4 -4
  15. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +3 -3
  16. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +1 -1
  17. data/vendor/assets/javascripts/codemirror/modes/javascript.js +2 -2
  18. data/vendor/assets/javascripts/codemirror/modes/less.js +94 -60
  19. data/vendor/assets/javascripts/codemirror/modes/markdown.js +4 -4
  20. data/vendor/assets/javascripts/codemirror/modes/ntriples.js +4 -4
  21. data/vendor/assets/javascripts/codemirror/modes/ocaml.js +1 -1
  22. data/vendor/assets/javascripts/codemirror/modes/pascal.js +1 -1
  23. data/vendor/assets/javascripts/codemirror/modes/perl.js +71 -71
  24. data/vendor/assets/javascripts/codemirror/modes/php.js +3 -3
  25. data/vendor/assets/javascripts/codemirror/modes/pig.js +3 -3
  26. data/vendor/assets/javascripts/codemirror/modes/python.js +1 -1
  27. data/vendor/assets/javascripts/codemirror/modes/scheme.js +1 -1
  28. data/vendor/assets/javascripts/codemirror/modes/shell.js +1 -1
  29. data/vendor/assets/javascripts/codemirror/modes/sieve.js +156 -0
  30. data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +2 -2
  31. data/vendor/assets/javascripts/codemirror/modes/smarty.js +2 -2
  32. data/vendor/assets/javascripts/codemirror/modes/stex.js +1 -1
  33. data/vendor/assets/javascripts/codemirror/modes/tiki.js +4 -4
  34. data/vendor/assets/javascripts/codemirror/modes/velocity.js +1 -1
  35. data/vendor/assets/javascripts/codemirror/modes/verilog.js +1 -1
  36. data/vendor/assets/javascripts/codemirror/modes/xml.js +2 -2
  37. data/vendor/assets/javascripts/codemirror/modes/xquery.js +7 -4
  38. data/vendor/assets/javascripts/codemirror/utils/dialog.js +4 -1
  39. data/vendor/assets/javascripts/codemirror/utils/formatting.js +1 -1
  40. data/vendor/assets/javascripts/codemirror/utils/javascript-hint.js +3 -3
  41. data/vendor/assets/javascripts/codemirror/utils/loadmode.js +1 -1
  42. data/vendor/assets/javascripts/codemirror/utils/multiplex.js +1 -1
  43. data/vendor/assets/javascripts/codemirror/utils/pig-hint.js +1 -1
  44. data/vendor/assets/javascripts/codemirror/utils/runmode.js +8 -4
  45. data/vendor/assets/javascripts/codemirror/utils/search.js +4 -4
  46. data/vendor/assets/javascripts/codemirror/utils/searchcursor.js +13 -11
  47. data/vendor/assets/javascripts/codemirror/utils/simple-hint.js +89 -68
  48. data/vendor/assets/javascripts/codemirror/utils/xml-hint.js +8 -8
  49. data/vendor/assets/stylesheets/codemirror.css +15 -11
  50. metadata +13 -13
@@ -43,7 +43,7 @@
43
43
 
44
44
  CodeMirror.pigHint = function(editor) {
45
45
  return scriptHint(editor, pigKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
46
- }
46
+ };
47
47
 
48
48
  function toTitleCase(str) {
49
49
  return str.replace(/(?:^|\s)\w/g, function(match) {
@@ -1,4 +1,8 @@
1
1
  CodeMirror.runMode = function(string, modespec, callback, options) {
2
+ function esc(str) {
3
+ return str.replace(/[<&]/, function(ch) { return ch == "<" ? "&lt;" : "&amp;"; });
4
+ }
5
+
2
6
  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
3
7
  var isNode = callback.nodeType == 1;
4
8
  var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;
@@ -15,12 +19,12 @@ CodeMirror.runMode = function(string, modespec, callback, options) {
15
19
  for (var pos = 0;;) {
16
20
  var idx = text.indexOf("\t", pos);
17
21
  if (idx == -1) {
18
- escaped += CodeMirror.htmlEscape(text.slice(pos));
22
+ escaped += esc(text.slice(pos));
19
23
  col += text.length - pos;
20
24
  break;
21
25
  } else {
22
26
  col += idx - pos;
23
- escaped += CodeMirror.htmlEscape(text.slice(pos, idx));
27
+ escaped += esc(text.slice(pos, idx));
24
28
  var size = tabSize - col % tabSize;
25
29
  col += size;
26
30
  for (var i = 0; i < size; ++i) escaped += " ";
@@ -29,10 +33,10 @@ CodeMirror.runMode = function(string, modespec, callback, options) {
29
33
  }
30
34
 
31
35
  if (style)
32
- accum.push("<span class=\"cm-" + CodeMirror.htmlEscape(style) + "\">" + escaped + "</span>");
36
+ accum.push("<span class=\"cm-" + esc(style) + "\">" + escaped + "</span>");
33
37
  else
34
38
  accum.push(escaped);
35
- }
39
+ };
36
40
  }
37
41
  var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode);
38
42
  for (var i = 0, e = lines.length; i < e; ++i) {
@@ -40,7 +40,7 @@
40
40
  if (!query || state.query) return;
41
41
  state.query = parseQuery(query);
42
42
  if (cm.lineCount() < 2000) { // This is too expensive on big documents.
43
- for (var cursor = getSearchCursor(cm, query); cursor.findNext();)
43
+ for (var cursor = getSearchCursor(cm, state.query); cursor.findNext();)
44
44
  state.marked.push(cm.markText(cursor.from(), cursor.to(), "CodeMirror-searching"));
45
45
  }
46
46
  state.posFrom = state.posTo = cm.getCursor();
@@ -57,14 +57,14 @@
57
57
  }
58
58
  cm.setSelection(cursor.from(), cursor.to());
59
59
  state.posFrom = cursor.from(); state.posTo = cursor.to();
60
- })}
60
+ });}
61
61
  function clearSearch(cm) {cm.operation(function() {
62
62
  var state = getSearchState(cm);
63
63
  if (!state.query) return;
64
64
  state.query = null;
65
65
  for (var i = 0; i < state.marked.length; ++i) state.marked[i].clear();
66
66
  state.marked.length = 0;
67
- })}
67
+ });}
68
68
 
69
69
  var replaceQueryDialog =
70
70
  'Replace: <input type="text" style="width: 10em"/> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';
@@ -83,7 +83,7 @@
83
83
  cursor.replace(text.replace(/\$(\d)/, function(w, i) {return match[i];}));
84
84
  } else cursor.replace(text);
85
85
  }
86
- })});
86
+ });});
87
87
  } else {
88
88
  clearSearch(cm);
89
89
  var cursor = getSearchCursor(cm, query, cm.getCursor());
@@ -10,30 +10,32 @@
10
10
  // It takes a position and a direction, and returns an object
11
11
  // describing the next occurrence of the query, or null if no
12
12
  // more matches were found.
13
- if (typeof query != "string") // Regexp match
13
+ if (typeof query != "string") { // Regexp match
14
+ if (!query.global) query = new RegExp(query.source, query.ignoreCase ? "ig" : "g");
14
15
  this.matches = function(reverse, pos) {
15
16
  if (reverse) {
16
- var line = cm.getLine(pos.line).slice(0, pos.ch), match = line.match(query), start = 0;
17
+ query.lastIndex = 0;
18
+ var line = cm.getLine(pos.line).slice(0, pos.ch), match = query.exec(line), start = 0;
17
19
  while (match) {
18
- var ind = line.indexOf(match[0]);
19
- start += ind;
20
- line = line.slice(ind + 1);
21
- var newmatch = line.match(query);
20
+ start += match.index;
21
+ line = line.slice(match.index);
22
+ query.lastIndex = 0;
23
+ var newmatch = query.exec(line);
22
24
  if (newmatch) match = newmatch;
23
25
  else break;
24
26
  start++;
25
27
  }
26
- }
27
- else {
28
- var line = cm.getLine(pos.line).slice(pos.ch), match = line.match(query),
29
- start = match && pos.ch + line.indexOf(match[0]);
28
+ } else {
29
+ query.lastIndex = pos.ch;
30
+ var line = cm.getLine(pos.line), match = query.exec(line),
31
+ start = match && match.index;
30
32
  }
31
33
  if (match)
32
34
  return {from: {line: pos.line, ch: start},
33
35
  to: {line: pos.line, ch: start + match[0].length},
34
36
  match: match};
35
37
  };
36
- else { // String query
38
+ } else { // String query
37
39
  if (caseFold) query = query.toLowerCase();
38
40
  var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};
39
41
  var target = query.split("\n");
@@ -1,76 +1,97 @@
1
1
  (function() {
2
- CodeMirror.simpleHint = function(editor, getHints) {
3
- // We want a single cursor position.
4
- if (editor.somethingSelected()) return;
5
- //don't show completion if the token is empty
6
- var tempToken = editor.getTokenAt(editor.getCursor());
7
- if(!(/[\S]/gi.test(tempToken.string))) return;
2
+ CodeMirror.simpleHint = function(editor, getHints, givenOptions) {
3
+ // Determine effective options based on given values and defaults.
4
+ var options = {}, defaults = CodeMirror.simpleHint.defaults;
5
+ for (var opt in defaults)
6
+ if (defaults.hasOwnProperty(opt))
7
+ options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt];
8
+
9
+ function collectHints(previousToken) {
10
+ // We want a single cursor position.
11
+ if (editor.somethingSelected()) return;
8
12
 
9
- var result = getHints(editor);
10
- if (!result || !result.list.length) return;
11
- var completions = result.list;
12
- function insert(str) {
13
- editor.replaceRange(str, result.from, result.to);
14
- }
15
- // When there is only one completion, use it directly.
16
- if (completions.length == 1) {insert(completions[0]); return true;}
13
+ var tempToken = editor.getTokenAt(editor.getCursor());
17
14
 
18
- // Build the select widget
19
- var complete = document.createElement("div");
20
- complete.className = "CodeMirror-completions";
21
- var sel = complete.appendChild(document.createElement("select"));
22
- // Opera doesn't move the selection when pressing up/down in a
23
- // multi-select, but it does properly support the size property on
24
- // single-selects, so no multi-select is necessary.
25
- if (!window.opera) sel.multiple = true;
26
- for (var i = 0; i < completions.length; ++i) {
27
- var opt = sel.appendChild(document.createElement("option"));
28
- opt.appendChild(document.createTextNode(completions[i]));
29
- }
30
- sel.firstChild.selected = true;
31
- sel.size = Math.min(10, completions.length);
32
- var pos = editor.cursorCoords();
33
- complete.style.left = pos.x + "px";
34
- complete.style.top = pos.yBot + "px";
35
- document.body.appendChild(complete);
36
- // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
37
- var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
38
- if(winW - pos.x < sel.clientWidth)
39
- complete.style.left = (pos.x - sel.clientWidth) + "px";
40
- // Hack to hide the scrollbar.
41
- if (completions.length <= 10)
42
- complete.style.width = (sel.clientWidth - 1) + "px";
15
+ // Don't show completions if token has changed and the option is set.
16
+ if (options.closeOnTokenChange && previousToken != null &&
17
+ (tempToken.start != previousToken.start || tempToken.className != previousToken.className)) {
18
+ return;
19
+ }
43
20
 
44
- var done = false;
45
- function close() {
46
- if (done) return;
47
- done = true;
48
- complete.parentNode.removeChild(complete);
49
- }
50
- function pick() {
51
- insert(completions[sel.selectedIndex]);
52
- close();
53
- setTimeout(function(){editor.focus();}, 50);
54
- }
55
- CodeMirror.connect(sel, "blur", close);
56
- CodeMirror.connect(sel, "keydown", function(event) {
57
- var code = event.keyCode;
58
- // Enter
59
- if (code == 13) {CodeMirror.e_stop(event); pick();}
60
- // Escape
61
- else if (code == 27) {CodeMirror.e_stop(event); close(); editor.focus();}
62
- else if (code != 38 && code != 40) {
63
- close(); editor.focus();
64
- // Pass the event to the CodeMirror instance so that it can handle things like backspace properly.
65
- editor.triggerOnKeyDown(event);
66
- setTimeout(function(){CodeMirror.simpleHint(editor, getHints);}, 50);
21
+ var result = getHints(editor);
22
+ if (!result || !result.list.length) return;
23
+ var completions = result.list;
24
+ function insert(str) {
25
+ editor.replaceRange(str, result.from, result.to);
26
+ }
27
+ // When there is only one completion, use it directly.
28
+ if (completions.length == 1) {insert(completions[0]); return true;}
29
+
30
+ // Build the select widget
31
+ var complete = document.createElement("div");
32
+ complete.className = "CodeMirror-completions";
33
+ var sel = complete.appendChild(document.createElement("select"));
34
+ // Opera doesn't move the selection when pressing up/down in a
35
+ // multi-select, but it does properly support the size property on
36
+ // single-selects, so no multi-select is necessary.
37
+ if (!window.opera) sel.multiple = true;
38
+ for (var i = 0; i < completions.length; ++i) {
39
+ var opt = sel.appendChild(document.createElement("option"));
40
+ opt.appendChild(document.createTextNode(completions[i]));
41
+ }
42
+ sel.firstChild.selected = true;
43
+ sel.size = Math.min(10, completions.length);
44
+ var pos = editor.cursorCoords();
45
+ complete.style.left = pos.x + "px";
46
+ complete.style.top = pos.yBot + "px";
47
+ document.body.appendChild(complete);
48
+ // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
49
+ var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
50
+ if(winW - pos.x < sel.clientWidth)
51
+ complete.style.left = (pos.x - sel.clientWidth) + "px";
52
+ // Hack to hide the scrollbar.
53
+ if (completions.length <= 10)
54
+ complete.style.width = (sel.clientWidth - 1) + "px";
55
+
56
+ var done = false;
57
+ function close() {
58
+ if (done) return;
59
+ done = true;
60
+ complete.parentNode.removeChild(complete);
67
61
  }
68
- });
69
- CodeMirror.connect(sel, "dblclick", pick);
62
+ function pick() {
63
+ insert(completions[sel.selectedIndex]);
64
+ close();
65
+ setTimeout(function(){editor.focus();}, 50);
66
+ }
67
+ CodeMirror.connect(sel, "blur", close);
68
+ CodeMirror.connect(sel, "keydown", function(event) {
69
+ var code = event.keyCode;
70
+ // Enter
71
+ if (code == 13) {CodeMirror.e_stop(event); pick();}
72
+ // Escape
73
+ else if (code == 27) {CodeMirror.e_stop(event); close(); editor.focus();}
74
+ else if (code != 38 && code != 40) {
75
+ close(); editor.focus();
76
+ // Pass the event to the CodeMirror instance so that it can handle things like backspace properly.
77
+ editor.triggerOnKeyDown(event);
78
+ // Don't show completions if the code is backspace and the option is set.
79
+ if (!options.closeOnBackspace || code != 8) {
80
+ setTimeout(function(){collectHints(tempToken);}, 50);
81
+ }
82
+ }
83
+ });
84
+ CodeMirror.connect(sel, "dblclick", pick);
70
85
 
71
- sel.focus();
72
- // Opera sometimes ignores focusing a freshly created node
73
- if (window.opera) setTimeout(function(){if (!done) sel.focus();}, 100);
74
- return true;
86
+ sel.focus();
87
+ // Opera sometimes ignores focusing a freshly created node
88
+ if (window.opera) setTimeout(function(){if (!done) sel.focus();}, 100);
89
+ return true;
90
+ }
91
+ return collectHints();
92
+ };
93
+ CodeMirror.simpleHint.defaults = {
94
+ closeOnBackspace: true,
95
+ closeOnTokenChange: false
75
96
  };
76
97
  })();
@@ -1,4 +1,4 @@
1
- 
1
+
2
2
  (function() {
3
3
 
4
4
  CodeMirror.xmlHints = [];
@@ -15,7 +15,7 @@
15
15
  // dirty hack for simple-hint to receive getHint event on space
16
16
  var getTokenAt = editor.getTokenAt;
17
17
 
18
- editor.getTokenAt = function() { return 'disabled'; }
18
+ editor.getTokenAt = function() { return 'disabled'; };
19
19
  CodeMirror.simpleHint(cm, getHint);
20
20
 
21
21
  editor.getTokenAt = getTokenAt;
@@ -40,7 +40,7 @@
40
40
  }
41
41
  }
42
42
 
43
- text = text.substr(0, text.length - typed.length);
43
+ text = text.slice(0, text.length - typed.length);
44
44
 
45
45
  var path = getActiveElement(cm, text) + simbol;
46
46
  var hints = CodeMirror.xmlHints[path];
@@ -58,10 +58,10 @@
58
58
  return {
59
59
  list: hints,
60
60
  from: { line: cursor.line, ch: cursor.ch - typed.length },
61
- to: cursor,
61
+ to: cursor
62
62
  };
63
63
  };
64
- }
64
+ };
65
65
 
66
66
  var getActiveElement = function(codeMirror, text) {
67
67
 
@@ -76,7 +76,7 @@
76
76
  while ((match = regex.exec(text)) != null) {
77
77
  matches.push({
78
78
  tag: match[1],
79
- selfclose: (match[0].substr(-1) === '/>')
79
+ selfclose: (match[0].slice(match[0].length - 2) === '/>')
80
80
  });
81
81
  }
82
82
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  if (close < open)
116
116
  {
117
- text = text.substr(open);
117
+ text = text.slice(open);
118
118
 
119
119
  if(text != '<') {
120
120
 
@@ -127,7 +127,7 @@
127
127
  if (space < 0)
128
128
  space = text.length;
129
129
 
130
- return text.substr(0, space);
130
+ return text.slice(0, space);
131
131
  }
132
132
  }
133
133
 
@@ -9,8 +9,7 @@
9
9
  }
10
10
 
11
11
  .CodeMirror-scroll {
12
- overflow-x: auto;
13
- overflow-y: hidden;
12
+ overflow: auto;
14
13
  height: 300px;
15
14
  /* This is needed to prevent an IE[67] bug where the scrolled content
16
15
  is visible outside of the scrolling box. */
@@ -20,13 +19,11 @@
20
19
 
21
20
  /* Vertical scrollbar */
22
21
  .CodeMirror-scrollbar {
23
- float: right;
22
+ position: absolute;
23
+ right: 0; top: 0;
24
24
  overflow-x: hidden;
25
25
  overflow-y: scroll;
26
-
27
- /* This corrects for the 1px gap introduced to the left of the scrollbar
28
- by the rule for .CodeMirror-scrollbar-inner. */
29
- margin-left: -1px;
26
+ z-index: 5;
30
27
  }
31
28
  .CodeMirror-scrollbar-inner {
32
29
  /* This needs to have a nonzero width in order for the scrollbar to appear
@@ -69,10 +66,6 @@
69
66
  white-space: pre;
70
67
  cursor: text;
71
68
  }
72
- .CodeMirror-lines * {
73
- /* Necessary for throw-scrolling to decelerate properly on Safari. */
74
- pointer-events: none;
75
- }
76
69
 
77
70
  .CodeMirror pre {
78
71
  -moz-border-radius: 0;
@@ -165,5 +158,16 @@ span.cm-em {font-style: italic;}
165
158
  span.cm-emstrong {font-style: italic; font-weight: bold;}
166
159
  span.cm-link {text-decoration: underline;}
167
160
 
161
+ span.cm-invalidchar {color: #f00;}
162
+
168
163
  div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
169
164
  div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
165
+
166
+ @media print {
167
+
168
+ /* Hide the cursor when printing */
169
+ .CodeMirror pre.CodeMirror-cursor {
170
+ visibility: hidden;
171
+ }
172
+
173
+ }
metadata CHANGED
@@ -1,20 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codemirror-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.32'
4
+ version: '2.33'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nathan Fixler
9
- - Robin Bühler
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-07-24 00:00:00.000000000Z
12
+ date: 2012-08-25 00:00:00.000000000Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: railties
17
- requirement: &2156136620 !ruby/object:Gem::Requirement
16
+ requirement: &2165662860 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: '3.0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2156136620
24
+ version_requirements: *2165662860
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: rails
28
- requirement: &2156135060 !ruby/object:Gem::Requirement
27
+ requirement: &2165662340 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: '3.0'
34
33
  type: :development
35
34
  prerelease: false
36
- version_requirements: *2156135060
35
+ version_requirements: *2165662340
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: sqlite3
39
- requirement: &2156118340 !ruby/object:Gem::Requirement
38
+ requirement: &2165661960 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ! '>='
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: '0'
45
44
  type: :development
46
45
  prerelease: false
47
- version_requirements: *2156118340
46
+ version_requirements: *2165661960
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: minitest
50
- requirement: &2156117080 !ruby/object:Gem::Requirement
49
+ requirement: &2165661320 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ! '>='
@@ -55,10 +54,10 @@ dependencies:
55
54
  version: '0'
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *2156117080
57
+ version_requirements: *2165661320
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: capybara
61
- requirement: &2156116060 !ruby/object:Gem::Requirement
60
+ requirement: &2165645620 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ! '>='
@@ -66,7 +65,7 @@ dependencies:
66
65
  version: '0'
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *2156116060
68
+ version_requirements: *2165645620
70
69
  description: This gem provides CodeMirror assets for your Rails 3 application.
71
70
  email: nathan@fixler.org
72
71
  executables: []
@@ -165,6 +164,7 @@ files:
165
164
  - vendor/assets/javascripts/codemirror/modes/rust.js
166
165
  - vendor/assets/javascripts/codemirror/modes/scheme.js
167
166
  - vendor/assets/javascripts/codemirror/modes/shell.js
167
+ - vendor/assets/javascripts/codemirror/modes/sieve.js
168
168
  - vendor/assets/javascripts/codemirror/modes/smalltalk.js
169
169
  - vendor/assets/javascripts/codemirror/modes/smarty.js
170
170
  - vendor/assets/javascripts/codemirror/modes/sparql.js