Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/Libre.js

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)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/*Kodowanie ciągów: HREF i WIKI, i ich odkodowanie*/
DodatkiSkrypt.Libre=new Array();
DodatkiSkrypt.Libre.Kodowanie=new Array();
DodatkiSkrypt.Libre.Kodowanie.EncodeWiki=function(parametr){
	parametr=parametr.replace(/[_\s]+/g,"_");
	return parametr;
}
DodatkiSkrypt.Libre.Kodowanie.DecodeWiki=function(parametr){
	parametr=parametr.replace(/[_\s]+/g," ");
	return parametr;
}
DodatkiSkrypt.Libre.Kodowanie.IsEncodedHtml=function(parametr,encode,encode_real){
	var czy_dobrze=(((encode_real)&&(parametr.match(new RegExp("^[\\w\\s.,\\/#!$\\^&\\*;:{}=\\-_`~()]*$","g"))))
		                      ||((encode)&&(parametr.match(new RegExp("^[^%]*$","g"))))
		                      ||((((!encode_real)||((encode_real)&&(parametr.match(new RegExp("^[\\w\\s.,\\/#!$%\\^&\\*;:{}=\\-_`~()]*$","g")))))
		                       	      &&parametr.match(/%[0-9A-F]{2}/g))
		                              &&(!parametr.match(/%$/g))
		                              &&(!parametr.match(/%.$/g))
		                              &&(!parametr.match(/%[^0-9A-F]./g))
		                              &&(!parametr.match(/%.[^0-9A-F]/g))
		                          )
		                );
		return czy_dobrze;
}
DodatkiSkrypt.Libre.Kodowanie.EncodeHtml=function(parametr,encode,encode_real){
	if(parametr===null){return null;}
	if(DodatkiSkrypt.Libre.Kodowanie.IsEncodedHtml(parametr,((encode!==undefined)?encode:true),encode_real)){return this.EncodeWiki(parametr);}
	return encodeURIComponent(DodatkiSkrypt.Libre.Kodowanie.EncodeWiki(parametr));
}
DodatkiSkrypt.Libre.Kodowanie.DecodeHtml=function(parametr,spacje,encode,encode_real){
	if(parametr===null){return null;}
	if(DodatkiSkrypt.Libre.Kodowanie.IsEncodedHtml(parametr,((encode!==undefined)?encode:false),encode_real)){
		if(spacje){
			return DodatkiSkrypt.Libre.Kodowanie.DecodeWiki(decodeURIComponent(parametr));
		}else{
			return DodatkiSkrypt.Libre.Kodowanie.EncodeWiki(decodeURIComponent(parametr));
		}
	}
	if(spacje){
	    return DodatkiSkrypt.Libre.Kodowanie.DecodeWiki(parametr);
	}else{
		return DodatkiSkrypt.Libre.Kodowanie.EncodeWiki(parametr);
	}
}
	
