UNPKG

@cgj/k-view

Version:
42 lines (36 loc) 1.43 kB
const mdChainConfig = require("markdown-it-chain"); const container = require("./container"); const config = new mdChainConfig(); config.options.html(true).end() .plugin('containers').use(container).end() //fence 解析覆盖 const fenceWrite = md => { const defaultRender = md.renderer.rules.fence; md.renderer.rules.fence = (tokens, idx, options, env, self) => { const token = tokens[idx]; const prevToken = tokens[idx - 1]; const isInDemoBox = prevToken && prevToken.nesting === 1 && prevToken.info.trim().match(/^kview\s*(.*)$/); if (token.info === 'html' && isInDemoBox) { return `<template slot="code-box"> <k-tip trigger="hover" content="copy code" :text-width="20" class="clipboard-btn" data-clipboard-text="${encodeURIComponent(token.content)}" > <a-icon type="copy" /> </k-tip> <pre class="hljs"> <code class="pre-code html">${md.utils.escapeHtml(token.content)}</code> </pre> </template>`; } return defaultRender(tokens, idx, options, env, self); }; } const md = config.toMd(); fenceWrite(md); module.exports = md;