import hljs from 'highlight.js'; import MarkdownIt from 'markdown-it'; import markdownItAnchor from 'markdown-it-anchor'; function cardWrapper(html: any) { const group = html .replace(/

{ if (fragment.indexOf('${fragment}`; } return fragment; }) .join(''); }; class MarkdownParser { private content: string; private options: any; private parser: any; private data: any; constructor(content: string, options = {}) { this.content = content; this.options = options; this.parser = new MarkdownIt({ html: true, highlight: this.highlight, ...options }); this.parser.use(markdownItAnchor, { level: 2 }); this.parse(); } parse() { this.data = this.wrapper(this.parser.render(this.content)).replace(/\n/g, ''); } getCode() { return this.data; } highlight(str: string, lang: string) { if (lang && hljs.getLanguage(lang)) { return hljs.highlight(lang, str, true).value; } return ''; } wrapper(content: string) { content = cardWrapper(content); content = escape(content); return ` `; } } export default function(source: string) { // 获取选项配置 try { const parser = new MarkdownParser(source); return parser.getCode(); } catch (e) { console.log(e); return null; } };