UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

50 lines (38 loc) 1.39 kB
"use strict"; 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; } }