very-small-parser
Advanced tools
Comparing version 1.3.0 to 1.4.0
@@ -1,1 +0,1 @@ | ||
var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{css:()=>s,html:()=>n,markdown:()=>r});var n={};e.r(n),e.d(n,{html:()=>R});var r={};e.r(r),e.d(r,{block:()=>ue,inline:()=>J});var s={};e.r(s),e.d(s,{parseDecls:()=>he});const l=(e,t,n,r,s=e.length)=>{const l={type:t,len:s};return n&&(l.children=n),r&&Object.assign(l,r),l},i=(e,t,n)=>{const r=[],s=n.length;let l=n,i=0;for(;i<s;){const n=t(e,l);if(!n)break;n.type&&r.push(n),i+=n.len||0,l=l.slice(n.len)}return[r,i]},c=e=>{const t=e.length;return(n,r)=>{for(let s=0;s<t;s++){const t=(0,e[s])(n,r);if(t)return t}}},o=(e,t,n)=>(r,s)=>{const i=s.match(t);return i?l(i[0],e,r.parse(i[n])):void 0},a=(e,t,n)=>n.replace(e,t),u=(e,t,n)=>n.replaceAll(e,t);class h{parsers;constructor(e){this.parsers=e.parsers}parse(e){return((e,t,n)=>i(e,t,n)[0])(this,c(this.parsers),e)}}const p=(e,t)=>{let n=e.source;for(const e in t)n=a(new RegExp(e,"g"),t[e].source,n);return new RegExp(n,e.flags)},f=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,m=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,d=/(https?:\/\/)(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,4})?\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=,\*]*)/,g=/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,v=/(?:[*+-]|\d+\.)/,S=p(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,{label:f,title:m}),b=/^<!--(?!-?>)[\s\S]*?-->/,_=/^[^<]+/,$=p(/^<([a-z][\w-]*)(?:attr)*? *(\/?)>/,{attr:/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/}),w=/([\w|data-]+)=["']?((?:.(?!["']?\s+(?:\S+)=|\s*\/?[>"']))+.)["']?/gm,x=/^<\/([a-z][\w-]*)>/,y=(e,t)=>{const n=t.match($);if(!n)return;const[r,s,l]=n,i=r.length,c={};if(r.slice(s.length+1,-1-l.length)){const e=t.matchAll(w);for(const[,t,n]of e)c[t]=n}const o={type:"element",tagName:s,properties:c,children:[],len:i};if(!l){const n=t.slice(i),r=e.parsef(n),s=r.len;if(l)o.len+=r.len;else{const e=n.slice(s).match(x);if(!e)return o;o.len+=r.len+(e?.[0].length??0)}o.children=r.children}return o},k=[(e,t)=>{const n=t.match(_);if(!n)return;const r=n[0];return l(r,"text",void 0,{value:r},r.length)},(e,t)=>{const n=t.match(b);if(n){const e=n[0],t=e.slice(4,-3);return l(e,"comment",void 0,{value:t})}},y],R=new class extends h{first;constructor(e){super(e),this.first=c(this.parsers)}parse(e){const t=[],n=e.length;let r=e,s=0;for(;s<n;){const e=this.first(this,r);if(e)t.push(e),s+=e.len||0,r=r.slice(e.len);else{const e={type:"text",value:r[0],len:1};t.push(e),s+=1,r=r.slice(1)}}return t}parsef(e){const[t,n]=i(this,this.first,e);return{type:"root",children:t,len:n}}el(e){return y(this,e)}}({parsers:k}),z=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,A=/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,O=/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,j=/^~~(?=\S)([\s\S]*?\S)~~/,E=/^~~~([\s\S]*)~~~/,P=/^\${1,2}(?=\S)([\s\S]*?\S)\${1,2}/,Z=/^\[\^([a-zA-Z0-9\-_]{1,64})\]/,C=p(/^!?\[(label)\]\s*(\[([^\]]*)\])?/,{label:f}),M=new RegExp("^"+d.source),T=o("sup",/^\^(?=\S)([\s\S]*?\S)\^/,1),D=o("sub",/^~(?=\S)([\s\S]*?\S)~/,1),I=o("mark",/^==(?=\S)([\s\S]*?\S)==/,1),N=/^([#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/,q=o("underline",/^\+\+(?=\S)([\s\S]*?\S)\+\+/,1),B=/^\s{2,}\n(?!\s*$)/,L=/^ *\\n/,X=p(/^!?\[(r1)\]\(r2(?:\s+(title))?\s*\)/,{r1:f,r2:/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,title:m}),F=new RegExp("^[\\s\\S]+?(?=[\\<!\\[_*`:~\\|#@\\$\\^=\\+]| {2,}\\n|("+d.source+")|\\\\n|\\\\`|$)"),G=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H=[(e,t)=>{const n=t.match(G);if(n)return l(n[0],"text",void 0,{value:n[1]})},(e,t)=>{const n=t.match(z);if(n)return l(n[0],"inlineCode",void 0,{value:n[2],wrap:n[1]})},(e,t)=>{const n=t.match(A);if(!n)return;const r=n[4]||n[3]||n[2]||n[1];return l(n[0],"strong",e.parse(r))},(e,t)=>{const n=t.match(O);if(!n)return;const r=n[6]||n[5]||n[4]||n[3]||n[2]||n[1];return l(n[0],"emphasis",e.parse(r))},(e,t)=>{const n=t.match(E);if(n)return l(n[0],"spoiler",e.parse(n[1]))},(e,t)=>{const n=t.match(j);if(n)return l(n[0],"delete",e.parse(n[1]))},(e,t)=>{const n=t.match(P);if(n)return l(n[0],"inlineMath",void 0,{value:n[1]})},(e,t)=>{const n=t.match(Z);if(n)return l(n[0],"footnoteReference",void 0,{value:n[1]})},(e,t)=>{const n=t.match(X);if(!n)return;const r="!"===n[0][0];let s=n[3];return s&&(s=s.slice(1,-1)),r?l(n[0],"image",void 0,{url:n[2],alt:n[1],title:s}):l(n[0],"link",e.parse(n[1]),{url:n[2],title:s})},(e,t)=>{const n=t.match(C);if(!n)return;const r=n[0],s="!"===r[0],i=s?"imageReference":"linkReference";let c,o=n[3],a="full";o||(o=n[1],a=n[2]?"collapsed":"shortcut");const u={identifier:o,referenceType:a};return s?u.alt=n[1]||null:c=e.parse(n[1]),l(r,i,c,u)},(e,t)=>{const n=t.match(M);if(!n)return;const r=n[0];return l(r,"inlineLink",void 0,{value:r})},T,D,I,(e,t)=>{const n=t.match(N);if(!n)return;const r=n[5]||n[2];return l(n[0],"handle",void 0,{value:r,prefix:n[1]})},q,(e,t)=>{const n=t.match(B)||t.match(L);if(n)return l(n[0],"break")},((e=32)=>{const t=new RegExp(`^::([^'\\s:]{1,${e}}?)::`),n=new RegExp(`^:([^'\\s:]{1,${e}}?):`);return(e,r)=>{const s=r.match(t)||r.match(n);if(s)return l(s[0],"icon",void 0,{emoji:s[1]})}})(),(e,t)=>R.el(t),(e,t)=>{const n=t.match(F);if(!n)return;const r=n[0],s=u("...","…",u("(P)","§",u("+-","±",u("--","–",u("---","—",u("'","’",u('"',"”",a(/\(c\)/gi,"©",a(/\(r\)/gi,"®",a(/\(tm\)/gi,"™",a(/^'(?=\S)/,"‘",a(/^"(?=\S)/,"“",r))))))))))));return l(r,"text",void 0,{value:s},r.length)}],J=new class extends h{constructor(e){super(e)}parse(e){const t=super.parse(e),n=[],r=t.length;let s;for(let e=0;e<r;e++){const r=t[e];"text"===r.type?s?(s.value+=r.value,s.len+=r.len):n.push(s=r):(n.push(r),s=void 0)}return n}}({parsers:H}),K=/^[\n\r]+/,Q=/^(\s{4}[^\n]+)+/,U=/^ *(`{3,}|~{3,})([^\s]*) *([^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,V=/^ *\$\$[ \.]*(\S+)? *\n([\s\S]*?)\s*\$\$ *(?:\n+|$)/,W=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,Y=/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,ee=/^( *>[^\n]+(\n(?!^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$))[^\n]+)*)+/,te=/^(\s*)([*+-]|\d\.)(\s{1,2}|\t)/,ne=/\n\n(?!\s*$)/,re=p(/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm,{bull:v}),se=p(/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,{bull:v,hr:g,def:S}),le=/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/,ie=(e,t)=>{const n=a(/([^\\])\|/g,"$1 |",e).split(/ +\| */);if(void 0!==t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(let e=0;e<n.length;e++)n[e]=a(/\\\|/g,"|",n[e]);return n},ce=/^\[\^([a-zA-Z0-9\-_]+)\]: *([^\n]*(\n?(( {2}([^\n]*)\n?)|\n(?!\n))*)?)/,oe=p(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/,{bull:v}),ae=[(e,t)=>{const n=t.match(K);if(n)return l(n[0],"")},(e,t)=>{const n=t.match(Q);if(!n)return;const r=n[0],s={value:a(/\n+$/,"",a(/^ {4}/gm,"",r)),lang:null};return l(r,"code",void 0,s,r.length)},(e,t)=>{const n=t.match(U);if(!n)return;const r=n[0],s={value:n[4]||n[3],lang:n[2]||"",meta:n.length>4?n[3]:null};return l(r,"code",void 0,s)},(e,t)=>{const n=t.match(V);if(n)return l(n[0],"math",void 0,{value:n[2]})},(e,t)=>{const n=t.match(g);if(n)return l(n[0],"thematicBreak",void 0,{value:n[1]})},(e,t)=>{let n=t.match(W);if(n){const t=n[2];return l(n[0],"heading",e.parsei(t),{depth:n[1].length})}if(n=t.match(Y),n){const t=n[1];return l(n[0],"heading",e.parsei(t),{depth:"-"===n[2]?1:2})}},(e,t)=>{const n=t.match(ee);if(!n)return;const r=n[0],s=a(/^ *> ?/gm,"",r),i=e.parse(s);return l(r,"blockquote",i)},(e,t)=>{const n=t.match(se);if(!n)return;const r=n[0],s=(e=>e.match(re))(r);if(!s)return;const i=s.length,c=[];let o=!1,u=null,h=!1;for(let t=0;t<i;t++){const n=s[t],r=n.match(te);if(!r)return;const l=n.slice(r[0].length),i=r[2];0===t&&i.length>1&&(o=!0,u=Number.parseInt(i,10));let p=a(/^ {1,4}/gm,"",l),f=null;if("["===p[0]&&"]"===p[2])switch(p[1]){case"x":case"X":p=p.substr(3),f=!0;break;case" ":p=p.substr(3),f=!1}const m=ne.test(l);m&&(h=!0),c.push({type:"listItem",loose:m,checked:f,children:e.parse(p)})}return l(r,"list",c,{ordered:o,start:u,loose:h})},(e,t)=>{const n=t.match(le);if(!n)return;const r=n[0],s=n[1],i=a(/^ *|\| *$/g,"",n[2]).split(/ *\| */).map((e=>":"===(e=e.trim())[0]?":"===e[e.length-1]?"center":"left":":"===e[e.length-1]?"right":null)),c=n[3]?a(/(?: *\| *)?\n$/,"",n[3]).split("\n"):[],o=[],u=ie(a(/^ *| *\| *$/g,"",s)).map((t=>({type:"tableCell",children:e.parsei(t)})));if(o.push({type:"tableRow",children:u}),c&&c.length)for(let t=0;t<c.length;t++){const n=c[t],r=ie(a(/^ *\| *| *\| *$/g,"",n),u.length);o.push({type:"tableRow",children:r.map((t=>({type:"tableCell",children:e.parsei(t)})))})}return l(r,"table",o,{align:i})},(e,t)=>{const n=t.match(ce);if(!n)return;const r=n[0],s=n[1],i=a(/^ {1,4}/gm,"",n[2]),c=e.parse(i);return l(r,"footnoteDefinition",c,{identifier:s})},(e,t)=>{const n=t.match(S);if(!n)return;const r=n[0];return l(r,"definition",void 0,{identifier:n[1],title:n[3]||null,url:n[2]})},(e,t)=>R.el(t),(e,t)=>{const n=t.match(oe);if(n)return l(n[0],"paragraph",e.parsei(n[1].trim()))}],ue=new class extends h{inline;constructor(e){super(e),this.inline=e.inline}parser(e){return{type:"root",children:this.parse(e),len:e.length}}parsei(e){return this.inline.parse(e)}}({parsers:ae,inline:J}),he=e=>{const t={},n=e.split(";"),r=n.length;for(let e=0;e<r;e++){const r=n[e],s=r.indexOf(":");if(-1===s)continue;const l=r.slice(0,s).trim(),i=r.slice(s+1).trim();l&&i&&(t[l]=i)}return t};module.exports=t; | ||
var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{css:()=>s,html:()=>n,markdown:()=>r});var n={};e.r(n),e.d(n,{html:()=>R});var r={};e.r(r),e.d(r,{block:()=>ue,inline:()=>J});var s={};e.r(s),e.d(s,{parseDecls:()=>he});const l=(e,t,n,r,s=e.length)=>{const l={type:t,len:s};return n&&(l.children=n),r&&Object.assign(l,r),l},i=(e,t,n)=>{const r=[],s=n.length;let l=n,i=0;for(;i<s;){const n=t(e,l);if(!n)break;n.type&&r.push(n),i+=n.len||0,l=l.slice(n.len)}return[r,i]},c=e=>{const t=e.length;return(n,r)=>{for(let s=0;s<t;s++){const t=(0,e[s])(n,r);if(t)return t}}},o=(e,t,n)=>(r,s)=>{const i=s.match(t);return i?l(i[0],e,r.parse(i[n])):void 0},a=(e,t,n)=>n.replace(e,t),u=(e,t,n)=>n.replaceAll(e,t);class h{parsers;constructor(e){this.parsers=e.parsers}parse(e){return((e,t,n)=>i(e,t,n)[0])(this,c(this.parsers),e)}}const p=(e,t)=>{let n=e.source;for(const e in t)n=a(new RegExp(e,"g"),t[e].source,n);return new RegExp(n,e.flags)},f=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,d=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,m=/(https?:\/\/)(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,4})?\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=,\*]*)/,g=/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,v=p(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,{label:f,title:d}),S=/^<!--(?!-?>)[\s\S]*?-->/,b=/^[^<]+/,_=p(/^<([a-z][\w-]*)(?:attr)*? *(\/?)>/,{attr:/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/}),$=/([\w|data-]+)=["']?((?:.(?!["']?\s+(?:\S+)=|\s*\/?[>"']))+.)["']?/gm,w=/^<\/([a-z][\w-]*)>/,y=(e,t)=>{const n=t.match(_);if(!n)return;const[r,s,l]=n,i=r.length,c={};if(r.slice(s.length+1,-1-l.length)){const e=t.matchAll($);for(const[,t,n]of e)c[t]=n}const o={type:"element",tagName:s,properties:c,children:[],len:i};if(!l){const n=t.slice(i),r=e.parsef(n),s=r.len;if(l)o.len+=r.len;else{const e=n.slice(s).match(w);if(!e)return o;o.len+=r.len+(e?.[0].length??0)}o.children=r.children}return o},x=[(e,t)=>{const n=t.match(b);if(!n)return;const r=n[0];return l(r,"text",void 0,{value:r},r.length)},(e,t)=>{const n=t.match(S);if(n){const e=n[0],t=e.slice(4,-3);return l(e,"comment",void 0,{value:t})}},y],R=new class extends h{first;constructor(e){super(e),this.first=c(this.parsers)}parse(e){const t=[],n=e.length;let r=e,s=0;for(;s<n;){const e=this.first(this,r);if(e)t.push(e),s+=e.len||0,r=r.slice(e.len);else{const e={type:"text",value:r[0],len:1};t.push(e),s+=1,r=r.slice(1)}}return t}parsef(e){const[t,n]=i(this,this.first,e);return{type:"root",children:t,len:n}}el(e){return y(this,e)}}({parsers:x}),k=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,z=/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,O=/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,A=/^~~(?=\S)([\s\S]*?\S)~~/,E=/^~~~([\s\S]*)~~~/,j=/^\${1,2}(?=\S)([\s\S]*?\S)\${1,2}/,C=/^\[\^([a-zA-Z0-9\-_]{1,64})\]/,P=p(/^!?\[(label)\]\s*(\[([^\]]*)\])?/,{label:f}),Z=new RegExp("^"+m.source),L=o("sup",/^\^(?=\S)([\s\S]*?\S)\^/,1),M=o("sub",/^~(?=\S)([\s\S]*?\S)~/,1),T=o("mark",/^==(?=\S)([\s\S]*?\S)==/,1),D=/^([#~@])(?![#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/,N=o("underline",/^\+\+(?=\S)([\s\S]*?\S)\+\+/,1),q=/^\s{2,}\n(?!\s*$)/,B=/^ *\\n/,I=p(/^!?\[(r1)\]\(r2(?:\s+(title))?\s*\)/,{r1:f,r2:/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,title:d}),F=new RegExp("^[\\s\\S]+?(?=[\\<!\\[_*`:~\\|#@\\$\\^=\\+]| {2,}\\n|("+m.source+")|\\\\n|\\\\`|$)"),G=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,H=[(e,t)=>{const n=t.match(G);if(n)return l(n[0],"text",void 0,{value:n[1]})},(e,t)=>{const n=t.match(k);if(n)return l(n[0],"inlineCode",void 0,{value:n[2],wrap:n[1]})},(e,t)=>{const n=t.match(z);if(!n)return;const r=n[4]||n[3]||n[2]||n[1];return l(n[0],"strong",e.parse(r))},(e,t)=>{const n=t.match(O);if(!n)return;const r=n[6]||n[5]||n[4]||n[3]||n[2]||n[1];return l(n[0],"emphasis",e.parse(r))},(e,t)=>{const n=t.match(E);if(n)return l(n[0],"spoiler",e.parse(n[1]))},(e,t)=>{const n=t.match(A);if(n)return l(n[0],"delete",e.parse(n[1]))},(e,t)=>{const n=t.match(j);if(n)return l(n[0],"inlineMath",void 0,{value:n[1]})},(e,t)=>{const n=t.match(C);if(n)return l(n[0],"footnoteReference",void 0,{value:n[1]})},(e,t)=>{const n=t.match(I);if(!n)return;const r="!"===n[0][0];let s=n[3];return s&&(s=s.slice(1,-1)),r?l(n[0],"image",void 0,{url:n[2],alt:n[1],title:s}):l(n[0],"link",e.parse(n[1]),{url:n[2],title:s})},(e,t)=>{const n=t.match(P);if(!n)return;const r=n[0],s="!"===r[0],i=s?"imageReference":"linkReference";let c,o=n[3],a="full";o||(o=n[1],a=n[2]?"collapsed":"shortcut");const u={identifier:o,referenceType:a};return s?u.alt=n[1]||null:c=e.parse(n[1]),l(r,i,c,u)},(e,t)=>{const n=t.match(Z);if(!n)return;const r=n[0];return l(r,"inlineLink",void 0,{value:r})},L,M,T,(e,t)=>{const n=t.match(D);if(!n)return;const r=n[5]||n[2];return l(n[0],"handle",void 0,{value:r,prefix:n[1]})},N,(e,t)=>{const n=t.match(q)||t.match(B);if(n)return l(n[0],"break")},((e=32)=>{const t=new RegExp(`^::([^'\\s:]{1,${e}}?)::`),n=new RegExp(`^:([^'\\s:]{1,${e}}?):`);return(e,r)=>{const s=r.match(t)||r.match(n);if(s)return l(s[0],"icon",void 0,{emoji:s[1]})}})(),(e,t)=>R.el(t),(e,t)=>{const n=t.match(F);if(!n)return;const r=n[0],s=u("...","…",u("(P)","§",u("+-","±",u("--","–",u("---","—",u("'","’",u('"',"”",a(/\(c\)/gi,"©",a(/\(r\)/gi,"®",a(/\(tm\)/gi,"™",a(/^'(?=\S)/,"‘",a(/^"(?=\S)/,"“",r))))))))))));return l(r,"text",void 0,{value:s},r.length)}],J=new class extends h{constructor(e){super(e)}parse(e){const t=super.parse(e),n=[],r=t.length;let s;for(let e=0;e<r;e++){const r=t[e];"text"===r.type?s?(s.value+=r.value,s.len+=r.len):n.push(s=r):(n.push(r),s=void 0)}return n}}({parsers:H}),K=/^[\n\r]+/,Q=/^(\s{4}[^\n]+)+/,U=/^ *(`{3,}|~{3,})([^\s]*) *([^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,V=/^ *\$\$[ \.]*(\S+)? *\n([\s\S]*?)\s*\$\$ *(?:\n+|$)/,W=/^ *(#{1,6}) +([^\n]+?) *(?:#+ *)?(?:\n+|$)/,X=/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,Y=/^( *>[^\n]+(\n(?!^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$))[^\n]+)*)+/,ee=/^\s{0,3}([*+-]|\d{1,3}\.)\s{1,42}/,te=/(?:[*+-]|\d{1,3}\.)/,ne=/\n\s*\n(?!\s*$)/,re=p(/^( {0,333})(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm,{bull:te}),se=p(/^ {0,3}(?:bull) (?:(?!\r?\n\r?\n)[\s\S])+/,{bull:te,hr:g,def:v}),le=(e,t)=>{const n=a(/([^\\])\|/g,"$1 |",e).split(/ +\| */);if(void 0!==t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(let e=0;e<n.length;e++)n[e]=a(/\\\|/g,"|",n[e]);return n},ie=/^ *\|?(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/,ce=/^\[\^([a-zA-Z0-9\-_]+)\]: *([^\n]*(\n?(( {2}([^\n]*)\n?)|\n(?!\n))*)?)/,oe=p(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/,{bull:te}),ae=[(e,t)=>{const n=t.match(K);if(n)return l(n[0],"")},(e,t)=>{const n=t.match(Q);if(!n)return;const r=n[0],s={value:a(/\n+$/,"",a(/^ {4}/gm,"",r)),lang:null};return l(r,"code",void 0,s,r.length)},(e,t)=>{const n=t.match(U);if(!n)return;const r=n[0],s={value:n[4]||n[3],lang:n[2]||"",meta:n.length>4?n[3]:null};return l(r,"code",void 0,s)},(e,t)=>{const n=t.match(V);if(n)return l(n[0],"math",void 0,{value:n[2]})},(e,t)=>{const n=t.match(g);if(n)return l(n[0],"thematicBreak",void 0,{value:n[1]})},(e,t)=>{let n=t.match(W);if(n){const t=n[2];return l(n[0],"heading",e.parsei(t),{depth:n[1].length})}if(n=t.match(X),n){const t=n[1];return l(n[0],"heading",e.parsei(t),{depth:"-"===n[2]?2:1})}},(e,t)=>{const n=t.match(Y);if(!n)return;const r=n[0],s=a(/^ *> ?/gm,"",r),i=e.parse(s);return l(r,"blockquote",i)},(e,t)=>{const n=t.match(se);if(!n)return;const r=n[0],s=(e=>e.match(re))(r);if(!s)return;const i=s.length,c=[];let o=null;for(let t=0;t<i;t++){const n=s[t],r=n.match(ee);if(!r)return;const[l,i]=r;let u=n.slice(l.length);0===t&&i.length>1&&(o=Number(i));let h=null;"["===u[0]&&"]"===u[2]&&" "===u[3]&&(h=" "!==u[1],u=u.slice(4));const p=u.indexOf("\n");if(p>0){let e=0;for(let t=p+1;t<p+4&&" "===u[t];t++)e++;e&&(u=a(new RegExp("^ {1,"+e+"}","gm"),"",u))}c.push({type:"listItem",spread:ne.test(u),checked:h,children:e.parse(u)})}return l(r,"list",c,{ordered:null!==o,start:o})},(e,t)=>{const n=t.match(ie);if(!n)return;const r=n[0],s=n[1],i=a(/^ *|\| *$/g,"",n[2]).split(/ *\| */).map((e=>":"===(e=e.trim())[0]?":"===e[e.length-1]?"center":"left":":"===e[e.length-1]?"right":null)),c=n[3]?a(/(?: *\| *)?\n$/,"",n[3]).split("\n"):[],o=[],u=le(a(/^ *| *\| *$/g,"",s)).map((t=>({type:"tableCell",children:e.parsei(t)})));if(o.push({type:"tableRow",children:u}),c&&c.length)for(let t=0;t<c.length;t++){const n=c[t],r=le(a(/^ *\| *| *\| *$/g,"",n),u.length);o.push({type:"tableRow",children:r.map((t=>({type:"tableCell",children:e.parsei(t)})))})}return l(r,"table",o,{align:i})},(e,t)=>{const n=t.match(ce);if(!n)return;const r=n[0],s=n[1],i=s.toLowerCase(),c=a(/^ {1,4}/gm,"",n[2]),o=e.parse(c);return l(r,"footnoteDefinition",o,{label:s,identifier:i})},(e,t)=>{const n=t.match(v);if(!n)return;const r=n[0],s=n[1],i=n[3];return l(r,"definition",void 0,{label:s,identifier:s.toLowerCase(),title:i?i.slice(1,-1):null,url:n[2]})},(e,t)=>R.el(t),(e,t)=>{const n=t.match(oe);if(n)return l(n[0],"paragraph",e.parsei(n[1].trim()))}],ue=new class extends h{inline;constructor(e){super(e),this.inline=e.inline}parser(e){const t=this.parse(e),n={type:"root",children:t,len:e.length},r=t.length;for(let e=0;e<r-1;e++){const n=t[e];if("list"===n?.type){const r=t[e+1];"list"===r?.type&&(n.spread=!0,n.children.push(...r.children),t.splice(e+1,1),e--)}}return n}parsei(e){return this.inline.parse(e)}}({parsers:ae,inline:J}),he=e=>{const t={},n=e.split(";"),r=n.length;for(let e=0;e<r;e++){const r=n[e],s=r.indexOf(":");if(-1===s)continue;const l=r.slice(0,s).trim(),i=r.slice(s+1).trim();l&&i&&(t[l]=i)}return t};module.exports=t; |
@@ -1,1 +0,1 @@ | ||
var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.d(t,{AH:()=>s,qy:()=>n,wD:()=>r});var n={};e.r(n),e.d(n,{html:()=>R});var r={};e.r(r),e.d(r,{block:()=>ue,inline:()=>J});var s={};e.r(s),e.d(s,{parseDecls:()=>he});const l=(e,t,n,r,s=e.length)=>{const l={type:t,len:s};return n&&(l.children=n),r&&Object.assign(l,r),l},i=(e,t,n)=>{const r=[],s=n.length;let l=n,i=0;for(;i<s;){const n=t(e,l);if(!n)break;n.type&&r.push(n),i+=n.len||0,l=l.slice(n.len)}return[r,i]},c=e=>{const t=e.length;return(n,r)=>{for(let s=0;s<t;s++){const t=(0,e[s])(n,r);if(t)return t}}},o=(e,t,n)=>(r,s)=>{const i=s.match(t);return i?l(i[0],e,r.parse(i[n])):void 0},a=(e,t,n)=>n.replace(e,t),u=(e,t,n)=>n.replaceAll(e,t);class h{parsers;constructor(e){this.parsers=e.parsers}parse(e){return((e,t,n)=>i(e,t,n)[0])(this,c(this.parsers),e)}}const p=(e,t)=>{let n=e.source;for(const e in t)n=a(new RegExp(e,"g"),t[e].source,n);return new RegExp(n,e.flags)},f=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,m=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,d=/(https?:\/\/)(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,4})?\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=,\*]*)/,g=/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,v=/(?:[*+-]|\d+\.)/,S=p(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,{label:f,title:m}),b=/^<!--(?!-?>)[\s\S]*?-->/,_=/^[^<]+/,$=p(/^<([a-z][\w-]*)(?:attr)*? *(\/?)>/,{attr:/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/}),w=/([\w|data-]+)=["']?((?:.(?!["']?\s+(?:\S+)=|\s*\/?[>"']))+.)["']?/gm,y=/^<\/([a-z][\w-]*)>/,x=(e,t)=>{const n=t.match($);if(!n)return;const[r,s,l]=n,i=r.length,c={};if(r.slice(s.length+1,-1-l.length)){const e=t.matchAll(w);for(const[,t,n]of e)c[t]=n}const o={type:"element",tagName:s,properties:c,children:[],len:i};if(!l){const n=t.slice(i),r=e.parsef(n),s=r.len;if(l)o.len+=r.len;else{const e=n.slice(s).match(y);if(!e)return o;o.len+=r.len+(e?.[0].length??0)}o.children=r.children}return o},k=[(e,t)=>{const n=t.match(_);if(!n)return;const r=n[0];return l(r,"text",void 0,{value:r},r.length)},(e,t)=>{const n=t.match(b);if(n){const e=n[0],t=e.slice(4,-3);return l(e,"comment",void 0,{value:t})}},x],R=new class extends h{first;constructor(e){super(e),this.first=c(this.parsers)}parse(e){const t=[],n=e.length;let r=e,s=0;for(;s<n;){const e=this.first(this,r);if(e)t.push(e),s+=e.len||0,r=r.slice(e.len);else{const e={type:"text",value:r[0],len:1};t.push(e),s+=1,r=r.slice(1)}}return t}parsef(e){const[t,n]=i(this,this.first,e);return{type:"root",children:t,len:n}}el(e){return x(this,e)}}({parsers:k}),A=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,z=/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,O=/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,j=/^~~(?=\S)([\s\S]*?\S)~~/,E=/^~~~([\s\S]*)~~~/,P=/^\${1,2}(?=\S)([\s\S]*?\S)\${1,2}/,Z=/^\[\^([a-zA-Z0-9\-_]{1,64})\]/,D=p(/^!?\[(label)\]\s*(\[([^\]]*)\])?/,{label:f}),q=new RegExp("^"+d.source),C=o("sup",/^\^(?=\S)([\s\S]*?\S)\^/,1),M=o("sub",/^~(?=\S)([\s\S]*?\S)~/,1),T=o("mark",/^==(?=\S)([\s\S]*?\S)==/,1),H=/^([#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/,I=o("underline",/^\+\+(?=\S)([\s\S]*?\S)\+\+/,1),N=/^\s{2,}\n(?!\s*$)/,B=/^ *\\n/,L=p(/^!?\[(r1)\]\(r2(?:\s+(title))?\s*\)/,{r1:f,r2:/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,title:m}),X=new RegExp("^[\\s\\S]+?(?=[\\<!\\[_*`:~\\|#@\\$\\^=\\+]| {2,}\\n|("+d.source+")|\\\\n|\\\\`|$)"),F=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,G=[(e,t)=>{const n=t.match(F);if(n)return l(n[0],"text",void 0,{value:n[1]})},(e,t)=>{const n=t.match(A);if(n)return l(n[0],"inlineCode",void 0,{value:n[2],wrap:n[1]})},(e,t)=>{const n=t.match(z);if(!n)return;const r=n[4]||n[3]||n[2]||n[1];return l(n[0],"strong",e.parse(r))},(e,t)=>{const n=t.match(O);if(!n)return;const r=n[6]||n[5]||n[4]||n[3]||n[2]||n[1];return l(n[0],"emphasis",e.parse(r))},(e,t)=>{const n=t.match(E);if(n)return l(n[0],"spoiler",e.parse(n[1]))},(e,t)=>{const n=t.match(j);if(n)return l(n[0],"delete",e.parse(n[1]))},(e,t)=>{const n=t.match(P);if(n)return l(n[0],"inlineMath",void 0,{value:n[1]})},(e,t)=>{const n=t.match(Z);if(n)return l(n[0],"footnoteReference",void 0,{value:n[1]})},(e,t)=>{const n=t.match(L);if(!n)return;const r="!"===n[0][0];let s=n[3];return s&&(s=s.slice(1,-1)),r?l(n[0],"image",void 0,{url:n[2],alt:n[1],title:s}):l(n[0],"link",e.parse(n[1]),{url:n[2],title:s})},(e,t)=>{const n=t.match(D);if(!n)return;const r=n[0],s="!"===r[0],i=s?"imageReference":"linkReference";let c,o=n[3],a="full";o||(o=n[1],a=n[2]?"collapsed":"shortcut");const u={identifier:o,referenceType:a};return s?u.alt=n[1]||null:c=e.parse(n[1]),l(r,i,c,u)},(e,t)=>{const n=t.match(q);if(!n)return;const r=n[0];return l(r,"inlineLink",void 0,{value:r})},C,M,T,(e,t)=>{const n=t.match(H);if(!n)return;const r=n[5]||n[2];return l(n[0],"handle",void 0,{value:r,prefix:n[1]})},I,(e,t)=>{const n=t.match(N)||t.match(B);if(n)return l(n[0],"break")},((e=32)=>{const t=new RegExp(`^::([^'\\s:]{1,${e}}?)::`),n=new RegExp(`^:([^'\\s:]{1,${e}}?):`);return(e,r)=>{const s=r.match(t)||r.match(n);if(s)return l(s[0],"icon",void 0,{emoji:s[1]})}})(),(e,t)=>R.el(t),(e,t)=>{const n=t.match(X);if(!n)return;const r=n[0],s=u("...","…",u("(P)","§",u("+-","±",u("--","–",u("---","—",u("'","’",u('"',"”",a(/\(c\)/gi,"©",a(/\(r\)/gi,"®",a(/\(tm\)/gi,"™",a(/^'(?=\S)/,"‘",a(/^"(?=\S)/,"“",r))))))))))));return l(r,"text",void 0,{value:s},r.length)}],J=new class extends h{constructor(e){super(e)}parse(e){const t=super.parse(e),n=[],r=t.length;let s;for(let e=0;e<r;e++){const r=t[e];"text"===r.type?s?(s.value+=r.value,s.len+=r.len):n.push(s=r):(n.push(r),s=void 0)}return n}}({parsers:G}),K=/^[\n\r]+/,Q=/^(\s{4}[^\n]+)+/,U=/^ *(`{3,}|~{3,})([^\s]*) *([^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,V=/^ *\$\$[ \.]*(\S+)? *\n([\s\S]*?)\s*\$\$ *(?:\n+|$)/,W=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,Y=/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,ee=/^( *>[^\n]+(\n(?!^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$))[^\n]+)*)+/,te=/^(\s*)([*+-]|\d\.)(\s{1,2}|\t)/,ne=/\n\n(?!\s*$)/,re=p(/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm,{bull:v}),se=p(/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,{bull:v,hr:g,def:S}),le=/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/,ie=(e,t)=>{const n=a(/([^\\])\|/g,"$1 |",e).split(/ +\| */);if(void 0!==t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(let e=0;e<n.length;e++)n[e]=a(/\\\|/g,"|",n[e]);return n},ce=/^\[\^([a-zA-Z0-9\-_]+)\]: *([^\n]*(\n?(( {2}([^\n]*)\n?)|\n(?!\n))*)?)/,oe=p(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/,{bull:v}),ae=[(e,t)=>{const n=t.match(K);if(n)return l(n[0],"")},(e,t)=>{const n=t.match(Q);if(!n)return;const r=n[0],s={value:a(/\n+$/,"",a(/^ {4}/gm,"",r)),lang:null};return l(r,"code",void 0,s,r.length)},(e,t)=>{const n=t.match(U);if(!n)return;const r=n[0],s={value:n[4]||n[3],lang:n[2]||"",meta:n.length>4?n[3]:null};return l(r,"code",void 0,s)},(e,t)=>{const n=t.match(V);if(n)return l(n[0],"math",void 0,{value:n[2]})},(e,t)=>{const n=t.match(g);if(n)return l(n[0],"thematicBreak",void 0,{value:n[1]})},(e,t)=>{let n=t.match(W);if(n){const t=n[2];return l(n[0],"heading",e.parsei(t),{depth:n[1].length})}if(n=t.match(Y),n){const t=n[1];return l(n[0],"heading",e.parsei(t),{depth:"-"===n[2]?1:2})}},(e,t)=>{const n=t.match(ee);if(!n)return;const r=n[0],s=a(/^ *> ?/gm,"",r),i=e.parse(s);return l(r,"blockquote",i)},(e,t)=>{const n=t.match(se);if(!n)return;const r=n[0],s=(e=>e.match(re))(r);if(!s)return;const i=s.length,c=[];let o=!1,u=null,h=!1;for(let t=0;t<i;t++){const n=s[t],r=n.match(te);if(!r)return;const l=n.slice(r[0].length),i=r[2];0===t&&i.length>1&&(o=!0,u=Number.parseInt(i,10));let p=a(/^ {1,4}/gm,"",l),f=null;if("["===p[0]&&"]"===p[2])switch(p[1]){case"x":case"X":p=p.substr(3),f=!0;break;case" ":p=p.substr(3),f=!1}const m=ne.test(l);m&&(h=!0),c.push({type:"listItem",loose:m,checked:f,children:e.parse(p)})}return l(r,"list",c,{ordered:o,start:u,loose:h})},(e,t)=>{const n=t.match(le);if(!n)return;const r=n[0],s=n[1],i=a(/^ *|\| *$/g,"",n[2]).split(/ *\| */).map((e=>":"===(e=e.trim())[0]?":"===e[e.length-1]?"center":"left":":"===e[e.length-1]?"right":null)),c=n[3]?a(/(?: *\| *)?\n$/,"",n[3]).split("\n"):[],o=[],u=ie(a(/^ *| *\| *$/g,"",s)).map((t=>({type:"tableCell",children:e.parsei(t)})));if(o.push({type:"tableRow",children:u}),c&&c.length)for(let t=0;t<c.length;t++){const n=c[t],r=ie(a(/^ *\| *| *\| *$/g,"",n),u.length);o.push({type:"tableRow",children:r.map((t=>({type:"tableCell",children:e.parsei(t)})))})}return l(r,"table",o,{align:i})},(e,t)=>{const n=t.match(ce);if(!n)return;const r=n[0],s=n[1],i=a(/^ {1,4}/gm,"",n[2]),c=e.parse(i);return l(r,"footnoteDefinition",c,{identifier:s})},(e,t)=>{const n=t.match(S);if(!n)return;const r=n[0];return l(r,"definition",void 0,{identifier:n[1],title:n[3]||null,url:n[2]})},(e,t)=>R.el(t),(e,t)=>{const n=t.match(oe);if(n)return l(n[0],"paragraph",e.parsei(n[1].trim()))}],ue=new class extends h{inline;constructor(e){super(e),this.inline=e.inline}parser(e){return{type:"root",children:this.parse(e),len:e.length}}parsei(e){return this.inline.parse(e)}}({parsers:ae,inline:J}),he=e=>{const t={},n=e.split(";"),r=n.length;for(let e=0;e<r;e++){const r=n[e],s=r.indexOf(":");if(-1===s)continue;const l=r.slice(0,s).trim(),i=r.slice(s+1).trim();l&&i&&(t[l]=i)}return t};var pe=t.AH,fe=t.qy,me=t.wD;export{pe as css,fe as html,me as markdown}; | ||
var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.d(t,{AH:()=>s,qy:()=>n,wD:()=>r});var n={};e.r(n),e.d(n,{html:()=>R});var r={};e.r(r),e.d(r,{block:()=>ue,inline:()=>J});var s={};e.r(s),e.d(s,{parseDecls:()=>he});const l=(e,t,n,r,s=e.length)=>{const l={type:t,len:s};return n&&(l.children=n),r&&Object.assign(l,r),l},i=(e,t,n)=>{const r=[],s=n.length;let l=n,i=0;for(;i<s;){const n=t(e,l);if(!n)break;n.type&&r.push(n),i+=n.len||0,l=l.slice(n.len)}return[r,i]},c=e=>{const t=e.length;return(n,r)=>{for(let s=0;s<t;s++){const t=(0,e[s])(n,r);if(t)return t}}},o=(e,t,n)=>(r,s)=>{const i=s.match(t);return i?l(i[0],e,r.parse(i[n])):void 0},a=(e,t,n)=>n.replace(e,t),u=(e,t,n)=>n.replaceAll(e,t);class h{parsers;constructor(e){this.parsers=e.parsers}parse(e){return((e,t,n)=>i(e,t,n)[0])(this,c(this.parsers),e)}}const p=(e,t)=>{let n=e.source;for(const e in t)n=a(new RegExp(e,"g"),t[e].source,n);return new RegExp(n,e.flags)},f=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,d=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,m=/(https?:\/\/)(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,4})?\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=,\*]*)/,g=/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,v=p(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,{label:f,title:d}),S=/^<!--(?!-?>)[\s\S]*?-->/,b=/^[^<]+/,_=p(/^<([a-z][\w-]*)(?:attr)*? *(\/?)>/,{attr:/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/}),w=/([\w|data-]+)=["']?((?:.(?!["']?\s+(?:\S+)=|\s*\/?[>"']))+.)["']?/gm,$=/^<\/([a-z][\w-]*)>/,y=(e,t)=>{const n=t.match(_);if(!n)return;const[r,s,l]=n,i=r.length,c={};if(r.slice(s.length+1,-1-l.length)){const e=t.matchAll(w);for(const[,t,n]of e)c[t]=n}const o={type:"element",tagName:s,properties:c,children:[],len:i};if(!l){const n=t.slice(i),r=e.parsef(n),s=r.len;if(l)o.len+=r.len;else{const e=n.slice(s).match($);if(!e)return o;o.len+=r.len+(e?.[0].length??0)}o.children=r.children}return o},x=[(e,t)=>{const n=t.match(b);if(!n)return;const r=n[0];return l(r,"text",void 0,{value:r},r.length)},(e,t)=>{const n=t.match(S);if(n){const e=n[0],t=e.slice(4,-3);return l(e,"comment",void 0,{value:t})}},y],R=new class extends h{first;constructor(e){super(e),this.first=c(this.parsers)}parse(e){const t=[],n=e.length;let r=e,s=0;for(;s<n;){const e=this.first(this,r);if(e)t.push(e),s+=e.len||0,r=r.slice(e.len);else{const e={type:"text",value:r[0],len:1};t.push(e),s+=1,r=r.slice(1)}}return t}parsef(e){const[t,n]=i(this,this.first,e);return{type:"root",children:t,len:n}}el(e){return y(this,e)}}({parsers:x}),k=/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,A=/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,z=/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,O=/^~~(?=\S)([\s\S]*?\S)~~/,E=/^~~~([\s\S]*)~~~/,j=/^\${1,2}(?=\S)([\s\S]*?\S)\${1,2}/,C=/^\[\^([a-zA-Z0-9\-_]{1,64})\]/,P=p(/^!?\[(label)\]\s*(\[([^\]]*)\])?/,{label:f}),Z=new RegExp("^"+m.source),D=o("sup",/^\^(?=\S)([\s\S]*?\S)\^/,1),q=o("sub",/^~(?=\S)([\s\S]*?\S)~/,1),L=o("mark",/^==(?=\S)([\s\S]*?\S)==/,1),M=/^([#~@])(?![#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/,T=o("underline",/^\+\+(?=\S)([\s\S]*?\S)\+\+/,1),H=/^\s{2,}\n(?!\s*$)/,N=/^ *\\n/,B=p(/^!?\[(r1)\]\(r2(?:\s+(title))?\s*\)/,{r1:f,r2:/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,title:d}),I=new RegExp("^[\\s\\S]+?(?=[\\<!\\[_*`:~\\|#@\\$\\^=\\+]| {2,}\\n|("+m.source+")|\\\\n|\\\\`|$)"),F=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,G=[(e,t)=>{const n=t.match(F);if(n)return l(n[0],"text",void 0,{value:n[1]})},(e,t)=>{const n=t.match(k);if(n)return l(n[0],"inlineCode",void 0,{value:n[2],wrap:n[1]})},(e,t)=>{const n=t.match(A);if(!n)return;const r=n[4]||n[3]||n[2]||n[1];return l(n[0],"strong",e.parse(r))},(e,t)=>{const n=t.match(z);if(!n)return;const r=n[6]||n[5]||n[4]||n[3]||n[2]||n[1];return l(n[0],"emphasis",e.parse(r))},(e,t)=>{const n=t.match(E);if(n)return l(n[0],"spoiler",e.parse(n[1]))},(e,t)=>{const n=t.match(O);if(n)return l(n[0],"delete",e.parse(n[1]))},(e,t)=>{const n=t.match(j);if(n)return l(n[0],"inlineMath",void 0,{value:n[1]})},(e,t)=>{const n=t.match(C);if(n)return l(n[0],"footnoteReference",void 0,{value:n[1]})},(e,t)=>{const n=t.match(B);if(!n)return;const r="!"===n[0][0];let s=n[3];return s&&(s=s.slice(1,-1)),r?l(n[0],"image",void 0,{url:n[2],alt:n[1],title:s}):l(n[0],"link",e.parse(n[1]),{url:n[2],title:s})},(e,t)=>{const n=t.match(P);if(!n)return;const r=n[0],s="!"===r[0],i=s?"imageReference":"linkReference";let c,o=n[3],a="full";o||(o=n[1],a=n[2]?"collapsed":"shortcut");const u={identifier:o,referenceType:a};return s?u.alt=n[1]||null:c=e.parse(n[1]),l(r,i,c,u)},(e,t)=>{const n=t.match(Z);if(!n)return;const r=n[0];return l(r,"inlineLink",void 0,{value:r})},D,q,L,(e,t)=>{const n=t.match(M);if(!n)return;const r=n[5]||n[2];return l(n[0],"handle",void 0,{value:r,prefix:n[1]})},T,(e,t)=>{const n=t.match(H)||t.match(N);if(n)return l(n[0],"break")},((e=32)=>{const t=new RegExp(`^::([^'\\s:]{1,${e}}?)::`),n=new RegExp(`^:([^'\\s:]{1,${e}}?):`);return(e,r)=>{const s=r.match(t)||r.match(n);if(s)return l(s[0],"icon",void 0,{emoji:s[1]})}})(),(e,t)=>R.el(t),(e,t)=>{const n=t.match(I);if(!n)return;const r=n[0],s=u("...","…",u("(P)","§",u("+-","±",u("--","–",u("---","—",u("'","’",u('"',"”",a(/\(c\)/gi,"©",a(/\(r\)/gi,"®",a(/\(tm\)/gi,"™",a(/^'(?=\S)/,"‘",a(/^"(?=\S)/,"“",r))))))))))));return l(r,"text",void 0,{value:s},r.length)}],J=new class extends h{constructor(e){super(e)}parse(e){const t=super.parse(e),n=[],r=t.length;let s;for(let e=0;e<r;e++){const r=t[e];"text"===r.type?s?(s.value+=r.value,s.len+=r.len):n.push(s=r):(n.push(r),s=void 0)}return n}}({parsers:G}),K=/^[\n\r]+/,Q=/^(\s{4}[^\n]+)+/,U=/^ *(`{3,}|~{3,})([^\s]*) *([^\n]*)\n([\s\S]*?)\s*\1 *(?:\n+|$)/,V=/^ *\$\$[ \.]*(\S+)? *\n([\s\S]*?)\s*\$\$ *(?:\n+|$)/,W=/^ *(#{1,6}) +([^\n]+?) *(?:#+ *)?(?:\n+|$)/,X=/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,Y=/^( *>[^\n]+(\n(?!^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$))[^\n]+)*)+/,ee=/^\s{0,3}([*+-]|\d{1,3}\.)\s{1,42}/,te=/(?:[*+-]|\d{1,3}\.)/,ne=/\n\s*\n(?!\s*$)/,re=p(/^( {0,333})(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm,{bull:te}),se=p(/^ {0,3}(?:bull) (?:(?!\r?\n\r?\n)[\s\S])+/,{bull:te,hr:g,def:v}),le=(e,t)=>{const n=a(/([^\\])\|/g,"$1 |",e).split(/ +\| */);if(void 0!==t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(let e=0;e<n.length;e++)n[e]=a(/\\\|/g,"|",n[e]);return n},ie=/^ *\|?(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/,ce=/^\[\^([a-zA-Z0-9\-_]+)\]: *([^\n]*(\n?(( {2}([^\n]*)\n?)|\n(?!\n))*)?)/,oe=p(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/,{bull:te}),ae=[(e,t)=>{const n=t.match(K);if(n)return l(n[0],"")},(e,t)=>{const n=t.match(Q);if(!n)return;const r=n[0],s={value:a(/\n+$/,"",a(/^ {4}/gm,"",r)),lang:null};return l(r,"code",void 0,s,r.length)},(e,t)=>{const n=t.match(U);if(!n)return;const r=n[0],s={value:n[4]||n[3],lang:n[2]||"",meta:n.length>4?n[3]:null};return l(r,"code",void 0,s)},(e,t)=>{const n=t.match(V);if(n)return l(n[0],"math",void 0,{value:n[2]})},(e,t)=>{const n=t.match(g);if(n)return l(n[0],"thematicBreak",void 0,{value:n[1]})},(e,t)=>{let n=t.match(W);if(n){const t=n[2];return l(n[0],"heading",e.parsei(t),{depth:n[1].length})}if(n=t.match(X),n){const t=n[1];return l(n[0],"heading",e.parsei(t),{depth:"-"===n[2]?2:1})}},(e,t)=>{const n=t.match(Y);if(!n)return;const r=n[0],s=a(/^ *> ?/gm,"",r),i=e.parse(s);return l(r,"blockquote",i)},(e,t)=>{const n=t.match(se);if(!n)return;const r=n[0],s=(e=>e.match(re))(r);if(!s)return;const i=s.length,c=[];let o=null;for(let t=0;t<i;t++){const n=s[t],r=n.match(ee);if(!r)return;const[l,i]=r;let u=n.slice(l.length);0===t&&i.length>1&&(o=Number(i));let h=null;"["===u[0]&&"]"===u[2]&&" "===u[3]&&(h=" "!==u[1],u=u.slice(4));const p=u.indexOf("\n");if(p>0){let e=0;for(let t=p+1;t<p+4&&" "===u[t];t++)e++;e&&(u=a(new RegExp("^ {1,"+e+"}","gm"),"",u))}c.push({type:"listItem",spread:ne.test(u),checked:h,children:e.parse(u)})}return l(r,"list",c,{ordered:null!==o,start:o})},(e,t)=>{const n=t.match(ie);if(!n)return;const r=n[0],s=n[1],i=a(/^ *|\| *$/g,"",n[2]).split(/ *\| */).map((e=>":"===(e=e.trim())[0]?":"===e[e.length-1]?"center":"left":":"===e[e.length-1]?"right":null)),c=n[3]?a(/(?: *\| *)?\n$/,"",n[3]).split("\n"):[],o=[],u=le(a(/^ *| *\| *$/g,"",s)).map((t=>({type:"tableCell",children:e.parsei(t)})));if(o.push({type:"tableRow",children:u}),c&&c.length)for(let t=0;t<c.length;t++){const n=c[t],r=le(a(/^ *\| *| *\| *$/g,"",n),u.length);o.push({type:"tableRow",children:r.map((t=>({type:"tableCell",children:e.parsei(t)})))})}return l(r,"table",o,{align:i})},(e,t)=>{const n=t.match(ce);if(!n)return;const r=n[0],s=n[1],i=s.toLowerCase(),c=a(/^ {1,4}/gm,"",n[2]),o=e.parse(c);return l(r,"footnoteDefinition",o,{label:s,identifier:i})},(e,t)=>{const n=t.match(v);if(!n)return;const r=n[0],s=n[1],i=n[3];return l(r,"definition",void 0,{label:s,identifier:s.toLowerCase(),title:i?i.slice(1,-1):null,url:n[2]})},(e,t)=>R.el(t),(e,t)=>{const n=t.match(oe);if(n)return l(n[0],"paragraph",e.parsei(n[1].trim()))}],ue=new class extends h{inline;constructor(e){super(e),this.inline=e.inline}parser(e){const t=this.parse(e),n={type:"root",children:t,len:e.length},r=t.length;for(let e=0;e<r-1;e++){const n=t[e];if("list"===n?.type){const r=t[e+1];"list"===r?.type&&(n.spread=!0,n.children.push(...r.children),t.splice(e+1,1),e--)}}return n}parsei(e){return this.inline.parse(e)}}({parsers:ae,inline:J}),he=e=>{const t={},n=e.split(";"),r=n.length;for(let e=0;e<r;e++){const r=n[e],s=r.indexOf(":");if(-1===s)continue;const l=r.slice(0,s).trim(),i=r.slice(s+1).trim();l&&i&&(t[l]=i)}return t};var pe=t.AH,fe=t.qy,de=t.wD;export{pe as css,fe as html,de as markdown}; |
@@ -9,7 +9,22 @@ import { Parser } from '../../Parser'; | ||
parser(src) { | ||
const tokens = this.parse(src); | ||
const token = { | ||
type: 'root', | ||
children: this.parse(src), | ||
children: tokens, | ||
len: src.length, | ||
}; | ||
// Merge adjacent "list" tokens. | ||
const length = tokens.length; | ||
for (let i = 0; i < length - 1; i++) { | ||
const tok1 = tokens[i]; | ||
if (tok1?.type === 'list') { | ||
const tok2 = tokens[i + 1]; | ||
if (tok2?.type === 'list') { | ||
tok1.spread = true; | ||
tok1.children.push(...tok2.children); | ||
tokens.splice(i + 1, 1); | ||
i--; | ||
} | ||
} | ||
} | ||
return token; | ||
@@ -16,0 +31,0 @@ } |
@@ -46,3 +46,3 @@ import { rep, token } from '../../util'; | ||
}; | ||
const REG_HEADING1 = /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/; | ||
const REG_HEADING1 = /^ *(#{1,6}) +([^\n]+?) *(?:#+ *)?(?:\n+|$)/; | ||
const REG_HEADING2 = /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/; | ||
@@ -59,3 +59,3 @@ const heading = (parser, src) => { | ||
return token(matches[0], 'heading', parser.parsei(subvalue), { | ||
depth: matches[2] === '-' ? 1 : 2, | ||
depth: matches[2] === '-' ? 2 : 1, | ||
}); | ||
@@ -74,7 +74,8 @@ } | ||
}; | ||
const REG_BULLET = /^(\s*)([*+-]|\d\.)(\s{1,2}|\t)/; | ||
const REG_LOOSE = /\n\n(?!\s*$)/; | ||
const REG_ITEM = reg.replace(/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm, { bull: reg.bull }); | ||
const REG_LIST = reg.replace(/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, { | ||
bull: reg.bull, | ||
const REG_BULLET = /^\s{0,3}([*+-]|\d{1,3}\.)\s{1,42}/; | ||
const bull = /(?:[*+-]|\d{1,3}\.)/; | ||
const REG_LOOSE = /\n\s*\n(?!\s*$)/; | ||
const REG_ITEM = reg.replace(/^( {0,333})(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm, { bull }); | ||
const REG_LIST = reg.replace(/^ {0,3}(?:bull) (?:(?!\r?\n\r?\n)[\s\S])+/, { | ||
bull, | ||
hr: reg.hr, | ||
@@ -94,44 +95,38 @@ def: reg.def, | ||
const children = []; | ||
let ordered = false; | ||
let start = null; | ||
let loose = false; | ||
for (let i = 0; i < length; i++) { | ||
const part = parts[i]; | ||
// if (part[part.length - 1] === '\n') part = part.trimEnd(); | ||
const bulletMatch = part.match(REG_BULLET); | ||
if (!bulletMatch) | ||
return; | ||
const sansBullet = part.slice(bulletMatch[0].length); | ||
const bulletMarker = bulletMatch[2]; | ||
if (i === 0 && bulletMarker.length > 1) { | ||
ordered = true; | ||
start = Number.parseInt(bulletMarker, 10); | ||
const [bulletWithWhitespace, bullet] = bulletMatch; | ||
let content = part.slice(bulletWithWhitespace.length); | ||
if (i === 0 && bullet.length > 1) | ||
start = Number(bullet); | ||
let checked = null; | ||
if (content[0] === '[' && content[2] === ']' && content[3] === ' ') { | ||
checked = content[1] !== ' '; | ||
content = content.slice(4); | ||
} | ||
let outdented = rep(/^ {1,4}/gm, '', sansBullet); | ||
let checked = null; | ||
if (outdented[0] === '[' && outdented[2] === ']') { | ||
switch (outdented[1]) { | ||
case 'x': | ||
case 'X': | ||
outdented = outdented.substr(3); | ||
checked = true; | ||
const newLinePos = content.indexOf('\n'); | ||
if (newLinePos > 0) { | ||
let outdentSize = 0; | ||
for (let pos = newLinePos + 1; pos < newLinePos + 4; pos++) | ||
if (content[pos] === ' ') | ||
outdentSize++; | ||
else | ||
break; | ||
case ' ': | ||
outdented = outdented.substr(3); | ||
checked = false; | ||
break; | ||
} | ||
if (outdentSize) | ||
content = rep(new RegExp('^ {1,' + outdentSize + '}', 'gm'), '', content); | ||
} | ||
const partLoose = REG_LOOSE.test(sansBullet); | ||
if (partLoose) | ||
loose = true; | ||
children.push({ | ||
type: 'listItem', | ||
loose: partLoose, | ||
spread: REG_LOOSE.test(content), | ||
checked, | ||
children: parser.parse(outdented), | ||
children: parser.parse(content), | ||
}); | ||
} | ||
return token(subvalue, 'list', children, { ordered, start, loose }); | ||
return token(subvalue, 'list', children, { ordered: start !== null, start }); | ||
}; | ||
const REG_TABLE = /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/; | ||
const splitCells = (tableRow, count) => { | ||
@@ -150,2 +145,3 @@ const cells = rep(/([^\\])\|/g, '$1 |', tableRow).split(/ +\| */); | ||
}; | ||
const REG_TABLE = /^ *\|?(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/; | ||
const table = (parser, value) => { | ||
@@ -200,6 +196,7 @@ const matches = value.match(REG_TABLE); | ||
const subvalue = matches[0]; | ||
const identifier = matches[1]; | ||
const label = matches[1]; | ||
const identifier = label.toLowerCase(); | ||
const outdented = rep(/^ {1,4}/gm, '', matches[2]); | ||
const children = parser.parse(outdented); | ||
return token(subvalue, 'footnoteDefinition', children, { identifier }); | ||
return token(subvalue, 'footnoteDefinition', children, { label, identifier }); | ||
}; | ||
@@ -211,5 +208,8 @@ const definition = (_, value) => { | ||
const subvalue = matches[0]; | ||
const label = matches[1]; | ||
const title = matches[3]; | ||
return token(subvalue, 'definition', void 0, { | ||
identifier: matches[1], | ||
title: matches[3] || null, | ||
label: label, | ||
identifier: label.toLowerCase(), | ||
title: title ? title.slice(1, -1) : null, | ||
url: matches[2], | ||
@@ -219,3 +219,3 @@ }); | ||
const html = (_, src) => htmlParser.el(src); | ||
const REG_PARAGRAPH = reg.replace(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/, { bull: reg.bull }); | ||
const REG_PARAGRAPH = reg.replace(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/, { bull }); | ||
const paragraph = (parser, value) => { | ||
@@ -222,0 +222,0 @@ const matches = value.match(REG_PARAGRAPH); |
@@ -37,5 +37,5 @@ import type { IElement } from '../../html/types'; | ||
type: 'list'; | ||
ordered: boolean; | ||
start: number | null; | ||
loose: boolean; | ||
ordered?: boolean; | ||
start?: number | null; | ||
spread?: boolean; | ||
children: IListItem[]; | ||
@@ -45,3 +45,3 @@ } | ||
type: 'listItem'; | ||
loose: boolean; | ||
spread?: boolean; | ||
checked: boolean | null; | ||
@@ -57,5 +57,7 @@ children: TBlockToken[]; | ||
align: ('left' | 'right' | 'center' | null)[]; | ||
children: ITableRow[]; | ||
} | ||
export interface ITableRow extends IToken { | ||
type: 'tableRow'; | ||
children: ITableCell[]; | ||
} | ||
@@ -68,3 +70,4 @@ export interface ITableCell extends IToken { | ||
identifier: string; | ||
title: string | null; | ||
label: string; | ||
title?: string | null; | ||
url: string; | ||
@@ -74,2 +77,3 @@ } | ||
type: 'footnoteDefinition'; | ||
label: string; | ||
identifier: string; | ||
@@ -76,0 +80,0 @@ children: TBlockToken[]; |
@@ -90,3 +90,3 @@ import { regexParser, rep, repAll, token } from '../../util'; | ||
const mark = regexParser('mark', REG_MARK, 1); | ||
const REG_HANDLE = /^([#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/; | ||
const REG_HANDLE = /^([#~@])(?![#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/; | ||
const handle = (_, value) => { | ||
@@ -93,0 +93,0 @@ const matches = value.match(REG_HANDLE); |
@@ -8,3 +8,2 @@ export declare const replace: (reg: RegExp, map: { | ||
export declare const hr: RegExp; | ||
export declare const bull: RegExp; | ||
export declare const def: RegExp; |
@@ -12,3 +12,2 @@ import { rep } from '../util'; | ||
export const hr = /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/; | ||
export const bull = /(?:[*+-]|\d+\.)/; | ||
export const def = replace(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, { | ||
@@ -15,0 +14,0 @@ label, |
@@ -7,3 +7,3 @@ import type { IParser, IToken, TTokenizer } from './types'; | ||
export declare const regexParser: <T extends IToken>(type: T["type"], reg: RegExp, childrenMatchIndex: number) => TTokenizer<T>; | ||
export declare const rep: (search: RegExp, replace: string, str: string) => string; | ||
export declare const rep: (search: RegExp | string, replace: string, str: string) => string; | ||
export declare const repAll: (search: string, replace: string, str: string) => string; |
@@ -11,7 +11,22 @@ "use strict"; | ||
parser(src) { | ||
const tokens = this.parse(src); | ||
const token = { | ||
type: 'root', | ||
children: this.parse(src), | ||
children: tokens, | ||
len: src.length, | ||
}; | ||
// Merge adjacent "list" tokens. | ||
const length = tokens.length; | ||
for (let i = 0; i < length - 1; i++) { | ||
const tok1 = tokens[i]; | ||
if (tok1?.type === 'list') { | ||
const tok2 = tokens[i + 1]; | ||
if (tok2?.type === 'list') { | ||
tok1.spread = true; | ||
tok1.children.push(...tok2.children); | ||
tokens.splice(i + 1, 1); | ||
i--; | ||
} | ||
} | ||
} | ||
return token; | ||
@@ -18,0 +33,0 @@ } |
@@ -50,3 +50,3 @@ "use strict"; | ||
}; | ||
const REG_HEADING1 = /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/; | ||
const REG_HEADING1 = /^ *(#{1,6}) +([^\n]+?) *(?:#+ *)?(?:\n+|$)/; | ||
const REG_HEADING2 = /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/; | ||
@@ -63,3 +63,3 @@ const heading = (parser, src) => { | ||
return (0, util_1.token)(matches[0], 'heading', parser.parsei(subvalue), { | ||
depth: matches[2] === '-' ? 1 : 2, | ||
depth: matches[2] === '-' ? 2 : 1, | ||
}); | ||
@@ -78,7 +78,8 @@ } | ||
}; | ||
const REG_BULLET = /^(\s*)([*+-]|\d\.)(\s{1,2}|\t)/; | ||
const REG_LOOSE = /\n\n(?!\s*$)/; | ||
const REG_ITEM = reg.replace(/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm, { bull: reg.bull }); | ||
const REG_LIST = reg.replace(/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, { | ||
bull: reg.bull, | ||
const REG_BULLET = /^\s{0,3}([*+-]|\d{1,3}\.)\s{1,42}/; | ||
const bull = /(?:[*+-]|\d{1,3}\.)/; | ||
const REG_LOOSE = /\n\s*\n(?!\s*$)/; | ||
const REG_ITEM = reg.replace(/^( {0,333})(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/gm, { bull }); | ||
const REG_LIST = reg.replace(/^ {0,3}(?:bull) (?:(?!\r?\n\r?\n)[\s\S])+/, { | ||
bull, | ||
hr: reg.hr, | ||
@@ -98,44 +99,38 @@ def: reg.def, | ||
const children = []; | ||
let ordered = false; | ||
let start = null; | ||
let loose = false; | ||
for (let i = 0; i < length; i++) { | ||
const part = parts[i]; | ||
// if (part[part.length - 1] === '\n') part = part.trimEnd(); | ||
const bulletMatch = part.match(REG_BULLET); | ||
if (!bulletMatch) | ||
return; | ||
const sansBullet = part.slice(bulletMatch[0].length); | ||
const bulletMarker = bulletMatch[2]; | ||
if (i === 0 && bulletMarker.length > 1) { | ||
ordered = true; | ||
start = Number.parseInt(bulletMarker, 10); | ||
const [bulletWithWhitespace, bullet] = bulletMatch; | ||
let content = part.slice(bulletWithWhitespace.length); | ||
if (i === 0 && bullet.length > 1) | ||
start = Number(bullet); | ||
let checked = null; | ||
if (content[0] === '[' && content[2] === ']' && content[3] === ' ') { | ||
checked = content[1] !== ' '; | ||
content = content.slice(4); | ||
} | ||
let outdented = (0, util_1.rep)(/^ {1,4}/gm, '', sansBullet); | ||
let checked = null; | ||
if (outdented[0] === '[' && outdented[2] === ']') { | ||
switch (outdented[1]) { | ||
case 'x': | ||
case 'X': | ||
outdented = outdented.substr(3); | ||
checked = true; | ||
const newLinePos = content.indexOf('\n'); | ||
if (newLinePos > 0) { | ||
let outdentSize = 0; | ||
for (let pos = newLinePos + 1; pos < newLinePos + 4; pos++) | ||
if (content[pos] === ' ') | ||
outdentSize++; | ||
else | ||
break; | ||
case ' ': | ||
outdented = outdented.substr(3); | ||
checked = false; | ||
break; | ||
} | ||
if (outdentSize) | ||
content = (0, util_1.rep)(new RegExp('^ {1,' + outdentSize + '}', 'gm'), '', content); | ||
} | ||
const partLoose = REG_LOOSE.test(sansBullet); | ||
if (partLoose) | ||
loose = true; | ||
children.push({ | ||
type: 'listItem', | ||
loose: partLoose, | ||
spread: REG_LOOSE.test(content), | ||
checked, | ||
children: parser.parse(outdented), | ||
children: parser.parse(content), | ||
}); | ||
} | ||
return (0, util_1.token)(subvalue, 'list', children, { ordered, start, loose }); | ||
return (0, util_1.token)(subvalue, 'list', children, { ordered: start !== null, start }); | ||
}; | ||
const REG_TABLE = /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/; | ||
const splitCells = (tableRow, count) => { | ||
@@ -154,2 +149,3 @@ const cells = (0, util_1.rep)(/([^\\])\|/g, '$1 |', tableRow).split(/ +\| */); | ||
}; | ||
const REG_TABLE = /^ *\|?(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/; | ||
const table = (parser, value) => { | ||
@@ -204,6 +200,7 @@ const matches = value.match(REG_TABLE); | ||
const subvalue = matches[0]; | ||
const identifier = matches[1]; | ||
const label = matches[1]; | ||
const identifier = label.toLowerCase(); | ||
const outdented = (0, util_1.rep)(/^ {1,4}/gm, '', matches[2]); | ||
const children = parser.parse(outdented); | ||
return (0, util_1.token)(subvalue, 'footnoteDefinition', children, { identifier }); | ||
return (0, util_1.token)(subvalue, 'footnoteDefinition', children, { label, identifier }); | ||
}; | ||
@@ -215,5 +212,8 @@ const definition = (_, value) => { | ||
const subvalue = matches[0]; | ||
const label = matches[1]; | ||
const title = matches[3]; | ||
return (0, util_1.token)(subvalue, 'definition', void 0, { | ||
identifier: matches[1], | ||
title: matches[3] || null, | ||
label: label, | ||
identifier: label.toLowerCase(), | ||
title: title ? title.slice(1, -1) : null, | ||
url: matches[2], | ||
@@ -223,3 +223,3 @@ }); | ||
const html = (_, src) => html_1.html.el(src); | ||
const REG_PARAGRAPH = reg.replace(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/, { bull: reg.bull }); | ||
const REG_PARAGRAPH = reg.replace(/^((?:[^\n]+(\n(?!\s{0,3}bull))?)+)\n*/, { bull }); | ||
const paragraph = (parser, value) => { | ||
@@ -226,0 +226,0 @@ const matches = value.match(REG_PARAGRAPH); |
@@ -37,5 +37,5 @@ import type { IElement } from '../../html/types'; | ||
type: 'list'; | ||
ordered: boolean; | ||
start: number | null; | ||
loose: boolean; | ||
ordered?: boolean; | ||
start?: number | null; | ||
spread?: boolean; | ||
children: IListItem[]; | ||
@@ -45,3 +45,3 @@ } | ||
type: 'listItem'; | ||
loose: boolean; | ||
spread?: boolean; | ||
checked: boolean | null; | ||
@@ -57,5 +57,7 @@ children: TBlockToken[]; | ||
align: ('left' | 'right' | 'center' | null)[]; | ||
children: ITableRow[]; | ||
} | ||
export interface ITableRow extends IToken { | ||
type: 'tableRow'; | ||
children: ITableCell[]; | ||
} | ||
@@ -68,3 +70,4 @@ export interface ITableCell extends IToken { | ||
identifier: string; | ||
title: string | null; | ||
label: string; | ||
title?: string | null; | ||
url: string; | ||
@@ -74,2 +77,3 @@ } | ||
type: 'footnoteDefinition'; | ||
label: string; | ||
identifier: string; | ||
@@ -76,0 +80,0 @@ children: TBlockToken[]; |
@@ -93,3 +93,3 @@ "use strict"; | ||
const mark = (0, util_1.regexParser)('mark', REG_MARK, 1); | ||
const REG_HANDLE = /^([#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/; | ||
const REG_HANDLE = /^([#~@])(?![#~@])(([\w\-_\.\/#]{1,64})|(\{([\w\-_\.\/#=\/ ]{1,64})\}))/; | ||
const handle = (_, value) => { | ||
@@ -96,0 +96,0 @@ const matches = value.match(REG_HANDLE); |
@@ -8,3 +8,2 @@ export declare const replace: (reg: RegExp, map: { | ||
export declare const hr: RegExp; | ||
export declare const bull: RegExp; | ||
export declare const def: RegExp; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.def = exports.bull = exports.hr = exports.urlInline = exports.title = exports.label = exports.replace = void 0; | ||
exports.def = exports.hr = exports.urlInline = exports.title = exports.label = exports.replace = void 0; | ||
const util_1 = require("../util"); | ||
@@ -16,3 +16,2 @@ const replace = (reg, map) => { | ||
exports.hr = /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/; | ||
exports.bull = /(?:[*+-]|\d+\.)/; | ||
exports.def = (0, exports.replace)(/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, { | ||
@@ -19,0 +18,0 @@ label: exports.label, |
@@ -7,3 +7,3 @@ import type { IParser, IToken, TTokenizer } from './types'; | ||
export declare const regexParser: <T extends IToken>(type: T["type"], reg: RegExp, childrenMatchIndex: number) => TTokenizer<T>; | ||
export declare const rep: (search: RegExp, replace: string, str: string) => string; | ||
export declare const rep: (search: RegExp | string, replace: string, str: string) => string; | ||
export declare const repAll: (search: string, replace: string, str: string) => string; |
{ | ||
"name": "very-small-parser", | ||
"version": "1.3.0", | ||
"version": "1.4.0", | ||
"description": "A very small Markdown, HTML, and CSS parser.", | ||
@@ -5,0 +5,0 @@ "author": { |
125604
96
2748