@cgj/k-view
Version:
``` npm i @cgj/k-view ```
42 lines (36 loc) • 1.43 kB
JavaScript
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;