self.addEventListener("message",function(e){let data=e.data;let mdText=data.mdText;let markdown=new Markdown({mdText:mdText});let htmlText=markdown.markdown();self.postMessage({htmlText:htmlText})},false);class Markdown{constructor(props={mdText:""}){this.h1Reg=/^([-+*]*)( )*(#) (.+)/;this.h2Reg=/^([-+*]*)( )*(#{2}) (.+)/;this.h3Reg=/^([-+*]*)( )*(#{3}) (.+)/;this.h4Reg=/^([-+*]*)( )*(#{4}) (.+)/;this.h5Reg=/^([-+*]*)( )*(#{5}) (.+)/;this.h6Reg=/^([-+*]*)( )*(#{6}) (.+)/;this.hrReg=/^[-+*_]{3,}$/;this.aReg=/\[([^\[\]]+?)]\(([^()]+?)\)/;this.imgReg=/!\[([^\[\]]+?)]\(([^()]+?)\)/;this.strongReg=/\*\*(.+?)\*\*/;this.emReg=/\*(.+?)\*/;this.delReg=/~~(.+?)~~/;this.markReg=/==(.+?)==/;this.subReg=/~(.+?)~/;this.supReg=/\^(.+?)\^/;this.inlineCodeReg=/`{1,2}(.+?)`{1,2}/;this.ulReg=/\n([-+*].*(\n[-+*].*)*)/;this.olReg=/\n([1-9]+\..*(\n[0-9]+\..*)*)/;this.blockquoteReg=/\n(>.*(\n>.*)*)/;this.codeReg=/\n```\n([\s\S]*?)\n```[\n]?/;this.tableReg=/\n(\|.*?\|
\n(\|(nbsp;)*-+)+\|
\n(\|.*?\|
\n)*)/;this.tranRegs=[{reg:/\\\\/,to:""},{reg:/\\&/,to:""},{reg:/\\ /,to:""},{reg:/\\</,to:""},{reg:/\\>/,to:""},{reg:/\\'/,to:""},{reg:/\\"/,to:""},{reg:/\\#/,to:""},{reg:/\\=/,to:""},{reg:/\\\+/,to:""},{reg:/\\-/,to:""},{reg:/\\\*/,to:""},{reg:/\\_/,to:""},{reg:/\\`/,to:""},{reg:/\\\|/,to:""},{reg:/\\~/,to:""},{reg:/\\\^/,to:""},{reg:/\\!/,to:""},{reg:/\\{/,to:""},{reg:/\\}/,to:""},{reg:/\\\[/,to:""},{reg:/\\]/,to:""},{reg:/\\\(/,to:""},{reg:/\\\)/,to:""},{reg:/\\./,to:""}];this.tranToRegs=[{reg://,to:"\\"},{reg://,to:"&"},{reg://,to:"\\ "},{reg://,to:"<"},{reg://,to:">"},{reg://,to:"'"},{reg://,to:"""},{reg://,to:"#"},{reg://,to:"="},{reg://,to:"+"},{reg://,to:"-"},{reg://,to:"*"},{reg://,to:"_"},{reg://,to:"`"},{reg://,to:"|"},{reg://,to:"~"},{reg://,to:"^"},{reg://,to:"!"},{reg://,to:"{"},{reg://,to:"}"},{reg://,to:"["},{reg://,to:"]"},{reg://,to:"("},{reg://,to:")"},{reg://,to:"."}];let htmlEncode=str=>{let s;if(str.length===0){return""}s=str.replace(/&/g,"&").replace(/ /g," ").replace(//g,">").replace(/'/g,"'").replace(/"/g,""");return s};this.props=props;this.props.mdText=htmlEncode(this.props.mdText)}markdown(){const replaceTran=htmlText=>{let reg;let i=0;for(let tranReg of this.tranRegs){while(reg=tranReg.reg.exec(htmlText)){htmlText=htmlText.replace(tranReg.reg,tranReg.to)}i++}return htmlText};const replaceTranTo=htmlText=>{let reg;let i=0;for(let tranToReg of this.tranToRegs){while(reg=tranToReg.reg.exec(htmlText)){htmlText=htmlText.replace(tranToReg.reg,tranToReg.to)}i++}return htmlText};const replaceA=htmlText=>{let reg;while(reg=this.aReg.exec(htmlText)){htmlText=htmlText.replace(this.aReg,`${reg[1]}`)}return htmlText};const replaceImg=htmlText=>{let reg;while(reg=this.imgReg.exec(htmlText)){htmlText=htmlText.replace(this.imgReg,`
`)}return htmlText};const replaceStrong=htmlText=>{let reg;while(reg=this.strongReg.exec(htmlText)){htmlText=htmlText.replace(this.strongReg,`${reg[1]}`)}return htmlText};const replaceEm=htmlText=>{let reg;while(reg=this.emReg.exec(htmlText)){htmlText=htmlText.replace(this.emReg,`${reg[1]}`)}return htmlText};const replaceDel=htmlText=>{let reg;while(reg=this.delReg.exec(htmlText)){htmlText=htmlText.replace(this.delReg,`${reg[1]}`)}return htmlText};const replaceMark=htmlText=>{let reg;while(reg=this.markReg.exec(htmlText)){htmlText=htmlText.replace(this.markReg,`${reg[1]}`)}return htmlText};const replaceSub=htmlText=>{let reg;while(reg=this.subReg.exec(htmlText)){htmlText=htmlText.replace(this.subReg,`${reg[1]}`)}return htmlText};const replaceSup=htmlText=>{let reg;while(reg=this.supReg.exec(htmlText)){htmlText=htmlText.replace(this.supReg,`${reg[1]}`)}return htmlText};const replaceInlineCode=htmlText=>{let reg;while(reg=this.inlineCodeReg.exec(htmlText)){htmlText=htmlText.replace(this.inlineCodeReg,`${reg[1]}
`)}return htmlText};const replaceBlockquote=htmlText=>{htmlText="\n"+htmlText;let reg;while(reg=this.blockquoteReg.exec(htmlText)){let reg2=reg[1];reg2=reg2.split("\n");for(let i=0,l=reg2.length;i");reg2=`${reg2}
`}reg2=`\n${reg2}\n
`;htmlText=htmlText.replace(this.blockquoteReg,reg2)}return htmlText};const replaceUl=htmlText=>{htmlText="\n"+htmlText;let reg;while(reg=this.ulReg.exec(htmlText)){let reg2=reg[1];reg2=reg2.split("\n");for(let i=0,l=reg2.length;i\n${reg2[i]}\n`}}reg2=reg2.join("\n");reg2=`\n\n`;htmlText=htmlText.replace(this.ulReg,reg2)}return htmlText};const replaceOl=htmlText=>{htmlText="\n"+htmlText;let reg;while(reg=this.olReg.exec(htmlText)){let reg2=reg[1];reg2=reg2.split("\n");for(let i=0,l=reg2.length;i\n${reg2[i]}\n`}}reg2=reg2.join("\n");reg2=`\n\n${reg2}\n
\n`;htmlText=htmlText.replace(this.olReg,reg2)}return htmlText};const replaceCode=htmlText=>{htmlText="\n"+htmlText;let reg;while(reg=this.codeReg.exec(htmlText)){htmlText=htmlText.replace(this.codeReg,`\n\n${reg[1]}\n
\n`)}return htmlText};const replaceTable=htmlText=>{htmlText="\n"+htmlText;let reg;while(reg=this.tableReg.exec(htmlText)){let reg2=reg[1].split("
\n");reg2.pop();let count=0;for(let i=0,l=reg2[1].length;i\n\n\n\n`;let reg3;let thInThead=[];while(reg3=/\|(.[^|]*)/.exec(reg2[0])){reg2[0]=reg2[0].replace(/\|(.[^|]*)/,``);thInThead.push(`\n\n${reg3[1]}\n | \n`)}thInThead.length=count-1;for(let th of thInThead){if(!th){th=`\n\n | \n`}table+=th}table+=`\n
\n\n\n`;for(let i=2,l=reg2.length;i\n`;let trInTbody=reg2[i].split("|");trInTbody.pop();trInTbody.shift();trInTbody.length=count-1;for(let td of trInTbody){if(!td){td=`\n\n | \n`}else{td=`\n\n${td}\n | \n`}table+=td}table+=`\n\n`}table+="\n\n
\n\n";htmlText=htmlText.replace(this.tableReg,table)}return htmlText};let mdText=this.props.mdText;mdText=replaceTran(mdText);mdText=replaceCode(mdText);let mdTexts=mdText.split("\n");let htmlText="";let target=false;let code=[];for(let text of mdTexts){if(/^/.test(text)){target=false}if(target){code.push(text)}else{if(code.length>0){code.shift();htmlText+=`\n\n${code.join("
\n")}
\n
\n`;code=[]}else{let reg;if(reg=this.h6Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.h5Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.h4Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.h3Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.h2Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.h1Reg.exec(text)){htmlText+=`${reg[1]}${reg[4]}
\n`}else if(reg=this.hrReg.exec(text)){htmlText+=`
\n`}else{htmlText+=`${text}
\n`}}}}let sub=0;let htmls=[];let reg;while(reg=//.exec(htmlText)){htmls[htmls.length]=htmlText.substring(sub,reg.index);htmls[htmls.length]=htmlText.substring(reg.index,reg.index+reg[0].length);htmlText=htmlText.substring(reg.index+reg[0].length)}htmls[htmls.length]=htmlText;htmlText="";let i=1;for(let html of htmls){if(i%2!==0){html=replaceTable(html);html=replaceImg(html);html=replaceA(html);html=replaceStrong(html);html=replaceEm(html);html=replaceDel(html);html=replaceMark(html);html=replaceSub(html);html=replaceSup(html);html=replaceInlineCode(html);html=replaceBlockquote(html);html=replaceOl(html);html=replaceUl(html)}htmlText+=html;i++}htmlText=replaceTranTo(htmlText);htmlText=htmlText.replace(/
/,"");return htmlText}}