const lang = { langKeyEmpty: "Please enter a language key" } const prefixInput = document.getElementById("key"); const tagInput = document.getElementById("add_arg") const argsElement = document.getElementById("args"); const inputEl = document.getElementById("input"); const outputEl = document.getElementById("output"); function handleInput(){ let prefix = prefixInput.value; console.log(prefix); if(!prefix){ outputEl.value = lang.langKeyEmpty; return; } let value = inputEl.value.split("\n"); outputEl.value = ""; let regex = getRegex(); let args = getArgs(); let counter = 0; value.forEach(line => { if(line.startsWith("#")) { outputEl.value+=line + "\n"; return; } let isListItem = false if(line.match(/:\s+["']|-\s+["']/i) == null){ outputEl.value+=line + "\n"; return; } isListItem = line.match(/-\s+["']/i) !=null; let matches = line.match(regex); let key = isListItem ? line.split("-")[0] +"- " : line.split(":")[0] + ": "; if(matches == null || args.length === 0){ outputEl.value += key + "\"[lang]"+prefix +"_"+counter+"[/lang]\"\n"; counter++; return; } let re = /[%<\[<\{]{1}[a-zA-Z_-]+[%>\]\}]{1}/g; outputEl.value += key + "\"[lang]" +prefix + "_"+counter+"[args]"; let m; do { m = re.exec(line); if (m) { if(args.indexOf(m+"") > -1){ outputEl.value+= "[arg]" + m + "[/arg]"; } } } while (m); outputEl.value += "[/args][/lang]\"\n"; counter++; }); } function handleTagInput(e) { let tagDiv = document.createElement("div"); tagDiv.classList.add("arg") let el = document.createElement("span"); el.innerHTML = tagInput.value.replace("<", "<").replace(">", ">"); tagDiv.append(el); let tagCloser = document.createElement("span") tagCloser.classList.add("delete-arg"); tagCloser.innerHTML = "X"; tagDiv.append(tagCloser); tagCloser.addEventListener("click", deleteArg); argsElement.append(tagDiv); tagInput.value = ""; handleInput() } function copyResult(){ outputEl.focus(); outputEl.select(); document.execCommand("copy"); } function deleteArg(e) { e.target.removeEventListener("click", deleteArg); e.target.parentElement.remove(); handleInput() } function getArgs(){ let args = []; for(let i = 0; i < argsElement.children.length; i++){ args[i] = argsElement.children[i].children[0].innerHTML.trim().replace("<", "<").replace(">", ">"); } return args; } function getRegex(){ let args = getArgs(); let regex = ""; for(let i =0; i < args.length; i ++){ if(i !== args.length-1) regex += args[i] + "|" else regex += args[i]; } return new RegExp(regex); } tagInput.addEventListener("change", handleTagInput); prefixInput.addEventListener("input", handleInput); inputEl.addEventListener("input", handleInput); document.getElementById("date").innerHTML = new Date().getFullYear(); // (() => { // let dateElem = document.getElementById("date"); // })();