feeles-ide
Version:
The hackable and serializable IDE to make learning material
50 lines (38 loc) • 1.39 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = foldAsset;
var _codemirror = _interopRequireDefault(require("codemirror"));
var _keywords = require("../../utils/keywords");
var prefix = _keywords.codeFolds.prefix,
startWord = _keywords.codeFolds.startWord,
endWord = _keywords.codeFolds.endWord;
/**
* 「// ここから〇〇」〜「// ここまで〇〇」を fold する
* @param {CodeMirror} cm
* @param {CodeMirror.Pos} start
*/
function foldAsset(cm, start) {
if (!cm || !start) return;
var result = {};
var text = cm.getLine(start.line);
var startIndex = text.indexOf(startWord);
if (startIndex < 0) return; // startWord が見つかった
result.from = _codemirror.default.Pos(start.line, startIndex + startWord.length);
var keyword = text.substr(startIndex + startWord.length); // 今度は endWord を探す
var lastLine = cm.lastLine();
for (var line = start.line + 1; line < lastLine; line++) {
var _text = cm.getLine(line);
var endIndex = _text.indexOf(endWord + keyword);
if (endIndex >= 0) {
// endWord も見つかった
result.to = _codemirror.default.Pos(line, endIndex + prefix.length);
break;
}
}
if (result.from && result.to) {
return result;
}
}