This commit is contained in:
Dancbeunny98
2024-07-27 00:37:29 +03:00
parent 93cd2e7d53
commit 27e009af41
3 changed files with 377 additions and 0 deletions

130
js/main.js Normal file
View File

@@ -0,0 +1,130 @@
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("<", "&lt;").replace(">", "&gt;");
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("&lt;", "<").replace("&gt;", ">");
}
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");
// })();