UNPKG

@ng-doc/builder

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

64 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.markdownToHtml = markdownToHtml; const tslib_1 = require("tslib"); const core_1 = require("@ng-doc/core"); const fs = tslib_1.__importStar(require("fs")); const marked_1 = require("marked"); const node_os_1 = require("node:os"); const path = tslib_1.__importStar(require("path")); const parsers_1 = require("../parsers"); const remove_lines_from_code_1 = require("./remove-lines-from-code"); const utils_1 = require("./utils"); const blockquoteRegex = /^<p><strong>(\w+)<\/strong>\s*/; /** * * @param this * @param markdown * @param contextFolder * @param page * @param context * @param addDependency */ function markdownToHtml(markdown, context, addDependency) { const renderer = { code(code, lang) { const { language, file, name, highlightedLines, fileLineStart, fileLineEnd, group, active, icon, } = (0, parsers_1.parseCodeBlockParams)(lang?.trim() ?? 'typescript'); if (file && context) { const relativeFilePath = path.join(context, file); const fileContent = fs .readFileSync(relativeFilePath ?? '', 'utf8') .split(node_os_1.EOL) .slice(fileLineStart, fileLineEnd) .join(node_os_1.EOL) .trim(); addDependency && addDependency(relativeFilePath); code = (0, remove_lines_from_code_1.removeLinesFromCode)(fileContent); } const metaString = utils_1.UTILS.stringifyEntities(JSON.stringify({ name: !group ? name : undefined, icon: !group ? icon : undefined, highlightedlines: JSON.stringify(highlightedLines), }).replace(/"/g, '\\"')); const codeElement = `<pre><code class="language-${language ?? 'ts'}" lang="${language}" metastring="${metaString}">${(0, core_1.escapeHtml)(code)}</code></pre>`; return group ? `<ng-doc-tab group="${group}" name="${name}" icon="${icon ?? ''}" ${active ? 'active' : ''}>${codeElement}</ng-doc-tab>` : codeElement; }, blockquote(quote) { const match = quote.match(blockquoteRegex); if (match) { return `<ng-doc-blockquote type="${match[1].toLowerCase()}">${quote.replace(blockquoteRegex, '<p>')}</ng-doc-blockquote>`; } return `<ng-doc-blockquote>${quote}</ng-doc-blockquote>`; }, html(html, block) { return block ? html : html.trim(); }, }; marked_1.marked.use({ renderer }); return marked_1.marked.parse(markdown, { async: false }); } //# sourceMappingURL=markdown-to-html.js.map