42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { Marked, type MarkedExtension } from "marked";
|
|
import { createDirectives, presetDirectiveConfigs } from "marked-directive";
|
|
import markedAlert from "marked-alert";
|
|
import markedMermaid from "./mermaid";
|
|
import markedTable from "./table";
|
|
import { gfmHeadingId } from "marked-gfm-heading-id";
|
|
import markedColumns from "./columns";
|
|
import markedCodeBlockYamlTag from "./code-block-yaml-tag";
|
|
import { iconDirective, setIconBase } from "./icon";
|
|
|
|
// 使用 marked-directive 来支持指令语法
|
|
const marked = new Marked()
|
|
.use(gfmHeadingId())
|
|
.use(markedAlert())
|
|
.use(markedMermaid())
|
|
.use(markedTable())
|
|
.use(markedCodeBlockYamlTag())
|
|
.use(
|
|
createDirectives([
|
|
...presetDirectiveConfigs,
|
|
{
|
|
marker: "::::",
|
|
level: "container",
|
|
},
|
|
{
|
|
marker: ":::::",
|
|
level: "container",
|
|
},
|
|
iconDirective,
|
|
]),
|
|
{
|
|
extensions: [...markedColumns()],
|
|
},
|
|
);
|
|
|
|
export function parseMarkdown(content: string, basePath?: string): string {
|
|
setIconBase(basePath);
|
|
return marked.parse(content.trimStart()) as string;
|
|
}
|
|
|
|
export { marked };
|