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")))))
&¶metr.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(/ /g,"_").replace(/ /g,"_").replace(/[_\s]+/g,"_");
}else{
kod_bez_znacznikow=kod_bez_znacznikow.replace(/ /g," ").replace(/ /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(/&/g,"&").replace(/ /g," ").replace(/</g,"<").replace(/>/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(/ /g,"_").replace(/ /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={
'"':"\"",
'&':"&",
'<':"<",
">":">",
};
tekst=tekst.replace(/(&[^&;]+;)/g,function(str){
return tab_str[str]||str;
});
return tekst;
}