Вход Регистрация
Файл: wysiwyg/live/scripts/common/codemirror/lib/util/foldcode.js
Строк: 133
<?php
CodeMirror
.braceRangeFinder = function(cmline) {
  var 
lineText cm.getLine(line);
  var 
startChar lineText.lastIndexOf("{");
  if (
startChar || lineText.lastIndexOf("}") > startChar) return;
  var 
tokenType cm.getTokenAt({linelinechstartChar}).className;
  var 
count 1lastLine cm.lineCount(), end;
  
outer: for (var line 1lastLine; ++i) {
    var 
text cm.getLine(i), pos 0;
    for (;;) {
      var 
nextOpen text.indexOf("{"pos), nextClose text.indexOf("}"pos);
      if (
nextOpen 0nextOpen text.length;
      if (
nextClose 0nextClose text.length;
      
pos Math.min(nextOpennextClose);
      if (
pos == text.length) break;
      if (
cm.getTokenAt({lineichpos 1}).className == tokenType) {
        if (
pos == nextOpen) ++count;
        else if (!--
count) { end i; break outer; }
      }
      ++
pos;
    }
  }
  if (
end == null || end == line 1) return;
  return 
end;
};


CodeMirror.newFoldFunction = function(rangeFindermarkText) {
  var 
folded = [];
  if (
markText == nullmarkText '<div style="position: absolute; left: 2px; color:#600">&#x25bc;</div>%N%';

  function 
isFolded(cmn) {
    for (var 
0folded.length; ++i) {
      var 
start cm.lineInfo(folded[i].start);
      if (!
startfolded.splice(i--, 1);
      else if (
start.line == n) return {posiregionfolded[i]};
    }
  }

  function 
expand(cmregion) {
    
cm.clearMarker(region.start);
    for (var 
0region.hidden.length; ++i)
      
cm.showLine(region.hidden[i]);
  }

  return function(
cmline) {
    
cm.operation(function() {
      var 
known isFolded(cmline);
      if (
known) {
        
folded.splice(known.pos1);
        
expand(cmknown.region);
      } else {
        var 
end rangeFinder(cmline);
        if (
end == null) return;
        var 
hidden = [];
        for (var 
line 1end; ++i) {
          var 
handle cm.hideLine(i);
          if (
handlehidden.push(handle);
        }
        var 
first cm.setMarker(linemarkText);
        var 
region = {startfirsthiddenhidden};
        
cm.onDeleteLine(first, function() { expand(cmregion); });
        
folded.push(region);
      }
    });
  };
};
?>
Онлайн: 0
Реклама