@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 2.17 kB
JavaScript
import{unified as e}from"unified";import n from"remark-parse";import i from"remark-gfm";import{defaultHandlers as t,toMarkdown as a}from"mdast-util-to-markdown";const r=t=>{try{const a=t.trim();if(!a)return"";const r=e().use(n).use(i).parse(a);return l(r)}catch(e){return t}},l=e=>{const n=Object.assign(Object.assign({},t),{blockquote:(e,n,i,t)=>e.children.map(n=>i.handle(n,e,Object.assign(Object.assign({},i),{stack:i.stack.concat("emphasis")}),t)).join("").split("\n").map(e=>e.trim()?`__${e}__`:"").join("\n"),heading:(e,n,i,t)=>`**${e.children.map(n=>i.handle(n,e,i,t)).join("")}**`,link:e=>e.url,image:e=>e.url,code:e=>`\`\`\`${e.lang||""}\n${e.value}\n\`\`\``,inlineCode:(e,n,i)=>"heading"===(null==n?void 0:n.type)||i.stack.find(e=>"heading"===e)?e.value:`\`${e.value}\``,thematicBreak:()=>"",strong:(e,n,i,t)=>"emphasis"===(null==n?void 0:n.type)||"heading"===(null==n?void 0:n.type)||i.stack.find(e=>"emphasis"===e||"strong"===e||"heading"===e)?e.children.map(n=>i.handle(n,e,i,t)).join(""):`**${e.children.map(n=>i.handle(n,e,i,t)).join("")}**`,emphasis:(e,n,i,t)=>"strong"===(null==n?void 0:n.type)||"heading"===(null==n?void 0:n.type)||i.stack.find(e=>"emphasis"===e||"strong"===e||"heading"===e)?e.children.map(n=>i.handle(n,e,i,t)).join(""):`__${e.children.map(n=>i.handle(n,e,i,t)).join("")}__`,list:(e,n,i,t)=>i.containerFlow(Object.assign(Object.assign({},e),{ordered:!1}),t),listItem:(e,n,i,a)=>{if(!0===e.checked||!1===e.checked){const n=e.children.map(n=>i.handle(n,e,i,a)).join("").split("\n"),t=e.checked?"[x] ":"[ ] ",r=i.bulletCurrent||"-",l=`${r} ${t}${n[0]}`,s=" ".repeat(r.length+1+t.length);return[l,...n.slice(1).map(e=>s+e)].join("\n")}return t.listItem(e,n,Object.assign(Object.assign({},i),{bulletCurrent:"-"}),a)},table:(e,n,i,t)=>(e.children||[]).map(e=>(e.children||[]).map(e=>i.containerPhrasing(e,t)).join(" ")).join("\n"),delete:(e,n,i,t)=>`~~${i.containerPhrasing(e,t)}~~`,text:e=>e.value,break:()=>"\n"});return a(e,{bullet:"-",bulletOrdered:null,bulletOther:"-",incrementListMarker:!1,listItemIndent:"one",tightDefinitions:!0,extensions:[{handlers:n}]}).replaceAll(/\n{3,}/g,"\n\n").replace(/\n$/,"")};export{r as getTgMarkdown};