Szerkesztő:B.Zsolt/repteres2.js
Megjelenés
Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.
- Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
- Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
- Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
// <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(/\{\{[Nn]avbox2/g)) {
result = result.replaceAll(/\{\{[Nn]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(
/[ \n]*\| *((csoport|lista)[0-9]+(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([0-9]+)(?=[ =])/g, "\n|csoport$1");
result = result.replaceAll(/\n *\| *list([0-9]+)(?=[ =])/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(/\{\{ *[Nn]avbox[ \n]*\|[ \n]*subgroup(?=[ \n])/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)[0-9]+(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[0-9]+|(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]*((\{\{(·|•|,)\}\})|·|•)[ \n]*(?=\n\|)/g, "");
// {{·}}, {{•}}, {{,}} sablonok cseréje felsorolásra
// csak a "|listaN =" paraméterek értékében
result = result.replaceAll(
/(\n\|lista[0-9]+ *=) *([^ ][^\n]*[^ ])[ \n]*/g,
(match, p1, p2) => (p1 + "\n* " + p2.replaceAll(/[ \n]*((\{\{(·|•|,)\}\})|·|•)[ \n]*/g, "\n* "))
);
// {{·}}, {{•}}, {{,}} sablonok cseréje felsorolásra
// mindenhol
result = result.replaceAll(/[ \n]*((\{\{(·|•|,)\}\})|·|•)[ \n]*/g, "\n* ");
// ·, • cseréje felsorolásra
// mindenhol
result = result.replaceAll(/[ \n]*[·•][ \n]*/g, "\n* ");
// •, • cseréje felsorolásra
result = result.replaceAll(/[ \n]*&bull(et)?;[ \n]*/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(/[ \n]*<br ?\/?>[ \n]*/g, "\n* ");
// <br />, <br> cseréje üres sorra
// lehet, hogy ez jobb
//result = result.replaceAll(/[ \n]*<br ?\/?>[ \n]*/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[0-9]+stílus[ \n]*=[ \n]*)(?=\|)/g, "");
// címstílus, csoportstílus törlése, ha üres
result = result.replaceAll(/(\|(cím|csoport)stílus[ \n]*=[ \n]*)(?=\|)/g, "");
// "|listaosztály = hlist" beszúrása az első csoport elé
result = result.replaceAll(/[ \n]*(([ \n]*\|csoport1 *=[^\n]*)?(\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[0-9]+[ \n]*=)[ \n]*/g, "$1\n* ");
// üres sor beszúrása minden csoport elé
result = result.replaceAll(/[ \n]*((\n\|csoport[0-9]+ *=[^\n]*)?(\n\|lista[0-9]+ *=))/g, "\n$1");
// minden csoportN előtt egy üres sor
//result = result.replaceAll(/\n(\|csoport[0-9]+[ \n]*=)/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(/=[ \n]*\*[ \n]*\{\{Navbox *\| *(gyerek|alcsoport) */g, "= {{Navbox alcsoport");
// {{Navbox alcsoport|...}} előtt ne legyen felsorolásjel
result = result.replaceAll(/=[ \n]*\*[ \n]*\{\{Navbox alcsoport/g, "= {{Navbox alcsoport");
// "{{Navbox alcsoport" után legyen üres sor
result = result.replaceAll(/\{\{Navbox alcsoport[ \n]*/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[0-9]+ *=) *((\n\* [^\n]*)+)\}\}\n(?=\|)*/g, "$1$2\n}}\n\n");
// "|alul =" és "|felül =" előtt üres sor
result = result.replaceAll(/[ \n]*(\|(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) *=) *([^ ][^\n]*)/g,
(match, p1, p2, p3) => ("|" + p2 + "osztály = hlist\n" +"|" + p1 + "\n* " + p3.replaceAll(/[ \n]*\{\{(·|•|,)\}\}[ \n]/g, "\n* "))
);
// üres felsorolásos sorok törlése
result = result.replaceAll(/\n\*+ *(?=\n)/g, "");
// "}}</includeonly>" előtt egy üres sor
result = result.replaceAll(/[ \n]*(\}\}[ \n]*<\/includeonly>)/g, "\n\n}}</includeonly>");
// </includeonly> és <noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/<\/includeonly>[ \n]*<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(/[ \n]*(\[\[Kategória:[^\]]+\]\])/g, "\n$1");
result = result.replaceAll(/(\[\[Kategória:[^\]]+\]\])[ \n]*/g, "$1\n");
// {{Navboxdoc}} -> {{Navbox sablondokumentációja}}
result = result.replaceAll(/\{\{[Nn]avboxdoc[ \n]*(\||\}\})/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(/[ \n]*\{\{Navbox sablondokumentációja([^\}]*)\}\}[ \n]*/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[i].match(/^\|[0-9a-záéíóöőúüű]+ *=/)) {
lines[i] = " ".repeat(level - 1) + lines[i];
}
var opener = (lines[i].match(/\{/g) || []).length;
var closer = (lines[i].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(
/[ \n]*\| *(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]*((\{\{(·|•|,)\}\})|·|•)[ \n]*(?=\n\|)/g, "");
// {{·}}, {{•}}, {{,}} ·, • cseréje felsorolásra
// mindenhol
result = result.replaceAll(/[ \n]*((\{\{(·|•|,)\}\})|·|•)[ \n]*/g, "\n* ");
// •, • cseréje felsorolásra
result = result.replaceAll(/[ \n]*&bull(et)?;[ \n]*/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 *=)[ \n]*(?=[^ \n])/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]*(\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(/[ \n]*(\[\[Kategória:[^\]]+\]\])/g, "\n$1");
result = result.replaceAll(/(\[\[Kategória:[^\]]+\]\])[ \n]*/g, "$1\n");
// {{Navboxdoc}} -> {{Navbox sablondokumentációja}}
result = result.replaceAll(/\{\{[Nn]avboxdoc[ \n]*(\||\}\})/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(/[ \n]*\{\{Navbox sablondokumentációja([^\}]*)\}\}[ \n]*/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(/[ \n]*(\}\}[ \n]*<\/includeonly>)/g, "\n}}</includeonly>");
// </includeonly> és <noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/<\/includeonly>[ \n]*<noinclude>/g, "</includeonly><noinclude>");
// }} és </includeonly>/<noinclude> közötti szóköz, új sor törlése
result = result.replaceAll(/\}\}[ \n]*(<\/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(
/\{\{([0-9a-záéíóöőúüű ]+ infobox) *((\| *([^=\|\{\}]+) *= *(([^=\|\{\}]|\[\[[^\[\]]+\]\]|\{\{[^\{\}]+\}\})*))*)\}\}[ \n]*/gi,
(match, p1, p2) => (
"{"+"{" + p1 +
p2.replaceAll(/\| *([^=\|\{\}]+) *= *(([^=\|\{\}]|\[\[[^\[\]]+\]\]|\{\{[^\{\}]+\}\})*)/g, "\n|$1 = $2") +
"\n}}\n\n")
);
$("#wpTextbox1").val(result);
}
function wikilinkekforditas() {
}
// 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 $wikilinkekforditas = $("<a>")
.attr("id", "wikilinkekfordítása")
.attr("href", "#")
.attr("style", buttonCSS)
.text("Wikilinkek fordítása")
.click(wikilinkekforditas);
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>