Wikipedysta:Malarz pl/wp si.js

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
addOnloadHook(function() {
	wp_sk.mm_rFriendlyIbox = function(a,nazwa,zaw) {
		//
		// 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;
		}
		nazwa = nazwa.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");	// trim
 
		//
		// 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>>>');
 
		dlugosc = 0;
		zawartosc = zaw;
		// obliczam długość najdłuższej nazwy parametru
		while (zawartosc.length) {
			linia = zawartosc.substr(0, zawartosc.indexOf('\n'));
			zawartosc = zawartosc.substr(zawartosc.indexOf('\n')+1);
			if (linia.match(/^ *\|[0-9a-zA-Z\*\. \t\_\-\*\/\(\)\?\,\:ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*\=/)){
				linia = linia.replace(/^ *\|([^=]*)=.*$/, '$1');
				linia = linia.replace(/^[ \t]*([^ \t])/, '$1');
				linia = linia.replace(/([^ \t])[ \t]*$/, '$1');
				if (!(linia.match(/^(stopni|minut|sekund)(N|E|S|W)$/))) {
					dlugosc = (dlugosc>linia.length) ? dlugosc : linia.length;
				}
			}
		}
		// 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(/^Biogram infobox/)) {
			dlugosc = 20;
		} else if (nazwa.match(/^Dzielnica infobox/)) {
			dlugosc = 28;
		}

		// przerabiam wywołania parametrów
		nowazaw = '';
		while (zaw.length) {
			linia = zaw.substr(0, zaw.indexOf('\n'));
			zaw = zaw.substr(zaw.indexOf('\n')+1);
			if (linia.match(/^ *\|[0-9a-zA-Z\*\. \t\_\-\*\/\(\)\?\,\:ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]*\=/)){
				nazwapar = linia.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 = linia.replace(/^ *\|[^=]* *=(.*)$/, '$1');
				parametr = parametr.replace(/^ *([^ ])/, '$1');
				parametr = parametr.replace(/([^ ])[ \n]*$/, '$1');
				if (parametr == "?")
					parametr = "";
				parametr = parametr.replace(/ *<\/?br ?\/?>$/gi, '');

				nowazaw += ' |' + nazwapar + ' = ' + parametr + '\n';
			} else {
				nowazaw += linia + '\n';
			}
                	nowazaw = nowazaw.replace(/\n( \|(minut|sekund)(N|E|S|W|_szer|_dł) =)/, '$1');
        	        nowazaw = nowazaw.replace(/\n \|(szerokość|długość) *= (N|E|S|W)/, ' |$1 = $2');
		}

		// składam do kupy nowy ibox
		return '{{' + nazwa.substring(0,1).toUpperCase() + nazwa.substring(1) + nowazaw + '}}';
	}

	wp_sk.rFriendlyIbox = wp_sk.mm_rFriendlyIbox;
	wp_sk.extension += "+[[WP:SK/mSI|mSI]]";
});