UNPKG

greybel-languageserver-core

Version:
50 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildFoldingRanges = void 0; const miniscript_core_1 = require("miniscript-core"); const vscode_languageserver_1 = require("vscode-languageserver"); const ast_scraper_1 = require("./ast-scraper"); function buildFoldingRanges(item) { const ranges = []; const walker = new ast_scraper_1.ScraperWalker((item, level) => { if (item.start.line === item.end.line) return null; switch (item.type) { case miniscript_core_1.ASTType.Comment: ranges.push({ startLine: item.start.line - 1, endLine: item.end.line - 1, kind: vscode_languageserver_1.FoldingRangeKind.Comment }); return null; case miniscript_core_1.ASTType.MapConstructorExpression: case miniscript_core_1.ASTType.ListConstructorExpression: case miniscript_core_1.ASTType.StringLiteral: case miniscript_core_1.ASTType.WhileStatement: case miniscript_core_1.ASTType.ForGenericStatement: case miniscript_core_1.ASTType.FunctionDeclaration: { ranges.push({ startLine: item.start.line - 1, endLine: item.end.line - 1, kind: vscode_languageserver_1.FoldingRangeKind.Region }); return null; } case miniscript_core_1.ASTType.IfClause: case miniscript_core_1.ASTType.ElseifClause: case miniscript_core_1.ASTType.ElseClause: { ranges.push({ startLine: item.start.line - 1, endLine: item.end.line - 2, kind: vscode_languageserver_1.FoldingRangeKind.Region }); return null; } } return null; }); walker.visit(item.parsedPayload); return ranges; } exports.buildFoldingRanges = buildFoldingRanges; //# sourceMappingURL=folding-range-builder.js.map