// <nowiki>
(function() {
"use strict";
function unifyNavbox() {
var result = $("#wpTextbox1").val();
// navbox2 substolása, ha ez van használatban
// ezután el kell menteni a sablont, majd a substolt (magyarított) verziót még egyszer megnyitni és javítani ezzel a scripttel
if (result.match(/\{\{avbox2/g)) {
result = result.replaceAll(/\{\{avbox2/g, "{{subst:Navbox2");
$("#wpTextbox1").val(result);
alert("A módosítandó szövegben {{Navbox2}} volt, ami most substolva lett, más változás nem történt.\nMost mentsd el a lapot, majd a substolt, magyar paraméterneveket tartalmazó szöveget javítsd ki újra ezzel a scripttel.\n(Ha nem akarod, hogy ez az üzenet minden substoláskor megjelenjen, tegyél // jelet a scriptben az \"alert\" kezdetű sor elejére.)");
return;
}
// szóköz törlése a paraméternevek elől ("\n | csoport1=" -> "\n|csoport1=")
result = result.replaceAll(
/*\| *((csoport|lista)+(osztály|stílus)?|(csoport|lista)(osztály|stílus)|(alul|felül)(osztály|stílus)?|(bal)?kép|név|cím|állapot)/g,
"\n|$1"
);
// angol paraméternevek cseréje magyarra
result = result.replaceAll(/\n *\| *name(?=)/g, "\n|név");
result = result.replaceAll(/\n *\| *title(?=)/g, "\n|cím");
result = result.replaceAll(/\n *\| *state(?=)/g, "\n|állapot");
result = result.replaceAll(/\n *\| *image(?=)/g, "\n|kép");
result = result.replaceAll(/\n *\| *group(+)(?=)/g, "\n|csoport$1");
result = result.replaceAll(/\n *\| *list(+)(?=)/g, "\n|lista$1");
result = result.replaceAll(/\n *\| *bodyclass(?=)/g, "\n|bodyosztály");
result = result.replaceAll(/\n *\| *listclass(?=)/g, "\n|listaosztály");
// "{{Navbox|subgroup" helyett "{{Navbox alcsoport"
result = result.replaceAll(/\{\{ *avbox*\|*subgroup(?=)/g, "{{Navbox alcsoport");
// paraméternevek kipótlása szóközzel 10 karakterre (9 karakter + még egy szóköz) ("|lista1=" -> "|lista1 =")
result = result.replaceAll(
/\n\|((csoport|lista)+(osztály|stílus)?|(csoport|lista)(osztály|stílus)|(alul|felül)(osztály|stílus)?|(bal)?kép|név|cím|állapot) *=/g,
(match, p1) => ("\n|" + p1.padEnd(9, " ") + " =")
);
// "|paraméternév = érték"-ben szóköz az egyenlőségjel után
result = result.replaceAll(
/\n\|((csoport+|(csoport|lista)(osztály|stílus)|(alul|felül)(osztály|stílus)|(bal)?kép|név|cím|állapot) *)= */g,
"\n|$1= "
);
// szóköz törlése sor végi egyenlőségjel után
result = result.replaceAll(/= +\n/g, "=\n");
// paraméter végén lévő pötty törlése
result = result.replaceAll(/*((\{\{(·|•|,)\}\})|·|•)*(?=\n\|)/g, "");
// {{·}}, {{•}}, {{,}} sablonok cseréje felsorolásra
// csak a "|listaN =" paraméterek értékében
result = result.replaceAll(
/(\n\|lista+ *=) *(*)*/g,
(match, p1, p2) => (p1 + "\n* " + p2.replaceAll(/*((\{\{(·|•|,)\}\})|·|•)*/g, "\n* "))
);
// {{·}}, {{•}}, {{,}} sablonok cseréje felsorolásra
// mindenhol
result = result.replaceAll(/*((\{\{(·|•|,)\}\})|·|•)*/g, "\n* ");
// ·, • cseréje felsorolásra
// mindenhol
result = result.replaceAll(/**/g, "\n* ");
// •, • cseréje felsorolásra
result = result.replaceAll(/*&bull(et)?;*/g, "\n* ");
// sor végi törlése
result = result.replaceAll(/ * *\n/g, "\n");
// <br />, <br> cseréje felsorolásra
// sokszor felesleges, inkább kiveszem
//result = result.replaceAll(/*<br ?\/?>*/g, "\n* ");
// <br />, <br> cseréje üres sorra
// lehet, hogy ez jobb
//result = result.replaceAll(/*<br ?\/?>*/g, "\n\n");
// felsorolásjelben legyen szóköz ("\n*szöveg" -> "\n* szöveg")
result = result.replaceAll(/\n(\*+) */g, "\n$1 ");
// paraméter végén lévő <br>, <br /> törlése
result = result.replaceAll(/ *<br ?\/?> *(\n+)\|/g, "$1|");
// csoportNstílus törlése, ha üres
result = result.replaceAll(/(\|csoport+stílus*=*)(?=\|)/g, "");
// címstílus, csoportstílus törlése, ha üres
result = result.replaceAll(/(\|(cím|csoport)stílus*=*)(?=\|)/g, "");
// "|listaosztály = hlist" beszúrása az első csoport elé
result = result.replaceAll(/*((*\|csoport1 *=*)?(\n\|lista1 *=))/g, "\n|listaosztály = hlist\n$1");
// duplikált "|listaosztály = hlist" javítása
result = result.replaceAll("\n|listaosztály = hlist\n|listaosztály = hlist\n", "\n|listaosztály = hlist\n");
// "|listaN =" után sortörés
//result = result.replaceAll(/(lista+*=)*/g, "$1\n* ");
// üres sor beszúrása minden csoport elé
result = result.replaceAll(/*((\n\|csoport+ *=*)?(\n\|lista+ *=))/g, "\n$1");
// minden csoportN előtt egy üres sor
//result = result.replaceAll(/\n(\|csoport+*=)/g, "\n\n$1");
// {{navbox|...}}, {{navbox alcsoport|...}} csere nagy kezdőbetűre
result = result.replaceAll("{{navbox", "{{Navbox");
// {{navoszlop|...}} csere nagy kezdőbetűre
result = result.replaceAll("{{navoszlop", "{{Navoszlop");
// {{Navbox|gyerek|...}}, {{Navbox|alcsoport|...}} -> {{Navbox alcsoport|...}}
result = result.replaceAll(/=*\**\{\{Navbox *\| *(gyerek|alcsoport) */g, "= {{Navbox alcsoport");
// {{Navbox alcsoport|...}} előtt ne legyen felsorolásjel
result = result.replaceAll(/=*\**\{\{Navbox alcsoport/g, "= {{Navbox alcsoport");
// "{{Navbox alcsoport" után legyen üres sor
result = result.replaceAll(/\{\{Navbox alcsoport*/g, "{{Navbox alcsoport\n\n");
// {{Navbox alcsoport|...}}-ban ne legyen még egyszer "|listaosztály = hlist"
result = result.replaceAll(/(\{\{Navbox alcsoport)(*)(\n\|listaosztály *= *hlist *\n\n?)/g, "$1$2\n");
// {{Navbox alcsoport|...}}-ot lezáró }} legyen külön sorban
// sokszor feleslegesen módosít, kivettem
//result = result.replaceAll(/(\n\|lista+ *=) *((\n\* *)+)\}\}\n(?=\|)*/g, "$1$2\n}}\n\n");
// "|alul =" és "|felül =" előtt üres sor
result = result.replaceAll(/*(\|(alul|felül) *=)/g, "\n\n$1");
// "|alul =" és "|felül =" átalakítás listává, -osztály = hlist hozzáadása
result = result.replaceAll(
/\|((alul|felül) *=) *(*)/g,
(match, p1, p2, p3) => ("|" + p2 + "osztály = hlist\n" +"|" + p1 + "\n* " + p3.replaceAll(/*\{\{(·|•|,)\}\}/g, "\n* "))
);
// üres felsorolásos sorok törlése
result = result.replaceAll(/\n\*+ *(?=\n)/g, "");
// "}}</includeonly>" előtt egy üres sor
result = result.replaceAll(/*(\}\}*<\/includeonly>)/g, "\n\n}}</includeonly>");
// </includeonly> és <noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/<\/includeonly>*<noinclude>/g, "</includeonly><noinclude>");
// [[kategória: csere nagy kezdőbetűre
result = result.replaceAll("[[kategória:", "[[Kategória:");
// kategóriák külön sorba
result = result.replaceAll(/*(\]+\]\])/g, "\n$1");
result = result.replaceAll(/(\]+\]\])*/g, "$1\n");
// {{Navboxdoc}} -> {{Navbox sablondokumentációja}}
result = result.replaceAll(/\{\{avboxdoc*(\||\}\})/g, "{{Navbox sablondokumentációja$1");
// {{navbox sablondokumentációja}} csere nagy kezdőbetűre
result = result.replaceAll("{{navbox sablondokumentációja", "{{Navbox sablondokumentációja");
// {{Navbox sablondokumentációja}} külön sorba
result = result.replaceAll(/*\{\{Navbox sablondokumentációja(*)\}\}*/g, "\n{{Navbox sablondokumentációja$1}}\n");
// az elején ne legyen üres sor, a végén 1 legyen
result = result.trim() + "\n";
// <includeonly>...</includeonly> pótlása
if (!result.includes("<includeonly>") && !result.includes("</includeonly>")) {
result = "<includeonly>" + result;
result = result.replaceAll("<noinclude>", "</includeonly><noinclude>");
}
// <noinclude>...</noinclude> pótlása, ha egyik sincs
if (!result.includes("<noinclude>") && !result.includes("</noinclude>")) {
result = result.replaceAll(/<\/includeonly>((.|\n)*)$/g, "</includeonly><noinclude>$1</noinclude>\n");
}
// </noinclude> pótlása, ha <noinclude> van
if (result.includes("<noinclude>") && !result.includes("</noinclude>")) {
result = result + "</noinclude>\n";
}
// lezáró }} előtt üres sor
result = result.replaceAll(/\n+\}\}<\/includeonly><noinclude>/g, "\n\n}}</includeonly><noinclude>");
// {{Navbox sablondokumentációja}} pótlása, ha nincs
if (!result.includes("{{Navbox sablondokumentációja")) {
result = result.replaceAll("<noinclude>", "<noinclude>\n{{Navbox sablondokumentációja}}");
}
// sor végi szóközök törlése
result = result.replaceAll(/ +\n/g, "\n");
// alsablonok paramétereinek behúzása
var lines = result.split("\n");
var level = 0;
for (var i = 0; i < lines.length; i++) {
if (lines.match(/^\|+ *=/)) {
lines = " ".repeat(level - 1) + lines;
}
var opener = (lines.match(/\{/g) || ).length;
var closer = (lines.match(/\}/g) || ).length;
level = level + Math.floor((opener - closer) / 2);
if (level < 0) {level = 0;}
}
result = lines.join("\n");
$("#wpTextbox1").val(result);
}
function hadjaratNavoszlopJavit() {
var result = $("#wpTextbox1").val();
// szóköz törlése a paraméternevek elől ("\n | csoport1=" -> "\n|csoport1=")
result = result.replaceAll(
/*\| *(sablon|cím|szélesség|kép|listaosztály|szöveg)/g,
"\n|$1"
);
// paraméternevek kipótlása szóközzel 10 karakterre (9 karakter + még egy szóköz) ("|lista1=" -> "|lista1 =")
result = result.replaceAll(
/\n\|(sablon|cím|szélesség|szöveg) *=/g,
(match, p1) => ("\n|" + p1.padEnd(9, " ") + " =")
);
// "|paraméternév = érték"-ben szóköz az egyenlőségjel után
result = result.replaceAll(
/\n\|((sablon|cím|szélesség|szöveg) *)= */g,
"\n|$1= "
);
// szóköz törlése sor végi egyenlőségjel után
result = result.replaceAll(/= +\n/g, "=\n");
// paraméter végén lévő pötty törlése
result = result.replaceAll(/*((\{\{(·|•|,)\}\})|·|•)*(?=\n\|)/g, "");
// {{·}}, {{•}}, {{,}} ·, • cseréje felsorolásra
// mindenhol
result = result.replaceAll(/*((\{\{(·|•|,)\}\})|·|•)*/g, "\n* ");
// •, • cseréje felsorolásra
result = result.replaceAll(/*&bull(et)?;*/g, "\n* ");
// sor végi törlése
result = result.replaceAll(/ * *\n/g, "\n");
// felsorolásjelben legyen szóköz ("\n*szöveg" -> "\n* szöveg")
result = result.replaceAll(/\n(\*+) */g, "\n$1 ");
// paraméter végén lévő <br>, <br /> törlése
result = result.replaceAll(/ *<br ?\/?> *(\n+)\|/g, "$1|");
// szöveg első sorába felsorolásjel
result = result.replaceAll(/(\| *szöveg *=)*(?=)/g, "$1\n* ");
// üres felsorolásos sorok törlése
result = result.replaceAll(/\n\*+ *(?=\n)/g, "");
// "|listaosztály = hlist" beszúrása a szöveg elé
result = result.replaceAll(/*(\n\|szöveg *=)/g, "\n|listaosztály = hlist$1");
// duplikált "|listaosztály = hlist" javítása
result = result.replaceAll("\n|listaosztály = hlist\n|listaosztály = hlist\n", "\n|listaosztály = hlist\n");
// [[kategória: csere nagy kezdőbetűre
result = result.replaceAll("[[kategória:", "[[Kategória:");
// kategóriák külön sorba
result = result.replaceAll(/*(\]+\]\])/g, "\n$1");
result = result.replaceAll(/(\]+\]\])*/g, "$1\n");
// {{Navboxdoc}} -> {{Navbox sablondokumentációja}}
result = result.replaceAll(/\{\{avboxdoc*(\||\}\})/g, "{{Navbox sablondokumentációja$1");
// {{navbox sablondokumentációja}} csere nagy kezdőbetűre
result = result.replaceAll("{{navbox sablondokumentációja", "{{Navbox sablondokumentációja");
// {{Navbox sablondokumentációja}} külön sorba
result = result.replaceAll(/*\{\{Navbox sablondokumentációja(*)\}\}*/g, "\n{{Navbox sablondokumentációja$1}}\n");
// az elején ne legyen üres sor, a végén 1 legyen
result = result.trim() + "\n";
// <includeonly>...</includeonly> pótlása
if (!result.includes("<includeonly>") && !result.includes("</includeonly>")) {
result = "<includeonly>" + result;
result = result.replaceAll("<noinclude>", "</includeonly><noinclude>");
}
// <noinclude>...</noinclude> pótlása, ha egyik sincs
if (!result.includes("<noinclude>") && !result.includes("</noinclude>")) {
result = result.replaceAll(/<\/includeonly>((.|\n)*)$/g, "</includeonly><noinclude>$1</noinclude>\n");
}
// </noinclude> pótlása, ha <noinclude> van
if (result.includes("<noinclude>") && !result.includes("</noinclude>")) {
result = result + "</noinclude>\n";
}
// "}}</includeonly>" előtti üres sor törlése
result = result.replaceAll(/*(\}\}*<\/includeonly>)/g, "\n}}</includeonly>");
// </includeonly> és <noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/<\/includeonly>*<noinclude>/g, "</includeonly><noinclude>");
// }} és </includeonly>/<noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/\}\}*(<\/includeonly>|<noinclude>)/g, "}}$1");
// {{Navbox sablondokumentációja}} pótlása, ha nincs
if (!result.includes("{{Navbox sablondokumentációja")) {
result = result.replaceAll("<noinclude>", "<noinclude>\n{{Navbox sablondokumentációja}}");
}
// sor végi szóközök törlése
result = result.replaceAll(/ +\n/g, "\n");
$("#wpTextbox1").val(result);
}
function splitInfobox() {
var result = $("#wpTextbox1").val();
result = result.replaceAll(
/\{\{(+ infobox) *((\| *(+) *= *((|\]+\]\]|\{\{+\}\})*))*)\}\}*/gi,
(match, p1, p2) => (
"{"+"{" + p1 +
p2.replaceAll(/\| *(+) *= *((|\]+\]\]|\{\{+\}\})*)/g, "\n|$1 = $2") +
"\n}}\n\n")
);
$("#wpTextbox1").val(result);
}
// build GUI
var buttonCSS = "display: inline-block; margin: 2px; border: 1px solid #069; border-radius: 4px; padding: 2px 4px; background-color: #cde; color: black;";
var $navboxUnify = $("<a>")
.attr("id", "unify-navbox")
.attr("href", "#")
.attr("style", buttonCSS)
.text("Navbox egységesít")
.click(unifyNavbox);
var $hadjaratNavoszlopJavit = $("<a>")
.attr("id", "hadjarat-navoszlop-javit")
.attr("href", "#")
.attr("style", buttonCSS)
.text("Hadjárat navoszlop javít")
.click(hadjaratNavoszlopJavit);
var $splitInfobox = $("<a>")
.attr("id", "split-infobox")
.attr("href", "#")
.attr("style", buttonCSS)
.text("Infobox tördelése")
.click(splitInfobox);
var $separator = $("<span>")
.html(" • ");
var $menu = $("<div>")
.attr("style", "border: 1px solid #808080; margin: 10px 0px; padding: 2px;")
.append (
$navboxUnify,
//$separator,
$hadjaratNavoszlopJavit,
//$separator,
$splitInfobox,
);
$("#specialchars").after($menu);
}) ();
// </nowiki>