You've already forked tritonmconverter
init
This commit is contained in:
130
js/main.js
Normal file
130
js/main.js
Normal 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("<", "<").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");
|
||||
// })();
|
||||
Reference in New Issue
Block a user