UNPKG

meblog

Version:

A simple blog engine for personal blogging

40 lines (39 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const Renderer_1 = tslib_1.__importDefault(require("./Renderer")); const markdown_it_1 = tslib_1.__importDefault(require("markdown-it")); const markdown_it_emoji_1 = tslib_1.__importDefault(require("markdown-it-emoji")); const markdown_it_sub_1 = tslib_1.__importDefault(require("markdown-it-sub")); const markdown_it_sup_1 = tslib_1.__importDefault(require("markdown-it-sup")); const markdown_it_footnote_1 = tslib_1.__importDefault(require("markdown-it-footnote")); const markdown_it_abbr_1 = tslib_1.__importDefault(require("markdown-it-abbr")); const twemoji_1 = tslib_1.__importDefault(require("twemoji")); const highlight_js_1 = tslib_1.__importDefault(require("highlight.js")); class MarkdownItRenderer extends Renderer_1.default { md; highlight(code, lang) { const language = highlight_js_1.default.getLanguage(lang) ? lang : 'plaintext'; return highlight_js_1.default.highlight(code, { language }).value; } twemoji(token, idx) { return twemoji_1.default.parse(token[idx].content); } initRenderer() { if (this.md) { return; } this.md = new markdown_it_1.default('default', { html: true, typographer: true, highlight: this.highlight.bind(this), }); this.md.use(markdown_it_emoji_1.default).use(markdown_it_footnote_1.default).use(markdown_it_abbr_1.default).use(markdown_it_sup_1.default).use(markdown_it_sub_1.default); this.md.renderer.rules.emoji = this.twemoji.bind(this); } render(markdown) { this.initRenderer(); return this.md.render(markdown); } } exports.default = MarkdownItRenderer;