Wikipedysta:Malarz pl/wp si.js
(Przekierowano z Wikipedia:SK/mSI)
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5.
- Opera: Naciśnij klawisze Ctrl+F5.
mw.hook('userjs.wp_sk.ready').add(function (wp_sk)
{
// <nowiki>
wp_sk.mm_rFriendlyIbox = function(a,nazwa,zaw) {
//
// poprawiam nazwę
//
nazwa = nazwa.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); // trim
nazwa = nazwa.substring(0,1).toUpperCase() + nazwa.substring(1);
//
// usuwam komentarze
//
zaw = zaw.replace(/<!-- <liczba>/, '<!--');
zaw = zaw.replace(/ *<!--[^>]*--> *\n/g, '\n');
//
// jak został komentarz lub nie ma parametrów to kończymy
//
if (zaw.indexOf('<!--')!=-1 || zaw.indexOf('|')==-1)
{
return a;
}
//
// escapowanie parametrów
//
zaw = zaw.replace(/<<<(#+)>>>/g,'<<<#$1>>>');
// wewnętrzne szablony
zaw = zaw.replace(/\{\{(([^\{\}]+)?(\{\{[^\{\}]+\}\})?)*\}\}/g,function(a){ return a.replace(/\|/g,'<<<#>>>') });
// wewnętrzne linki
zaw = zaw.replace(/\[\[[^\]]+\]\]/g,function(a){ return a.replace(/\|/g,'<<<#>>>') });
//
// sprzątanie
//
// del pustych
zaw = zaw.replace(/\|\s*(?=\|)/g, function(a) {return (a.indexOf('\n')==-1)?'':'\n'}).replace(/\|\s*$/g, "");
zaw = zaw.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); // trim
// przeniesienie | na początek wiersza (zawsze)
zaw = '\n'+zaw+'\n';
zaw = zaw.replace(/\s*\|\s*/g, '\n |');
//
// odescapowanie
//
zaw = zaw.replace(/<<<#>>>/g,'|').replace(/<<<#(#+)>>>/g,'<<<$1>>>');
//
// liczba znakow przed "="
//
var dlugosc = 0;
//
// szukam dlugości w instrukcji TD szablonu
//
var timeoutID = null;
var request = $.ajax('/w/index.php?title=Szablon:'+nazwa+'/opis&action=raw');
request.done(function(data) {
var m = data.match(/"format": "\{\{_\\n \|(_+) = _\\n\}\}\\n"/),
format = m && m[1] || '';
dlugosc = format.length;
}).always(function() {
clearTimeout(timeoutID);
});
timeoutID = setTimeout(request.abort, 20000);
if (dlugosc === 0) {
// dla niekórych dlugosc ustawiam na stałe
if (nazwa.match(/^Jednostka administracyjna infobox/)) {
dlugosc = 31;
} else if (nazwa.match(/^Zwierzę infobox/)) {
dlugosc = 22;
} else if (nazwa.match(/^Takson infobox/)) {
dlugosc = 20;
} else if (nazwa.match(/^Biogram infobox/)) {
dlugosc = 26;
} else if (nazwa.match(/^Dzielnica infobox/)) {
dlugosc = 26;
} else {
var zawartosc = zaw;
// obliczam długość najdłuższej nazwy parametru
while (zawartosc.length) {
var linia1 = zawartosc.substr(0, zawartosc.indexOf('\n'));
zawartosc = zawartosc.substr(zawartosc.indexOf('\n')+1);
if (linia1.match(/^ *\|[0-9a-zA-Z\*\. \t\_\-\*\/\(\)\?\,\:ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*\=/)){
linia1 = linia1.replace(/^ *\|([^=]*)=.*$/, '$1');
linia1 = linia1.replace(/^[ \t]*([^ \t])/, '$1');
linia1 = linia1.replace(/([^ \t])[ \t]*$/, '$1');
dlugosc = (dlugosc>linia1.length) ? dlugosc : linia1.length;
}
}
}
}
// przerabiam wywołania parametrów
var nowazaw = '';
while (zaw.length) {
var linia2 = zaw.substr(0, zaw.indexOf('\n'));
zaw = zaw.substr(zaw.indexOf('\n')+1);
if (linia2.match(/^ *\|[0-9a-zA-Z\*\. \t\_\-\*\/\(\)\?\,\:ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*\=/)){
nazwapar = linia2.replace(/^ *\|([^=]*)=.*$/, '$1');
nazwapar = nazwapar.replace(/^[ \t]*([^ \t])/, '$1');
nazwapar = nazwapar.replace(/([^ \t])[ \t]*$/, '$1');
if (!(nazwapar.match(/^(stopni|minut|sekund)(N|E|S|W|_szer|_dł)$/))) {
while (nazwapar.length<dlugosc) nazwapar += ' ';
}
parametr = linia2.replace(/^ *\|[^=]* *=(.*)$/, '$1');
parametr = parametr.replace(/^ *([^ ])/, '$1');
parametr = parametr.replace(/([^ ])[ \n]*$/, '$1');
if (parametr == "?")
parametr = "";
parametr = parametr.replace(/ *<\/?br ?\/?>$/gi, '');
nowazaw += ' |' + nazwapar + ' = ' + parametr + '\n';
//alert(' |' + nazwapar + ' = ' + parametr);
} else {
nowazaw += linia2 + '\n';
}
}
// składam do kupy nowy ibox
return '{{' + nazwa + nowazaw + '}}';
};
// </nowiki>
wp_sk.rFriendlyIbox = wp_sk.mm_rFriendlyIbox;
wp_sk.extension += "+[[WP:SK/mSI|mSI.v2.1]]";
});