xm-md-pdf
Version:
CLI tool for converting Markdown files to PDF and DOC.
45 lines (44 loc) • 1.79 kB
JavaScript
;
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);
};