Skip to content

Commit 4cec660

Browse files
committed
feat: expose __path and __relativePath on md instance for md plugins
1 parent 7387649 commit 4cec660

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

src/node/markdown/markdown.ts

+15-6
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,14 @@ export interface MarkdownParsedData {
4040
}
4141

4242
export interface MarkdownRenderer {
43+
__path: string
44+
__relativePath: string
4345
__data: MarkdownParsedData
44-
render: (src: string, env?: any) => { html: string; data: any }
46+
render: (
47+
src: string,
48+
path: string,
49+
relatiovePath: string
50+
) => { html: string; data: any }
4551
}
4652

4753
export type { Header }
@@ -94,17 +100,20 @@ export const createMarkdownRenderer = (
94100
md.use(lineNumberPlugin)
95101
}
96102

103+
const wrappedMd = md as any as MarkdownRenderer
104+
97105
// wrap render so that we can return both the html and extracted data.
98106
const render = md.render
99-
const wrappedRender: MarkdownRenderer['render'] = (src) => {
100-
;(md as any).__data = {}
107+
wrappedMd.render = (src, path, relativePath) => {
108+
wrappedMd.__data = {}
109+
wrappedMd.__path = path
110+
wrappedMd.__relativePath = relativePath
101111
const html = render.call(md, src)
102112
return {
103113
html,
104-
data: (md as any).__data
114+
data: wrappedMd.__data
105115
}
106116
}
107-
;(md as any).render = wrappedRender
108117

109-
return md as any
118+
return wrappedMd
110119
}

src/node/markdownToVue.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export function createMarkdownToVueRenderFn(
6565
})
6666

6767
const { content, data: frontmatter } = matter(src)
68-
let { html, data } = md.render(content)
68+
let { html, data } = md.render(content, file, relativePath)
6969

7070
if (isBuild) {
7171
// avoid env variables being replaced by vite

0 commit comments

Comments
 (0)