@kangc/v-md-editor
Version:
A markdown editor built on Vue
23 lines (18 loc) • 743 B
JavaScript
// Modified from https://github.com/vuejs/vuepress/blob/master/packages/%40vuepress/markdown/lib/preWrapper.js
module.exports = (md, options = {}) => {
const { getWrapperClass = (lang) => `language-${lang}` } = options;
const wrap = (wrapped) => (...args) => {
const [tokens, idx] = args;
const token = tokens[idx];
const rawCode = wrapped(...args);
return (
`<!--beforebegin--><div class="${getWrapperClass(
token.info.trim()
)} extra-class" extra-attr>` +
`<!--afterbegin-->${rawCode}<!--beforeend--></div><!--afterend-->`
);
};
const { fence, code_block: codeBlock } = md.renderer.rules;
md.renderer.rules.fence = wrap(fence);
md.renderer.rules.code_block = wrap(codeBlock);
};