31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
|
import { MarkdownParser } from 'prosemirror-markdown';
|
||
|
import markdownit from 'markdown-it';
|
||
|
|
||
|
export default function createMarkdownParser(schema) {
|
||
|
return new MarkdownParser(schema, markdownit("commonmark", {html: false}), {
|
||
|
blockquote: {block: "blockquote"},
|
||
|
paragraph: {block: "paragraph"},
|
||
|
list_item: {block: "list_item"},
|
||
|
bullet_list: {block: "bullet_list"},
|
||
|
ordered_list: {block: "ordered_list", attrs: tok => ({order: +tok.attrGet("order") || 1})},
|
||
|
heading: {block: "heading", attrs: tok => ({level: +tok.tag.slice(1)})},
|
||
|
code_block: {block: "code_block"},
|
||
|
fence: {block: "code_block"},
|
||
|
hr: {node: "horizontal_rule"},
|
||
|
image: {node: "image", attrs: tok => ({
|
||
|
src: tok.attrGet("src"),
|
||
|
title: tok.attrGet("title") || null,
|
||
|
alt: tok.children[0] && tok.children[0].content || null
|
||
|
})},
|
||
|
hardbreak: {node: "hard_break"},
|
||
|
|
||
|
em: {mark: "em"},
|
||
|
strong: {mark: "strong"},
|
||
|
link: {mark: "link", attrs: tok => ({
|
||
|
href: tok.attrGet("href"),
|
||
|
title: tok.attrGet("title") || null
|
||
|
})},
|
||
|
code_inline: {mark: "code"}
|
||
|
});
|
||
|
}
|