Skip to content

Commit f4800e0

Browse files
committed
feat(markdown): supports mermaid #137
1 parent ac10de1 commit f4800e0

File tree

4 files changed

+82
-6
lines changed

4 files changed

+82
-6
lines changed

docs/de-de/markdown.md

+25
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,28 @@ window.$docsify = {
2828
}
2929
}
3030
```
31+
32+
33+
## Supports mermaid
34+
35+
```js
36+
// Import mermaid
37+
// <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.css">
38+
// <script src="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
39+
40+
window.$docsify = {
41+
markdown: {
42+
renderer: {
43+
code: function(code, lang) {
44+
if (lang === "mermaid") {
45+
return (
46+
'<div class="mermaid">' + mermaid.render(lang, code) + "</div>"
47+
);
48+
}
49+
return this.origin.code.apply(this, arguments);
50+
}
51+
}
52+
}
53+
}
54+
```
55+

docs/markdown.md

+23
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,26 @@ window.$docsify = {
2828
}
2929
}
3030
```
31+
32+
## Supports mermaid
33+
34+
```js
35+
// Import mermaid
36+
// <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.css">
37+
// <script src="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
38+
39+
window.$docsify = {
40+
markdown: {
41+
renderer: {
42+
code: function(code, lang) {
43+
if (lang === "mermaid") {
44+
return (
45+
'<div class="mermaid">' + mermaid.render(lang, code) + "</div>"
46+
);
47+
}
48+
return this.origin.code.apply(this, arguments);
49+
}
50+
}
51+
}
52+
}
53+
```

docs/zh-cn/markdown.md

+25-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,28 @@ window.$docsify = {
2727
return marked
2828
}
2929
}
30-
```
30+
```
31+
32+
33+
## Supports mermaid
34+
35+
```js
36+
// Import mermaid
37+
// <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.css">
38+
// <script src="//cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
39+
40+
window.$docsify = {
41+
markdown: {
42+
renderer: {
43+
code: function(code, lang) {
44+
if (lang === "mermaid") {
45+
return (
46+
'<div class="mermaid">' + mermaid.render(lang, code) + "</div>"
47+
);
48+
}
49+
return this.origin.code.apply(this, arguments);
50+
}
51+
}
52+
}
53+
}
54+
```

src/core/render/compiler.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ export class Compiler {
6161
const renderer = new marked.Renderer()
6262
const { linkTarget, router, contentBase } = this
6363
const _self = this
64+
const origin = {}
65+
6466
/**
6567
* render anchor tag
6668
* @link https://github.com/chjj/marked#overriding-renderer-methods
6769
*/
68-
renderer.heading = function (text, level) {
70+
origin.heading = renderer.heading = function (text, level) {
6971
const nextToc = { level, title: text }
7072

7173
if (/{docsify-ignore}/g.test(text)) {
@@ -88,12 +90,12 @@ export class Compiler {
8890
return `<h${level} id="${slug}"><a href="${url}" data-id="${slug}" class="anchor"><span>${text}</span></a></h${level}>`
8991
}
9092
// highlight code
91-
renderer.code = function (code, lang = '') {
93+
origin.code = renderer.code = function (code, lang = '') {
9294
const hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup)
9395

9496
return `<pre v-pre data-lang="${lang}"><code class="lang-${lang}">${hl}</code></pre>`
9597
}
96-
renderer.link = function (href, title, text) {
98+
origin.link = renderer.link = function (href, title, text) {
9799
let blank = ''
98100

99101
if (!/:|(\/{2})/.test(href) &&
@@ -117,15 +119,15 @@ export class Compiler {
117119
}
118120
return `<a href="${href}"${title || ''}${blank}>${text}</a>`
119121
}
120-
renderer.paragraph = function (text) {
122+
origin.paragraph = renderer.paragraph = function (text) {
121123
if (/^!&gt;/.test(text)) {
122124
return helperTpl('tip', text)
123125
} else if (/^\?&gt;/.test(text)) {
124126
return helperTpl('warn', text)
125127
}
126128
return `<p>${text}</p>`
127129
}
128-
renderer.image = function (href, title, text) {
130+
origin.image = renderer.image = function (href, title, text) {
129131
let url = href
130132
const titleHTML = title ? ` title="${title}"` : ''
131133

@@ -136,6 +138,8 @@ export class Compiler {
136138
return `<img src="${url}" data-origin="${href}" alt="${text}"${titleHTML}>`
137139
}
138140

141+
renderer.origin = origin
142+
139143
return renderer
140144
}
141145

0 commit comments

Comments
 (0)