UNPKG

@svengroup/openapi-to-pdf

Version:

Create PDF API reference documentation from OpenAPI 3.0.x specification files.

74 lines (73 loc) 2.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.genererateTocMarkdown = genererateTocMarkdown; exports.getToc = getToc; exports.generateSubSectionTocMarkdown = generateSubSectionTocMarkdown; exports.generateSectionTitleMarkdown = generateSectionTitleMarkdown; exports.nestInUnorderedListListItem = nestInUnorderedListListItem; const marked_1 = __importDefault(require("marked")); function genererateTocMarkdown(md, config) { let toc = getToc(md); let toc_str = `# ${config?.headings?.toc ?? 'Contents'}\n\n`; if (config?.max_toc_level) { toc = toc.filter((toc_item) => { return toc_item.level <= config.max_toc_level; }); } toc_str += `|Section||\n`; toc_str += "|-|-|\n"; toc.map((toc_item) => { const section_title = generateSectionTitleMarkdown(toc_item); toc_str += `|${section_title}|`; toc_str += `[Skip](#${toc_item.slug})|\n`; }); toc_str += "\n\n"; toc_str += `<div class="page-break"></div>`; toc_str += "\n\n"; return toc_str; } ; function getToc(md, levels) { const toc = []; const renderer = new marked_1.default.Renderer(); renderer.heading = (text, level, raw, slugger) => { const slug = slugger.slug(raw); if (levels) { if (levels.includes(level)) { toc.push({ level, text, slug }); } } else { toc.push({ level, text, slug }); } return text; }; marked_1.default.marked(md, { renderer }); return toc; } function generateSubSectionTocMarkdown(toc) { let endpoints_str = ""; if (toc.length > 0) { for (const toc_item of toc) { endpoints_str += `- [${toc_item.text}](#${toc_item.slug})\n`; } endpoints_str += `\n\n`; } return endpoints_str; } function generateSectionTitleMarkdown(toc_item) { if (toc_item.level === 1) { return `**${toc_item.text}**<img width="500" height="1">`; } let text = toc_item.text; for (let i = 1; i <= toc_item.level - 1; i++) { text = nestInUnorderedListListItem(text); } return `${text}`; } function nestInUnorderedListListItem(text) { return `<ul><li>${text}</li></ul>`; }