UNPKG

@helldoc/core

Version:
39 lines (38 loc) 1.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; var marked_1 = __importDefault(require("marked")); function extractHeaders(content, parser) { if (parser === void 0) { parser = marked_1["default"].lexer; } var tokens = parser(content); var headingTokens = tokens.filter(function (token) { return token.type === "heading"; }); var slugger = new marked_1["default"].Slugger(); var headers = headingTokens.map(function (_a) { var depth = _a.depth, text = _a.text; return ({ id: slugger.slug(text), level: depth, text: text, parent: null }); }); headers.forEach(function (header, idx) { header.parent = findHeaderParent(header.level, idx - 1, headers); }); return headers; } exports.extractHeaders = extractHeaders; function findHeaderParent(level, idx, tokens) { for (; idx >= 0; idx--) { var prevToken = tokens[idx]; if (level > prevToken.level) { return prevToken.id; } if (prevToken.level === level) { return prevToken.parent || null; } } return null; }