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;
}
};