返回 marp
marp-code-block.ts
根目录 / website / utils / markdown / parse / marp-code-block.ts
1 import type { Literal } from 'unist'
2 import { visit } from 'unist-util-visit'
3 import { RenderedMarp, generateRenderedMarp } from 'components/Marp'
4
5 export const marpCodeBlock = () => async (tree) => {
6 const marpNodes = new Set<Literal<string> & { marp?: RenderedMarp }>()
7
8 visit(tree, 'code', (node) => {
9 const lang = node.lang as string
10 const langSub = lang.split(':').pop() as string
11
12 if (langSub === 'marp') marpNodes.add(node)
13 })
14
15 await Promise.all(
16 [...marpNodes].map((node) =>
17 (async () => {
18 node.marp = await generateRenderedMarp(node.value)
19 })()
20 )
21 )
22 }
23
23 lines TYPESCRIPT