返回 marp
index.tsx
根目录 / website / utils / markdown / index.tsx
1 import matter from 'gray-matter'
2 import { parse as mdParse } from './parse'
3 import { renderer } from './renderer'
4 import { AnchorLinkProvider } from 'components/markdown/Heading'
5
6 const toJSON = (value: any) => JSON.parse(JSON.stringify(value))
7
8 export const parseMatter = (md: string) =>
9 matter(md, { excerpt_separator: '<!-- more -->' })
10
11 export const parse = async (markdown: string) => {
12 const md = parseMatter(markdown)
13 const mdast = toJSON(await mdParse(md.content))
14
15 return { markdown, mdast, data: toJSON(md.data) }
16 }
17
18 export const renderToReact = (
19 mdast: any,
20 { anchorLink = true }: { anchorLink?: boolean } = {}
21 ) => (
22 <AnchorLinkProvider value={anchorLink}>{renderer(mdast)}</AnchorLinkProvider>
23 )
24
24 lines Plain Text