@vuux/editor
Version:
Vue Nuxt 富文本编辑器
2 lines (1 loc) • 1.49 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../markdown/marked.cjs"),i=require("../utils.cjs"),u=require("@vuux/code"),l=t=>t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),p=(t,e="")=>{const o={ts:"typescript",js:"javascript",py:"python",vue:"html",md:"markdown"},r=new Set(["c","css","dockerfile","fortran","go","golo","http","ini","java","javascript","json","kotlin","less","lua","markdown","nginx","perl","php-template","php","powershell","python-repl","python","r","rust","scss","shell","sql","stylus","tp","typescript","vbscript-html","vbscript","xml","yaml","html"]),s=o[e.toLowerCase()]||e.toLowerCase();if(!r.has(s))return`<pre><code>${l(t)}</code></pre>`;try{const c=u.code.highlight(t,{language:s,ignoreIllegals:!0}).value;return`<pre class="language-${s}"><code>${c}</code></pre>`}catch{return`<pre><code>${l(t)}</code></pre>`}},n=new a.marked.Renderer,d=t=>{if(!t)return"";const e=i.parseCustomDirectives(t);return a.marked.parse(e)};a.marked.setOptions({renderer:n,gfm:!0,breaks:!1});n.code=({text:t,lang:e})=>p(t,e||"");n.link=({href:t,title:e,text:o})=>{const r=e?` title="${e}"`:"";return`<a href="${t}"${r} target="_blank">${o}</a>`};n.text=t=>{let e=t.text;return e=e.replace(/==(.+?)==\{color:([^}]+)\}/g,(o,r,s)=>`<span style="color:${s}">${r}</span>`),e=e.replace(/==(.+?)==\{size:([^}]+)\}/g,(o,r,s)=>`<span style="font-size:${s}">${r}</span>`),e};exports.highlightCode=p;exports.markdownToHtml=d;