mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-15 09:50:58 +08:00
55348b30b6
* style: use prettier * style: just prettier format, no code changes * style: eslint fix object-shorthand, prefer-const * style: fix no-void * style: no-console
83 lines
1.7 KiB
JavaScript
83 lines
1.7 KiB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
const Config = require('markdown-it-chain')
|
|
const anchorPlugin = require('markdown-it-anchor')
|
|
const slugify = require('transliteration').slugify
|
|
const hljs = require('highlight.js')
|
|
const containers = require('./containers')
|
|
const overWriteFenceRule = require('./fence')
|
|
const applyRules = require('./rules')
|
|
|
|
const config = new Config()
|
|
|
|
const highlight = (str, lang) => {
|
|
if (!lang || !hljs.getLanguage(lang)) {
|
|
return (
|
|
'<pre class="example-code"><code class="hljs">' +
|
|
str +
|
|
'</code><span class="lang-mark">' +
|
|
getLangMark(lang) +
|
|
'</span></pre>'
|
|
)
|
|
}
|
|
const html = hljs.highlight(lang, str, true, undefined).value
|
|
return `<pre class="example-code"><code class="hljs language-${lang}">${html}</code><span class="lang-mark">${getLangMark(
|
|
lang
|
|
)}</span></pre>`
|
|
}
|
|
|
|
slugify.config({
|
|
replace: [
|
|
['.', '-'],
|
|
['1', 'one'],
|
|
['2', 'two'],
|
|
['3', 'three'],
|
|
['4', 'four'],
|
|
['5', 'five'],
|
|
['6', 'six'],
|
|
['7', 'seven'],
|
|
['8', 'eight'],
|
|
['9', 'nine'],
|
|
['0', 'zero'],
|
|
],
|
|
})
|
|
config.options
|
|
.html(true)
|
|
.highlight(highlight)
|
|
.end()
|
|
|
|
.plugin('anchor')
|
|
.use(anchorPlugin, [
|
|
{
|
|
level: 2,
|
|
slugify: slugify,
|
|
permalink: true,
|
|
permalinkSymbol: '',
|
|
},
|
|
])
|
|
.end()
|
|
|
|
.plugin('containers')
|
|
.use(containers)
|
|
.end()
|
|
|
|
function getLangMark(lang) {
|
|
switch (lang.toLowerCase()) {
|
|
case 'bash':
|
|
case 'zsh':
|
|
case 'shell':
|
|
return 'sh'
|
|
case 'javascript':
|
|
return 'js'
|
|
case 'typescript':
|
|
return 'ts'
|
|
default:
|
|
return lang
|
|
}
|
|
}
|
|
|
|
const md = config.toMd()
|
|
overWriteFenceRule(md)
|
|
applyRules(md)
|
|
|
|
module.exports = md
|