quizdown-extended
Version:
A fork from [bonartm/quizdown-js](https://github.com/bonartm/quizdown-js) with more features. > The Katex-extension is currently not supported
45 lines (40 loc) • 1.01 kB
text/typescript
import { marked } from 'marked';
import { parse as parseYaml } from 'yaml';
// customize tokenizer to include yaml like header blocks
const tokenizer: marked.TokenizerObject = {
// type definition does not allow custom token type
// @ts-ignore
hr(src) {
const regex = RegExp(
/^ {0,3}(-{3,}(?=[^-\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~-]* *(?:\n+|$)|$)/
);
const cap = regex.exec(src);
if (cap) {
return {
type: 'options',
raw: cap[0],
data: parseYaml(cap[3], {}),
};
}
},
};
// customize renderer
const renderer: marked.RendererObject = {
paragraph(text) {
return text;
},
blockquote(text) {
return text;
},
heading(text) {
return text;
},
};
// Use marked-highlight for syntax highlighting
marked.use(
{
renderer: renderer,
tokenizer: tokenizer,
},
);
export default marked;