UNPKG

xm-md-pdf

Version:

CLI tool for converting Markdown files to PDF and DOC.

45 lines (44 loc) 1.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderHtml = exports.renderBody = exports.markedOptions = void 0; const highlight_js_1 = require("highlight.js"); const marked_1 = __importDefault(require("marked")); const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const global_1 = require("./global"); /** * @description 修改并设置 marked_options参数 * @param { MarkedOptions } options * */ exports.markedOptions = (options) => { var _a; const renderer = (_a = options.renderer) !== null && _a !== void 0 ? _a : new marked_1.default.Renderer(); // 对代码段的处理 if (!renderer.code) { renderer.code = (code, language) => { const languageName = language && highlight_js_1.getLanguage(language) ? language : 'plaintext'; return ` <pre> <code class="hljs ${languageName}"> ${highlight_js_1.highlight(languageName, code).value} </code> </pre> `; }; } // 重新设置参数 marked_1.default.setOptions(Object.assign(Object.assign({}, options), { renderer })); return marked_1.default; }; exports.renderBody = (markContent) => { const { marked_options = {} } = global_1.Global.config; return exports.markedOptions(marked_options)(markContent); }; exports.renderHtml = (markContent) => { const markdownBody = exports.renderBody(markContent); const template = fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, 'assets/template.html'), { encoding: 'utf8' }); return template.replace(/markdownBody/, markdownBody); };