Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/addon/fold/comment-fold.js
1293 views
CodeMirror.registerGlobalHelper("fold", "comment", function(mode) {1return mode.blockCommentStart && mode.blockCommentEnd;2}, function(cm, start) {3var mode = cm.getModeAt(start), startToken = mode.blockCommentStart, endToken = mode.blockCommentEnd;4if (!startToken || !endToken) return;5var line = start.line, lineText = cm.getLine(line);67var startCh;8for (var at = start.ch, pass = 0;;) {9var found = at <= 0 ? -1 : lineText.lastIndexOf(startToken, at - 1);10if (found == -1) {11if (pass == 1) return;12pass = 1;13at = lineText.length;14continue;15}16if (pass == 1 && found < start.ch) return;17if (/comment/.test(cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1)))) {18startCh = found + startToken.length;19break;20}21at = found - 1;22}2324var depth = 1, lastLine = cm.lastLine(), end, endCh;25outer: for (var i = line; i <= lastLine; ++i) {26var text = cm.getLine(i), pos = i == line ? startCh : 0;27for (;;) {28var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);29if (nextOpen < 0) nextOpen = text.length;30if (nextClose < 0) nextClose = text.length;31pos = Math.min(nextOpen, nextClose);32if (pos == text.length) break;33if (pos == nextOpen) ++depth;34else if (!--depth) { end = i; endCh = pos; break outer; }35++pos;36}37}38if (end == null || line == end && endCh == startCh) return;39return {from: CodeMirror.Pos(line, startCh),40to: CodeMirror.Pos(end, endCh)};41});424344