@mdit/plugin-sub
Version:
sub plugin for MarkdownIt
2 lines • 3.21 kB
JavaScript
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.mdItPluginSub={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),String.raw`\$&`;let t=/\\([ \\!"#$%&'()*+,./:;<=>?@[\]^_`{|}~-])/gu,n=/(^|[^\\])(\\\\)*\s/u,r=e=>{let{markerCode:r,tag:i,token:a,markup:o,allowSpace:s,attrs:c}=e,l=o.length;return(e,u)=>{let d=e.posMax,f=e.pos;if(e.src.charCodeAt(f)!==r||u||f+2*l>=d||l===2&&e.src.charCodeAt(f+1)!==r)return!1;e.pos=f+l;let p=!1;for(;e.pos<=d-l;){if(e.src.charCodeAt(e.pos)===r&&(l===1||e.src.charCodeAt(e.pos+1)===r)){p=!0;break}e.md.inline.skipToken(e)}if(!p||f+l===e.pos)return e.pos=f,!1;let m=e.src.slice(f+l,e.pos);if(!s&&n.test(m))return e.pos=f,!1;e.posMax=e.pos,e.pos=f+l;let h=e.push(`${a}_open`,i,1);h.markup=o,c&&(h.attrs=c);let g=e.push(`text`,``,0);g.content=m.replace(t,`$1`);let _=e.push(`${a}_close`,i,-1);return _.markup=o,e.pos=e.posMax+l,e.posMax=d,!0}},i=e=>(t,n)=>{let r=t.pos,i=t.src.charCodeAt(r);if(n||i!==e)return!1;let a=t.scanDelims(t.pos,!0),{length:o}=a;if(o<2)return!1;let s=String.fromCharCode(i);if(o%2){let e=t.push(`text`,``,0);e.content=s,o--}for(let n=0;n<o;n+=2){let n=t.push(`text`,``,0);n.content=s+s,(a.can_open||a.can_close)&&t.delimiters.push({marker:e,length:0,token:t.tokens.length-1,end:-1,open:a.can_open,close:a.can_close})}return t.pos+=a.length,!0},a=e=>{let{markerCode:t,tag:n,token:r,markup:i,attrs:a}=e,o=`${r}_close`;return(e,s)=>{let c,l=[],u=s.length;for(let d=0;d<u;d++){let u=s[d];if(u.marker===t&&u.end!==-1){let d=s[u.end];c=e.tokens[u.token],c.type=`${r}_open`,c.tag=n,c.nesting=1,c.markup=i,c.content=``,a&&(c.attrs=a),c=e.tokens[d.token],c.type=o,c.tag=n,c.nesting=-1,c.markup=i,c.content=``,d.end=-1,u.end=-1,e.tokens[d.token-1].type===`text`&&e.tokens[d.token-1].content===String.fromCharCode(t)&&l.push(d.token-1)}}for(;l.length>0;){let t=l.pop(),n=t+1;for(;n<e.tokens.length&&e.tokens[n].type===o;)n++;n--,c=e.tokens[n],e.tokens[n]=e.tokens[t],e.tokens[t]=c}}},o=e=>t=>{e(t,t.delimiters);let n=t.tokens_meta,r=n.length;for(let i=0;i<r;i++){let r=n[i];r?.delimiters.length&&e(t,r.delimiters)}return!0},s=(e,t)=>{if(!t||typeof t.marker!=`string`||typeof t.token!=`string`||typeof t.tag!=`string`)throw Error(`Invalid options for inlineRule plugin: 'marker', 'token', and 'tag' are required string properties.`);let{marker:n,tag:s,token:c,attrs:l,nested:u=!1,placement:d=`after-emphasis`}=t;if(n.length!==1)throw Error(`Invalid marker for inlineRule plugin: 'marker' must be a single character.`);let f=u?!0:t?.double??!1,p=u?!1:t?.allowSpace??!1,m=n.charCodeAt(0),h=f?n+n:n,g=`${c}_${n}`,_=d===`before-emphasis`;if(u){let t=i(m),n=o(a({markerCode:m,tag:s,token:c,markup:h,attrs:l}));_?(e.inline.ruler.before(`emphasis`,g,t),e.inline.ruler2.before(`emphasis`,g,n)):(e.inline.ruler.after(`emphasis`,g,t),e.inline.ruler2.after(`emphasis`,g,n))}else{let t=r({markerCode:m,tag:s,token:c,markup:h,allowSpace:p,attrs:l});_?e.inline.ruler.before(`emphasis`,g,t):e.inline.ruler.after(`emphasis`,g,t)}};e.sub=e=>{s(e,{marker:`~`,tag:`sub`,token:`sub`})}});
//# sourceMappingURL=cdn.umd.js.map