/*Funkcje dopasowania do wzorów bez znaków specjalnych, nieroźróżnianie wielkożści liter, wzorów tablicy*/
DodatkiSkrypt.Libre.Norma=new Array();
DodatkiSkrypt.Libre.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum=function(ciag){
	return ciag.replace(/([\\\+\*\.\(\)\{\}\[\]\/\,\|\?\^\$])/g,"\\$1");
}
DodatkiSkrypt.Libre.Norma.AutomicznyWedleWielkosciLiterIOznaczeniaWolnychMiejsc=function(ciag){
	var __replace=function(s){
	   	var maly=s.toLowerCase();var duzy=s.toUpperCase();
	   	if(maly!=duzy){
	   		return "["+duzy+maly+"]";
	   	}
	   	return s;
	}
	return "^[\\s_]*"+(ciag.replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"")).replace(/(.)/g,__replace).replace(/[\s_]+/g,"[\\s_]+")+"[\\s_]*$";
}
DodatkiSkrypt.Libre.Norma.DopasowanieSchematuDoNormTablicy=function(tablica,ciag){
	var dopasowanie=true;
	for(var p in tablica){
		var wzor=DodatkiSkrypt.Libre.Norma.AutomicznyWedleWielkosciLiterIOznaczeniaWolnychMiejsc(tablica[p]);
		var re=new RegExp(wzor);
		dopasowanie=dopasowanie && re.test(ciag);
		if(!dopasowanie){return dopasowanie;}
	}
	return dopasowanie;
}
DodatkiSkrypt.Libre.Title=new Array();
DodatkiSkrypt.Libre.Title.UrojoneStrony=function(href){
	href=DodatkiSkrypt.Libre.Kodowanie.DecodeHtml(href,true);
	var parametry=href.match(/^\/w\/index\.php\?([^&=]*=.*)$/g)||href.match(/^\/wiki\/.*\?([^&=]*=.*)$/g);
	var czy_edit=false;
	if(parametry){
		czy_edit=/^action=edit$/g.test(parametry)||/^.*&action=edit$/g.test(parametry)||/^.*&action=edit&.*$/g.test(parametry);
	}
	
	href=href.replace(/^\/w\/index\.php\?title=([^&]*).*$/g,"$1");
	href=href.replace(/^\/wiki\//g,"");
	
	return {
		"href":href,
		"edit":((czy_edit)?true:false),
	};
}
DodatkiSkrypt.Libre.Title.OdWielkiejPierwszaLiteraTekstu=function(tekst){
	return tekst.charAt(0).toUpperCase() + tekst.slice(1);
}
DodatkiSkrypt.Libre.Title.UsuwanieApostrofowe=function(tekst){
	while((/'''([^'].*)'''/g.test(tekst))||(/''([^'].*)''/g.test(tekst))){
		tekst=tekst.replace(/'''([^'].*)'''/g,"$1");
		tekst=tekst.replace(/''([^'].*)''/g,"$1")
	}
	return tekst;
}
DodatkiSkrypt.Libre.Title.UsuwanieBezbarwnychZnakowych=function(tekst){
	tekst=tekst.replace(/^\s*/g,"").replace(/\s*$/g,"").replace(/\s+/g," ");
	return tekst;
}
DodatkiSkrypt.Libre.Title.UsuwanieArtykularnychZnakowych=function(tekst){
	tekst=tekst.replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
	return tekst;
}
/*Funkcje, któa liczby poziom nagłówka rzczywisty i realny*/
DodatkiSkrypt.Libre.HNumer=new Array();
DodatkiSkrypt.Libre.HNumer.LiczonyHNumer=function(){
	var ulozenie=null;
	var ostatnie=0;
	return function(h_numer){
	    if((ulozenie==null)||(ulozenie>=h_numer)){
			ulozenie=h_numer-1;
        }else{
        	if(h_numer-ostatnie>0){
        		if(ostatnie+1<h_numer-ulozenie){
                	ulozenie=h_numer-ostatnie-1;
        		}else if(ostatnie-1>h_numer-ulozenie){
            		ulozenie=h_numer-ostatnie+1;
        		}else if(ostatnie==h_numer-ulozenie){
        			ulozenie=h_numer-ostatnie;
        		}
        	}
        }
    	ostatnie=h_numer-ulozenie;
    	h_numer=h_numer-ulozenie;
    	return h_numer;
	   }
}
DodatkiSkrypt.Libre.HNumer.PoziomNapisuWprowadzeniaTekstu=function(hparent){
	var h=hparent.tagName.toUpperCase();
	if(!/^H\d+$/g.test(h)){return null;}
	var h_numer=undefined;
	var h_klasa=hparent.classList;
	for(var xx=0;xx<h_klasa.length;++xx){
		var klasa_pojedynca=h_klasa[xx];
		var czy_pasuje_klasa=klasa_pojedynca.match(/^mw\-hnumber\-\d+$/g);//Szablon HNumer
		if(czy_pasuje_klasa){
			var h_numer2=parseInt(czy_pasuje_klasa.toString().replace(/^mw\-hnumber\-/g,""));
			if(!isNaN(h_numer2)){
				if(h_numer2>6){
					h_numer=h_numer2;
				}
			}
			break;
		}
	}
	if(h_numer===undefined){
		h_numer=h.replace(/^[^\d]+/g,"");
		h_numer=parseInt(h_numer);
		h_numer=((!isNaN(h_numer))?h_numer:null);
	}
	return h_numer;
}
/*Funkcja czekająca na wątki asynchroniczne, zdefiniowane za pomocą obiektu new DodatkiSkrypt.GenerowaneObiekty lub za pomocą innej funkcji, i ewentualnie czekająca na zerowanie liczby wątków*/
DodatkiSkrypt.Libre.CzyElementHTMLJestUkrytyPrzezSiebieLubPrzezRodzica=function(id){
	var display=window.getComputedStyle(id, null).getPropertyValue("display");
	if(display=="none"){return true;}
	var parents=$(id).parents('*');
	for(var i=0;i<parents.length;++i){
		var display=window.getComputedStyle(parents[i], null).getPropertyValue("display");
		if(display=="none"){return true;}
	}
	return false;
}
DodatkiSkrypt.Libre.Style=new Array();
DodatkiSkrypt.Libre.Style.PrzeniesienieStyloweHTMLNaStartStronyParsera=function(){
	var mw_parser_output=$("#mw-content-text .mw-parser-output");
	if(mw_parser_output.length==0){return;}
	mw_parser_output.each(function(i,element){
		var style=$(element).find('style');
    	if((style!==null)&&(style.length>0)){
    		for(var i=0;i<style.length;++i){
    			var Href=function(styl){
    				var dublikat=styl.getAttribute('data-mw-deduplicate');
    				if(dublikat){
    					if(/^\s*$/g.test(dublikat)){return null;}
    					return dublikat;
    				}
    				return null;
	    		}
    			var duplikat=Href(style[i]);
    			var tak=false;
    			for(var s=0;s<i;++s){
    				var duplikat2=Href(style[s]);
    				if(duplikat2==duplikat){
    					tak=true;
    					break;
    				}
    			}
    			if(!tak){
    				var element_style=style[i].parentNode.removeChild(style[i]);
    				element.insertBefore(element_style,element.firstChild);
    			}else{
    				var element_style=style[i].parentNode.removeChild(style[i]);
    			}
    		}
    	}
    });
}
DodatkiSkrypt.Libre.Style.UsuwanieStyloweHTML=function(tekst){
	var div=document.createElement('div');
	div.innerHTML=tekst;
	$(div).find('style').each(function(i,element){
		element.outerHTML="";
	});
	return div.innerHTML;
}
DodatkiSkrypt.Libre.Style.UsuwanieZnacznikaNowejLinii=function(tekst){
	var div=document.createElement('div');
	div.innerHTML=tekst;
	var br_element=$(div).find('br, hr');
	$(br_element).each(function(i,element){
		element.outerHTML=" ";
	});
	return div.innerHTML;
}
DodatkiSkrypt.Libre.Style.UsuwanieZnacznikoweHTML=function(tekst,czy_podkresniki){
	var div=document.createElement('div');
	div.innerHTML=DodatkiSkrypt.Libre.Style.UsuwanieZnacznikaNowejLinii(tekst);
	var kod_bez_znacznikow=div.textContent.replace(/\n/g," ").replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"");
	if(!czy_podkresniki){
		kod_bez_znacznikow=kod_bez_znacznikow.replace(/&nbsp;/g,"_").replace(/&#32;/g,"_").replace(/[_\s]+/g,"_");
	}else{
		kod_bez_znacznikow=kod_bez_znacznikow.replace(/&nbsp;/g," ").replace(/&#32;/g," ").replace(/[_\s]+/g," ");
	}
	kod_bez_znacznikow=kod_bez_znacznikow.replace(/&#(\d+);/g,function(s,s1){
		return String.fromCharCode(s1);
	});
	return kod_bez_znacznikow;
}
DodatkiSkrypt.Libre.Style.UsuwanieZnacznikoweHTMLBezModyfikacjiTekstu=function(tekst){
	var div=document.createElement('div');
	div.innerHTML=DodatkiSkrypt.Libre.Style.UsuwanieZnacznikaNowejLinii(tekst);
	$(div).children("*").each(function(i,element){
		var display=$(element).css("display");
		if(display=="none"){
			element.outerHTML="";
		}
	});
	return div.textContent;
}
DodatkiSkrypt.Libre.Style.UsuwanieZnacznikoweLinkuHTML=function(tekst){
	var div=document.createElement('div');
	div.innerHTML=tekst;
	$(div).find('a').each(function(i,element){
		element.outerHTML=element.innerHTML;	
	});
	var tekst=div.innerHTML;
	tekst=tekst.replace(/^\s*/g,"").replace(/\s*$/g,"").replace(/\s+/g," ");
	return tekst;
}
DodatkiSkrypt.Libre.Style.WstawianieTekstuZnacznikaMwParserOutput=function(tekst){
	var div=document.createElement('div');
	div.innerHTML=tekst;
	var str_tekst_zawartosc=$(div).children('div.mw-parser-output').first();
	if(str_tekst_zawartosc.length>0){
		return str_tekst_zawartosc[0].innerHTML;
	}
	return null;
}
DodatkiSkrypt.Libre.ZmienianieKodoweZnakoweSpecjalnePrzedOdpowiednieZnaki=function(tekst,wielokrotne_spacje){
	tekst=tekst.replace(/&#(\d+);/g,function(kod){
		return String.fromCharCode(kod);
	}).replace(/\n/g," ").replace(new RegExp(String.fromCharCode(8203),"g"),"").replace(new RegExp(String.fromCharCode(160),"g")," ").replace(/&amp;/g,"&").replace(/&nbsp;/g," ").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/(%s+)/g,function(s){
		if(!wielokrotne_spacje){
			return " ".repeat(s.length);
		}
		return " ";
	}).trim();
	return tekst;
}
DodatkiSkrypt.Libre.Style.PoprawMianoNazwyStrony=function(tekst){
	return tekst.replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
}
DodatkiSkrypt.Libre.Style.PoprawIdZnacznika=function(id){
	id=id.replace(/^[_\s]*/g,"").replace(/[_\s]*$/g,"").replace(/&nbsp;/g,"_").replace(/&#32;/g,"_").replace(/[\s_]+/g,"_");
	return id;
}
DodatkiSkrypt.Libre.Style.SpecjalneKodyWiki=function(tekst){
	var tab_znak={
		"<":"{{Mniejszy}}",
		">":"{{Większy}}",
		"=":"{{=}}",
		"|":"{{!}}",
		"{":"{{(}}",
		"}":"{{)}}",
		"[":"{{!(}}",
		"]":"{{)!}}",
	};
	return tekst.replace(/(.)/g,function(s){return (tab_znak[s]||s);});
}
DodatkiSkrypt.Libre.Zmienne=new Array();
DodatkiSkrypt.Libre.Zmienne["CzekajNaPojedyńcząZmienną"]=function(zmienna,element){
	//var czas=0;
	return $(document).DodatkiSkryptPromise(function(resolve,reject){
		function Czekaj(){
			if((zmienna)&&(zmienna[element])){
				resolve();	
			}else{
	//			if(czas>1000*60){
	//				reject();
	//			}else{
					//czas+=100;
					setTimeout(Czekaj,0);
	//			}
			}
		}
		Czekaj();
	});
};
DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"]=function(zmienna,tab){
	var tab_promise=new Array();
	for(var p in tab){
		tab_promise.push(DodatkiSkrypt.Libre.Zmienne["CzekajNaPojedyńcząZmienną"](zmienna,tab[p]));
	}
	return Promise.all(tab_promise);
}
DodatkiSkrypt.Libre.Zmienne.CzyObietnica=function(value){
	return !!((value)&&(typeof(value)=="object")&&(value.then)&&(typeof(value.then)==='function')&&(value.constructor.name === 'Promise'));
}
DodatkiSkrypt.Libre.Html=new Array();
DodatkiSkrypt.Libre.Html.IteratorDzieciPoElemencieHtml=function(element,czy_elementy){
	var element_kolejny=undefined;
	return function(){
		if(element_kolejny===null){return null;};
		if(!element_kolejny){
			element_kolejny=(!czy_elementy)?(element.firstChild):(element.firstElementChild);
			return element_kolejny;
		}else{
			element_kolejny=(!czy_elementy)?(element_kolejny.nextSibling):(element_kolejny.nextElementSibling);
			return element_kolejny;
		}
	}
}
DodatkiSkrypt.Libre.Html.IteratorPrzodkowyPoElemencieHtml=function(element,czy_elementy){
	var iter_child=undefined;
	var dziecko=false;
	var iter=DodatkiSkrypt.Libre.Html.IteratorDzieciPoElemencieHtml(element,czy_elementy);
	return function(){
		var iter_main=function(){
			var elements=iter();
			if(!elements){return null;};
			dziecko=true;
			iter_child=DodatkiSkrypt.Libre.Html.IteratorPrzodkowyPoElemencieHtml(elements,czy_elementy);
			return elements;
		}
		if(!dziecko){
			return iter_main();
		}else{
			var elements2=iter_child();
			if(!elements2){
				dziecko=false;
				var elements3=iter_main();
				return elements3;
			}else{
				return elements2;
			}
		}
	};
};
DodatkiSkrypt.Libre.Text=new Array();
DodatkiSkrypt.Libre.Text.Decode=function(tekst){
	var tab_str={
		'&quot;':"\"",
		'&amp;':"&",
		'&lt;':"<",
		"&gt;":">",
	};
	tekst=tekst.replace(/(&[^&;]+;)/g,function(str){
		return tab_str[str]||str;
	});
	return tekst;
}