7 lines
3.5 KiB
JavaScript
7 lines
3.5 KiB
JavaScript
function p(e){switch(e){case 9:case 32:return!0}return!1}const d=(e,t,a=0)=>{let o=0,c=t-1;for(;c>=a&&e.charCodeAt(c)===92;)o++,c--;return o},k=(e,t,a)=>{const o=e.src.charCodeAt(t-1),c=e.src.charCodeAt(t+1);return{canOpen:a||!p(c),canClose:!(c>=48&&c<=57)&&(a||!p(o))}},b=e=>(t,a)=>{if(t.src[t.pos]!=="$")return!1;let o=k(t,t.pos,e);if(!o.canOpen)return a||(t.pending+="$"),t.pos++,!0;const c=t.pos+1;let s=c,r;const n=t.src.lastIndexOf("$");if(n===-1)return!1;for(;(s=t.src.indexOf("$",s))<=n;){for(r=s-1;t.src.charCodeAt(r)===92;)r--;if((s-r)%2===1)break;s++}if(s===-1)return a||(t.pending+="$"),t.pos=c,!0;if(s-c===0)return a||(t.pending+="$$"),t.pos=c+1,!0;if(o=k(t,s,e),!o.canClose)return a||(t.pending+="$"),t.pos=c,!0;if(!a){const i=t.push("math_inline","math",0);i.markup="$",i.content=t.src.slice(c,s)}return t.pos=s+1,!0},C=()=>(e,t)=>{const a=e.pos;if(e.src.charCodeAt(a)!==92||e.src.charCodeAt(a+1)!==40)return!1;let o=a+2,c=!1;const s=e.src.length;for(;o<s-1;){if(e.src.charCodeAt(o)===92&&e.src.charCodeAt(o+1)===41){if(d(e.src,a)%2===1)return!1;if(d(e.src,o,a+2)%2===0){c=!0;break}}o++}if(!c)return!1;if(!t){const r=e.push("math_inline","math",0);r.markup="\\(",r.content=e.src.slice(a+2,o)}return e.pos=o+2,!0},A=(e,t,a,o)=>{const c=e.bMarks[t]+e.tShift[t];let s=e.eMarks[t];if(c+2>s||e.src.charCodeAt(c)!==36||e.src.charCodeAt(c+1)!==36)return!1;if(o)return!0;let r=e.skipSpacesBack(s,c),n=c+2,i,u=!1;r-n>=2&&e.src.charCodeAt(r-1)===36&&e.src.charCodeAt(r-2)===36?(i=e.src.slice(n,r-2),u=!0):i=e.src.slice(n,s);let l=t,h="";for(;!u&&(l++,!(l>=a||(n=e.bMarks[l]+e.tShift[l],s=e.eMarks[l],n<s&&e.tShift[l]<e.blkIndent)));)r=e.skipSpacesBack(s,n),r-n>=2&&e.src.charCodeAt(r-1)===36&&e.src.charCodeAt(r-2)===36&&(h=e.src.slice(n,r-2),u=!0);e.line=u?l+1:l;const f=e.push("math_block","math",0);return f.block=!0,f.content=(i?`${i}
|
|
`:"")+e.getLines(t+1,l,e.tShift[t],!0)+(h?`${h}
|
|
`:""),f.map=[t,e.line],f.markup="$$",!0},$=()=>(e,t,a,o)=>{const c=e.bMarks[t]+e.tShift[t];let s=e.eMarks[t];if(c+2>s||e.src.charCodeAt(c)!==92||e.src.charCodeAt(c+1)!==91)return!1;if(o)return!0;let r=e.skipSpacesBack(s,c),n=c+2,i,u=!1;r-n>=2&&e.src.charCodeAt(r-1)===93&&e.src.charCodeAt(r-2)===92?(i=e.src.slice(n,r-2),u=!0):i=e.src.slice(n,s);let l=t,h="";for(;!u&&(l++,!(l>=a||(n=e.bMarks[l]+e.tShift[l],s=e.eMarks[l],n<s&&e.tShift[l]<e.blkIndent)));)r=e.skipSpacesBack(s,n),r-n>=2&&e.src.charCodeAt(r-1)===93&&e.src.charCodeAt(r-2)===92&&(h=e.src.slice(n,r-2).trimEnd(),u=!0);if(!u)return!1;e.line=l+1;const f=e.push("math_block","math",0);return f.block=!0,f.content=(i?`${i}
|
|
`:"")+e.getLines(t+1,l,e.tShift[t],!0)+(h?`${h}
|
|
`:""),f.map=[t,e.line],f.markup="\\[",!0},m={alt:["paragraph","reference","blockquote","list"]},S=(e,t)=>{if(typeof t?.render!="function")throw new Error('[@mdit/plugin-tex]: "render" option should be a function');const{allowInlineWithSpace:a=!1,mathFence:o=!1,delimiters:c="dollars",render:s}=t;if(o){const r=e.renderer.rules.fence;e.renderer.rules.fence=(...n)=>{const[i,u,,l]=n,{content:h,info:f}=i[u];return f.trim()==="math"?s(h,!0,l):r(...n)}}(c==="dollars"||c==="all")&&(e.inline.ruler.after("escape","math_inline_dollar",b(a)),e.block.ruler.after("blockquote","math_block_dollar",A,m)),(c==="brackets"||c==="all")&&(e.inline.ruler.before("escape","math_inline_bracket",C()),e.block.ruler.after("blockquote","math_block_bracket",$(),m)),e.renderer.rules.math_inline=(r,n,i,u)=>s(r[n].content,!1,u),e.renderer.rules.math_block=(r,n,i,u)=>s(r[n].content,!0,u)};export{S as tex};
|
|
//# sourceMappingURL=browser.js.map
|