| 1 | import remarkGfm from 'remark-gfm' |
| 2 | import remarkParse from 'remark-parse' |
| 3 | import remarkSlug from 'remark-slug' |
| 4 | import { unified, Processor } from 'unified' |
| 5 | import { removePosition } from 'unist-util-remove-position' |
| 6 | import { imageParagraphToFigure } from './image-paragraph-to-figure' |
| 7 | import { marpCodeBlock } from './marp-code-block' |
| 8 | |
| 9 | let parser: Processor | undefined |
| 10 | |
| 11 | export const parse = async (md: string) => { |
| 12 | parser = |
| 13 | parser || |
| 14 | unified() |
| 15 | .use(remarkParse) |
| 16 | .use(remarkGfm) |
| 17 | .use(remarkSlug) |
| 18 | .use(imageParagraphToFigure) |
| 19 | .use([marpCodeBlock]) |
| 20 | |
| 21 | return removePosition(await parser.run(parser.parse(md)), true) |
| 22 | } |
| 23 |