@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
JavaScript
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
;