const reg:[RegExp,string][] = [] export function autoMarkPlugin(data:string){ if(reg.length === 0){ const pluginRegex = [ {"comment":"[ 💱 ]ㅤ구조변환 #1ㅤ=ㅤ대사 부호 수정","in":"“|”","out":"\"","type":"editdisplay","ableFlag":false}, {"comment":"[ 💱 ]ㅤ구조변환 #2ㅤ=ㅤ생각 부호 수정","in":"‘|’","out":"'","type":"editdisplay","ableFlag":false}, {"comment":"[ 🧷 ]ㅤ이탈릭체 #1ㅤ=ㅤ문장 앞 묶음 추가","in":"^(?!\\d\\.)([\\wㄱ-ㅎ가-힣'])(?!.*[{<>}])|(?<=^\\[.*\\] *|^\\(.*\\) *)([\\wㄱ-ㅎ가-힣'])(?!.*[{<>}])","out":"$1$2","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 🧷 ]ㅤ이탈릭체 #2ㅤ=ㅤ문장 뒤 묶음 추가","in":"(?.*)(?","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 🧷 ]ㅤ대사묶음 #1ㅤ=ㅤ대사 앞 묶음 추가","in":"(?<=.*|^\".*)( +\"[\\S])|(?<=.*|\" +.*)( *\\[)","out":"$1$2","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 🧷 ]ㅤ대사묶음 #2ㅤ=ㅤ대사 뒤 묶음 추가","in":"(?<=^\".*|<\\/em>.*)([\\S]\" +|[\\S]\"(?=[,.…ㄱ-ㅎ가-힣]))|(?<=<\\/em>.*)( *\\] *)","out":"$1$2","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 🧷 ]ㅤ생각묶음 #1ㅤ=ㅤ생각 앞 묶음 추가","in":"(?<=.*? +|\\[|\\[.* +|\\(|\\(.* +|\"|\".*? +)(?)('[\\wㄱ-ㅎ가-힣])","out":"$1$2","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 🧷 ]ㅤ생각묶음 #2ㅤ=ㅤ생각 뒤 묶음 추가","in":"(?<=')(.*?')(?= +.+?|[ㄱ-ㅎ가-힣?!:;,.…—-])|(?<='.*)(')(?=<\\/em>|\")|(?<=\\(')(?=\\))","out":"$1$2","type":"editdisplay","ableFlag":true,"flag":"gm"}, {"comment":"[ 📝 ]ㅤ추가핫키 #1ㅤ=ㅤ따옴표 추가 : (`)","in":"(? { for(const text of excludeTexts){ if(data.startsWith(text)){ return document.createTextNode(data) } } let index = 0 let stacks:Node[] = [document.createElement('p')] let stackText = [""] let stackType:number[] = [0] function isAlpha(str:string) { //check if string is alphabet, including extended latin by charcode. string.length === 1 const code = str.charCodeAt(0) return (code > 64 && code < 91) || (code > 96 && code < 123) || (code > 127 && code < 256) } let stackIndex = 0 while(index < data.length){ switch(data[index]){ case '"': case '“': case '”':{ if(stackType[stackIndex] === 1){ const stack = stacks.pop() stackText[stackIndex] += data[index] stack.appendChild(document.createTextNode(stackText.pop())) stackType.pop() stackIndex-- stacks[stackIndex].appendChild(stack) } else{ stacks[stackIndex].appendChild(document.createTextNode(stackText[stackIndex])) stackText[stackIndex] = "" stacks.push(document.createElement('x-placeholder')) stackText.push(data[index]) stackType.push(1) stackIndex++ } break } case "'": case "‘": case "’":{ if(stackType[stackIndex] === 2){ if(data[index+1] === undefined || !isAlpha(data[index+1])){ const stack = stacks.pop() stackText[stackIndex] += data[index] stack.appendChild(document.createTextNode(stackText.pop())) stackType.pop() stackIndex-- stacks[stackIndex].appendChild(stack) } else{ stackText[stackIndex] += data[index] } } else{ if(data[index-1] === ' ' || data[index-1] === '\n' || data[index-1] === undefined){ stacks[stackIndex].appendChild(document.createTextNode(stackText[stackIndex])) stackText[stackIndex] = "" stacks.push(document.createElement('x-em')) stackText.push(data[index]) stackType.push(2) stackIndex++ } else{ stackText[stackIndex] += data[index] } } break } case '\n':{ stacks[stackIndex].appendChild(document.createTextNode(stackText[stackIndex])) stackText[stackIndex] = "" stacks[stackIndex].appendChild(document.createElement('br')) } default:{ stackText[stackIndex] += data[index] } } index++ } for(let i=stackIndex;i>0;i--){ stacks[i-1].appendChild(document.createTextNode(stackText[i])) stacks[i-1].appendChild(stacks[i]) } stacks[0].appendChild(document.createTextNode(stackText[0])) const childs = stacks[0].childNodes for(let i=0;i${dat}`, 'text/html') const body = doc.body console.log(body.innerHTML) let newChilds:Node[] = [] for(let i=0;i