[ Index ]

PHP Cross Reference of MyBB 1.8.38

title

Body

[close]

/admin/jscripts/codemirror/addon/fold/ -> indent-fold.js (source)

   1  // CodeMirror, copyright (c) by Marijn Haverbeke and others
   2  // Distributed under an MIT license: http://codemirror.net/LICENSE
   3  
   4  (function(mod) {
   5    if (typeof exports == "object" && typeof module == "object") // CommonJS
   6      mod(require("../../lib/codemirror"));
   7    else if (typeof define == "function" && define.amd) // AMD
   8      define(["../../lib/codemirror"], mod);
   9    else // Plain browser env
  10      mod(CodeMirror);
  11  })(function(CodeMirror) {
  12  "use strict";
  13  
  14  function lineIndent(cm, lineNo) {
  15    var text = cm.getLine(lineNo)
  16    var spaceTo = text.search(/\S/)
  17    if (spaceTo == -1 || /\bcomment\b/.test(cm.getTokenTypeAt(CodeMirror.Pos(lineNo, spaceTo + 1))))
  18      return -1
  19    return CodeMirror.countColumn(text, null, cm.getOption("tabSize"))
  20  }
  21  
  22  CodeMirror.registerHelper("fold", "indent", function(cm, start) {
  23    var myIndent = lineIndent(cm, start.line)
  24    if (myIndent < 0) return
  25    var lastLineInFold = null
  26  
  27    // Go through lines until we find a line that definitely doesn't belong in
  28    // the block we're folding, or to the end.
  29    for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
  30      var indent = lineIndent(cm, i)
  31      if (indent == -1) {
  32      } else if (indent > myIndent) {
  33        // Lines with a greater indent are considered part of the block.
  34        lastLineInFold = i;
  35      } else {
  36        // If this line has non-space, non-comment content, and is
  37        // indented less or equal to the start line, it is the start of
  38        // another block.
  39        break;
  40      }
  41    }
  42    if (lastLineInFold) return {
  43      from: CodeMirror.Pos(start.line, cm.getLine(start.line).length),
  44      to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
  45    };
  46  });
  47  
  48  });


2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup Cross-referenced by PHPXref