9 lines
4.6 KiB
JavaScript
9 lines
4.6 KiB
JavaScript
const d=(e,n)=>e[n].meta.subId>0?`:${e[n].meta.subId}`:"",C=(e,n,r,l)=>`${typeof l.docId=="string"?`-${l.docId}-`:""}${(e[n].meta.id+1).toString()}`,v=(e,n)=>`[${(e[n].meta.id+1).toString()}${d(e,n)}]`,g=(e,n,r,l,o)=>{const s=o.rules.footnote_anchorName(e,n,r,l,o),f=o.rules.footnote_caption(e,n,r,l,o);return`<sup class="footnote-ref"><a href="#footnote${s}">${f}</a><a class="footnote-anchor" id="footnote-ref${s}${d(e,n)}"></a></sup>`},I=(e,n,r)=>`<hr class="footnotes-sep"${r.xhtmlOut?" /":""}>
|
|
<section class="footnotes">
|
|
<ol class="footnotes-list">
|
|
`,T=()=>`</ol>
|
|
</section>
|
|
`,y=(e,n,r,l,o)=>`<li id="footnote${o.rules.footnote_anchorName(e,n,r,l,o)}${d(e,n)}" class="footnote-item">`,A=()=>`</li>
|
|
`,M=(e,n,r,l,o)=>` <a href="#footnote-ref${o.rules.footnote_anchorName(e,n,r,l,o)}${d(e,n)}" class="footnote-backref">↩︎</a>`,w=(e,n,r,l)=>{const o=e.bMarks[n]+e.tShift[n],s=e.eMarks[n];let f;if(o+4>s||e.src.charCodeAt(o)!==91||e.src.charCodeAt(o+1)!==94)return!1;let t=o+2;for(;t<s;){if(f=e.src.charCodeAt(t),f===32)return!1;if(f===93)break;t++}if(t===o+2||t+1>=s||e.src.charCodeAt(++t)!==58)return!1;if(l)return!0;t++,(e.env.footnotes??={}).refs??={};const u=e.src.slice(o+2,t-2);e.env.footnotes.refs[`:${u}`]=-1;const c=e.push("footnote_reference_open","",1);c.meta={label:u},c.level=e.level++;const i=e.bMarks[n],a=e.tShift[n],p=e.sCount[n],k=e.parentType,_=t,b=e.sCount[n]+t-(e.bMarks[n]+e.tShift[n]);let h=b;for(;t<s;){const m=e.src.charCodeAt(t);if(m===9)h+=4-h%4;else if(m===32)h++;else break;t++}e.tShift[n]=t-_,e.sCount[n]=h-b,e.bMarks[n]=_,e.blkIndent+=4,e.parentType="footnote",e.sCount[n]<e.blkIndent&&(e.sCount[n]+=e.blkIndent),e.md.block.tokenize(e,n,r),e.parentType=k,e.blkIndent-=4,e.tShift[n]=a,e.sCount[n]=p,e.bMarks[n]=i;const $=e.push("footnote_reference_close","",-1);return $.level=--e.level,!0},S=(e,n)=>{const r=e.posMax,l=e.pos;if(l+2>=r||e.src.charCodeAt(l)!==94||e.src.charCodeAt(l+1)!==91)return!1;const o=e.md.helpers.parseLinkLabel(e,l+1);if(o<0)return!1;const s=l+2;if(!n){const f=((e.env.footnotes??={}).list??=[]).length,t=[];e.md.inline.parse(e.src.slice(s,o),e.md,e.env,t);const u=e.push("footnote_ref","",0);u.meta={id:f},e.env.footnotes.list[f]={content:e.src.slice(s,o),tokens:t}}return e.pos=o+1,e.posMax=r,!0},x=(e,n)=>{const r=e.pos,l=e.posMax;let o;if(r+3>l||!e.env.footnotes?.refs||e.src.charCodeAt(r)!==91||e.src.charCodeAt(r+1)!==94)return!1;let s=r+2;for(;s<l;){if(o=e.src.charCodeAt(s),o===32||o===10)return!1;if(o===93)break;s++}if(s===r+2||s>=l)return!1;s++;const f=e.src.slice(r+2,s-1);if(typeof e.env.footnotes.refs[`:${f}`]>"u")return!1;if(!n){const t=e.env.footnotes.list??=[],{refs:u}=e.env.footnotes;let c;u[`:${f}`]<0?(c=t.length,t[c]={label:f,count:0},u[`:${f}`]=c):c=u[`:${f}`];const i=t[c].count;t[c].count=t[c].count+1;const a=e.push("footnote_ref","",0);a.meta={id:c,subId:i,label:f}}return e.pos=s,e.posMax=l,!0},N=e=>{const n={};let r,l,o=!1;if(!e.env.footnotes?.list)return e.tokens=e.tokens.filter(t=>t.type==="footnote_reference_open"?(o=!0,!1):t.type==="footnote_reference_close"?(o=!1,!1):!o),!1;const{list:s}=e.env.footnotes;e.tokens=e.tokens.filter(t=>t.type==="footnote_reference_open"?(o=!0,r=[],l=t.meta.label,!1):t.type==="footnote_reference_close"?(o=!1,n[`:${l}`]=r,!1):(o&&r.push(t),!o));const f=new e.Token("footnote_block_open","",1);e.tokens.push(f);for(let t=0,{length:u}=s;t<u;t++){const c=new e.Token("footnote_open","",1);c.meta={id:t,label:s[t].label},e.tokens.push(c);let i;if(s[t].tokens){const a=new e.Token("paragraph_open","p",1);a.block=!0;const p=new e.Token("inline","",0);p.children=s[t].tokens,p.content=s[t].content;const k=new e.Token("paragraph_close","p",-1);k.block=!0,e.tokens.push(a,p,k)}else if(s[t].label){const a=n[`:${s[t].label}`];a&&e.tokens.push(...a)}e.tokens[e.tokens.length-1].type==="paragraph_close"?i=e.tokens.pop()??null:i=null;for(let a=0;a<(Number(s[t].count)>0?s[t].count:1);a++){const p=new e.Token("footnote_anchor","",0);p.meta={id:t,subId:a,label:s[t].label},e.tokens.push(p)}i&&e.tokens.push(i),e.tokens.push(new e.Token("footnote_close","",-1))}return e.tokens.push(new e.Token("footnote_block_close","",-1)),!0},L=e=>{e.renderer.rules.footnote_ref=g,e.renderer.rules.footnote_block_open=I,e.renderer.rules.footnote_block_close=T,e.renderer.rules.footnote_open=y,e.renderer.rules.footnote_close=A,e.renderer.rules.footnote_anchor=M,e.renderer.rules.footnote_caption=v,e.renderer.rules.footnote_anchorName=C,e.block.ruler.before("reference","footnoteDef",w,{alt:["paragraph","reference"]}),e.inline.ruler.after("image","footnoteInline",S),e.inline.ruler.after("footnoteInline","footnote_ref",x),e.core.ruler.after("inline","footnoteTail",N)};export{L as footnote};
|
|
//# sourceMappingURL=index.js.map
|