25 lines
699 B
TypeScript
25 lines
699 B
TypeScript
import { unified, type Processor } from "unified";
|
|
import type { Root } from 'hast';
|
|
import RemarkParse from "remark-parse";
|
|
|
|
import RemarkRehype from 'remark-rehype';
|
|
import RemarkOfm from 'remark-ofm';
|
|
import RemarkBreaks from 'remark-breaks'
|
|
import RemarkGfm from 'remark-gfm';
|
|
|
|
export default function useMarkdown(): (md: string) => Root
|
|
{
|
|
let processor: Processor;
|
|
|
|
const parse = (markdown: string) => {
|
|
if (!processor)
|
|
{
|
|
processor = unified().use([RemarkParse, RemarkBreaks, RemarkGfm, RemarkOfm, RemarkRehype]);
|
|
}
|
|
|
|
const processed = processor.runSync(processor.parse(markdown)) as Root;
|
|
return processed;
|
|
}
|
|
|
|
return parse;
|
|
} |