You've already forked tritonmconverter
130 lines
2.9 KiB
JavaScript
130 lines
2.9 KiB
JavaScript
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");
|
|
// })();
|