Sha256: 39d04671dff86d18959442163ac5a548448f132c4c0dc1e07e9a5de2b629b222

Contents?: true

Size: 1.95 KB

Versions: 69

Compression:

Stored size: 1.95 KB

Contents

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

CodeMirror.registerGlobalHelper("fold", "comment", function(mode) {
  return mode.blockCommentStart && mode.blockCommentEnd;
}, function(cm, start) {
  var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;
  if (!startToken || !endToken) return;
  var line = start.line, lineText = cm.getLine(line);

  var startCh;
  for (var at = start.ch, pass = 0;;) {
    var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);
    if (found == -1) {
      if (pass == 1) return;
      pass = 1;
      at = lineText.length;
      continue;
    }
    if (pass == 1 && found < start.ch) return;
    if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) {
      startCh = found + startToken.length;
      break;
    }
    at = found - 1;
  }

  var depth = 1, lastLine = cm.lastLine(), end, endCh;
  outer: for (var i = line; i <= lastLine; ++i) {
    var text = cm.getLine(i), pos = i == line ? startCh : 0;
    for (;;) {
      var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);
      if (nextOpen < 0) nextOpen = text.length;
      if (nextClose < 0) nextClose = text.length;
      pos = Math.min(nextOpen, nextClose);
      if (pos == text.length) break;
      if (pos == nextOpen) ++depth;
      else if (!--depth) { end = i; endCh = pos; break outer; }
      ++pos;
    }
  }
  if (end == null || line == end && endCh == startCh) return;
  return {from: CodeMirror.Pos(line, startCh),
          to: CodeMirror.Pos(end, endCh)};
});

});

Version data entries

69 entries across 69 versions & 7 rubygems

Version Path
jeygeethanmedia-inkpen-1.2.6.2 public/codemirror/addon/fold/comment-fold.js
jeygeethanmedia-inkpen-1.2.6.1 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.6.1 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.6 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.5 public/codemirror/addon/fold/comment-fold.js
kms-1.2.1 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-1.2.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-1.1.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.3 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.2 public/codemirror/addon/fold/comment-fold.js
kms-1.0.1 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-1.0.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.1.1 public/codemirror/addon/fold/comment-fold.js
kms-0.9.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-0.8.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-0.7.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
kms-0.6.0 vendor/assets/bower_components/codemirror/addon/fold/comment-fold.js
lines-engine-1.2.1 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.2 public/codemirror/addon/fold/comment-fold.js
lines-engine-1.1.5.3 public/codemirror/addon/fold/comment-fold.js