element-plus/docs/.vitepress/plugins/tooltip.ts
qiang 36c5aed076
refactor(docs): tooltip plugin (#10440)
* refactor(docs): tooltip plugin

* refactor(docs): tooltip plugin
2022-11-05 15:15:29 +08:00

30 lines
835 B
TypeScript

import type MarkdownIt from 'markdown-it'
export default (md: MarkdownIt): void => {
md.renderer.rules.tooltip = (tokens, idx) => {
const token = tokens[idx]
return `<api-typing type="${token.content}" details="${token.info}" />`
}
md.inline.ruler.before('emphasis', 'tooltip', (state, silent) => {
const tooltipRegExp = /^\^\[([^\]]*)\](`[^`]*`)?/
const str = state.src.slice(state.pos, state.posMax)
if (!tooltipRegExp.test(str)) return false
if (silent) return true
const result = str.match(tooltipRegExp)
if (!result) return false
const token = state.push('tooltip', 'tooltip', 0)
token.content = result[1].replace(/\\\|/g, '|')
token.info = (result[2] || '').replace(/^`(.*)`$/, '$1')
token.level = state.level
state.pos += result[0].length
return true
})
}