-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
containers.js
33 lines (31 loc) · 981 Bytes
/
containers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const container = require('markdown-it-container')
module.exports = md => {
md
.use(...createContainer('tip', 'TIP'))
.use(...createContainer('warning', 'WARNING'))
.use(...createContainer('danger', 'WARNING'))
// explicitly escape Vue syntax
.use(container, 'v-pre', {
render: (tokens, idx) => tokens[idx].nesting === 1
? `<div v-pre>\n`
: `</div>\n`
})
.use(container, 'vue', {
render: (tokens, idx) => tokens[idx].nesting === 1
? `<pre class="vue-container"><code>`
: `</code></pre>`
})
}
function createContainer (klass, defaultTitle) {
return [container, klass, {
render (tokens, idx) {
const token = tokens[idx]
const info = token.info.trim().slice(klass.length).trim()
if (token.nesting === 1) {
return `<div class="${klass} custom-block"><p class="custom-block-title">${info || defaultTitle}</p>\n`
} else {
return `</div>\n`
}
}
}]
}