Moduł:Specjalne

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
p["UsuńŚciśleOkreśloneKategorie"]=function(frame)
   local parametry_modul=require("Module:Parametry");
   local PobierzParametr=parametry_modul.PobierzParametr(frame);
   local tekst=PobierzParametr("tekst") or PobierzParametr(1);
   local kategoria=PobierzParametr("kategoria") or PobierzParametr(2) or "([^%[%]|]*)";
   tekst,_=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*"..kategoria.."%s*%]%]","");
   tekst,_=mw.ustring.gsub(tekst,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*"..kategoria.."%s*%]%]","");
   tekst,_=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*"..kategoria.."%s*|[^%[%]]*%]%]","");
   tekst,_=mw.ustring.gsub(tekst,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*"..kategoria.."|[^%[%]]*%s*%]%]","");
   return tekst;
end;
p["UsuńKategorie"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local category=require("Module:Nazwy").Np{nazwa="Category"};
    local wzorcategory=require("Module:Techniczne")["WzórDanejPrzestrzeniNazw"](category);
    argument_pierwszy,_=mw.ustring.gsub(argument_pierwszy,"%[%[%s*"..wzorcategory.."%s*:[^%[%]]*%]%]","");
    argument_pierwszy,_=mw.ustring.gsub(argument_pierwszy,"%[%[%s*[CC][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^%[%]]*%]%]","");
    return argument_pierwszy;
end;
p["UsuńZnaczniki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1);
    argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"(</?%s*[^<>]+>)","");
    return argument_ze_znacznikiem;
end;
p["UsuńKomentarze"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1);
    argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,"<!%-%-.-%-%->","");
    return argument_ze_znacznikiem;
end;
p["UsuńSzablonyStylów"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_ze_znacznikiem=PobierzParametr("tekst") or PobierzParametr(1);
	local html_dane_modul=mw.loadData("Module:Html/dane");
	local znak_127=html_dane_modul.znak_127;
	argument_ze_znacznikiem=mw.ustring.gsub(argument_ze_znacznikiem,znak_127.."'\"`UNIQ%-%-templatestyles%-%w+%-QINU`\"'"..znak_127,"");
	return argument_ze_znacznikiem;
end;
p["UsuńWywołaniaPlików"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local wartosc=mw.ustring.gsub(argument_pierwszy,"%[%[%s*[Pp][Ll][Ii][Kk]%s*:[^%[%]]*%]%]","");
	wartosc=mw.ustring.gsub(wartosc,"%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^%[%]]*%]%]","");
	wartosc=mw.ustring.gsub(wartosc,"%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^%[%]]*%]%]","");
	wartosc=mw.ustring.gsub(wartosc,"%[%[%s*[Gg][Rr][Aa][Ff][Ii][Kk][Aa]%s*:[^%[%]]*%]%]","");
	return wartosc;
end;
p["UsuńInterwiki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local pudelko_modul=require("Module:Pudełko");
	----
	local function usun_interwiki(interwiki)
		local wartosc=mw.ustring.match(interwiki,"%[%[[%s_]*([^:]*[^:%s_])[%s_]*:[^%[%]]*%]%]");
		if(wartosc)then
			wartosc=mw.getContentLanguage():lc(wartosc);
			local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(wartosc);
			if(czy_kod_jezyka_istnieje)then
				if(wartosc==pudelko_modul["Kod języka tego projektu"](frame))then
					return interwiki;
				else
					return "";
				end;
			end;
		end;
		return interwiki;
	end;
	---
	return mw.ustring.gsub(argument_pierwszy,"(%[%[[^%[%]]*%]%])",function(s)return usun_interwiki(s);end);
end;
p["CzyInterwiki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local pudelko_modul=require("Module:Pudełko");
	----
	local function czy_interwiki(interwiki)
		local wartosc=mw.ustring.match(interwiki,"^%[%[[%s_]*([^:]*[^:%s_])[%s_]*:[^%[%]]*%]%]$");
		if(wartosc)then
			wartosc=mw.getContentLanguage():lc(wartosc);
			local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(wartosc);
			if(czy_kod_jezyka_istnieje)then
				if(wartosc==pudelko_modul["Kod języka tego projektu"](frame))then
					return false;
				else
					return true;
				end;
			end;
		end;
		return false;
	end;
	----
	return czy_interwiki(argument_pierwszy);
end;
p["CzyAdresLinkuWewnętrznego"]=function(frame)
	local dwukropek=frame.args[1];
	if(dwukropek~="")then
		return "tak";
	else
		local adres=frame.args[2];
		local kod=mw.ustring.match(adres,"^[:%s_]*([^:%s]+[^:]*):");
		if(kod)then
			kod=mw.getContentLanguage():lc(kod);
			if(mw.language.isKnownLanguageTag(kod))then 
				local pudelko_modul=require("Module:Pudełko");
				if(kod==pudelko_modul["Kod języka tego projektu"]())then return "tak";else return nil;end;
			end;
			local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
			if(wiki_interwiki_modul.interwikimap[kod])then return "tak";end;
			local nazwy_modul=require("Module:Nazwy");
			local przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](adres);
			local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
			if((przestrzen==nazwy_np_modul.File)or(przestrzen==nazwy_np_modul.Category))then return nil;end;
		end;
		return "tak";
	end;
	return nil;
end;
p["CzyLinkWewnętrzny"]=function(szablon)
	local dwukropek,adres=mw.ustring.match(szablon,"^%[%[%s*(:?)%s*([^|]*)");
    return ((p["CzyAdresLinkuWewnętrznego"]{args={[1]=dwukropek,[2]=adres,}})and true or false);
end;
p["ZamieńLinkiWewnętrzneNaTekst"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local nazwy_modul=require("Module:Nazwy");
	local pudelko_modul=require("Module:Pudełko");
	local html_modul=require("Module:Html");
	local function LinkiZamienianieNaZawartoscLubNazwe(link,dwukropek,zawartosc,nazwa)
		local prefix=mw.ustring.match(zawartosc,"^[%s_]*([^:]*[^:%s_])[%s_]*:");
		if(prefix)then
			local czy_kod_jezyka_istnieje=mw.language.isKnownLanguageTag(prefix);
			if(czy_kod_jezyka_istnieje)then
				if(#dwukropek>0)then
					return nazwa or html_modul.DecodeHtml(zawartosc,true);
				elseif(prefix==pudelko_modul["Kod języka tego projektu"](frame))then
					return nazwa or html_modul.DecodeHtml(zawartosc,true);
				else
					return link;
				end;
			else
				local nazwa_przestrzeni=nazwy_modul.Np{nazwa=prefix,istnieje="tak",["wynik błędu nietekstowy"]="tak"};
				if(not nazwa_przestrzeni)then return nazwa or zawartosc;end;
				if((nazwa_przestrzeni==nazwy_np_modul.Category)or(nazwa_przestrzeni==nazwy_np_modul.File))then
					if(#dwukropek>0)then
						return nazwa or html_modul.DecodeHtml(zawartosc,true);
					else
						return link;
					end;
				else
					return nazwa or html_modul.DecodeHtml(zawartosc,true);
				end;
			end;
		else
			return nazwa or html_modul.DecodeHtml(zawartosc,true);
		end;
	end;
	-----
	local wartosc=mw.ustring.gsub(argument_pierwszy,"(%[%[(:?)/([^/{}|%[%]][^{}|%[%]]-)/+%]%])",LinkiZamienianieNaZawartoscLubNazwe);
	wartosc=mw.ustring.gsub(wartosc,"(%[%[(:?)/([^/{}|%[%]][^{}|%[%]]-)/+|([^{}%[%]]+)%]%])",LinkiZamienianieNaZawartoscLubNazwe);
	-----
	wartosc=mw.ustring.gsub(wartosc,"(%[%[(:?)([^{}|%[%]]+)%]%])",LinkiZamienianieNaZawartoscLubNazwe);
	wartosc=mw.ustring.gsub(wartosc,"(%[%[(:?)([^{}|%[%]]+)|([^{}%[%]]+)%]%])",LinkiZamienianieNaZawartoscLubNazwe);
	----
	return wartosc;
end;
p["ZamieńLinkiZewnętrzneNaTekst"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	function SprawdzanieCzyNieLinkPozaProjektowy(wartosc)
		local link=mw.ustring.match(wartosc,"^%[([^%s%[%]]+)%s+[^%[%]]+%]$")or mw.ustring.match(argument_pierwszy,"^%[([^%s%[%]]+)%s*%]$");
		if(link)then
			local html_modul=require("Module:Html");
			local czy_link=html_modul["SprawdźURL"](link);
			if(czy_link)then
				return true;
			end;
		end;
	end;
	local wartosc=mw.ustring.gsub(argument_pierwszy,"^(%[%s*[^%[%]%s]+%s+([^%[%]]*)%])",function(a,b)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"(%[%s*[^%[%]%s]+%s+([^%[%]]*)%])$",function(a,b)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"([^%[])(%[%s*[^%[%]%s]+%s+([^%[%]]*)%])",function(a,b,c)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(b);
		if(wynik)then return a..c;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"(%[%s*[^%[%]%s]+%s+([^%[%]]*)%])([^%]])",function(a,b,c)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b..c;end;
	end);
	------
	wartosc=mw.ustring.gsub(wartosc,"^(%[%s*([^%[%]%s]-)%s*%])",function(a,b)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"(%[%s*([^%[%]%s]-)%s*%])$",function(a,b)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"([^%[])(%[%s*([^%[%]%s]-)%s*%])",function(a,b,c)
	    local wynik=SprawdzanieCzyNieLinkPozaProjektowy(b);
		if(wynik)then return a..c;end;
	end);
	wartosc=mw.ustring.gsub(wartosc,"(%[%s*([^%[%]%s]-)%s*%])([^%]])",function(a,b,c)
		local wynik=SprawdzanieCzyNieLinkPozaProjektowy(a);
		if(wynik)then return b..c;end;
	end);
	return wartosc;
end;
p["UsuńZnakiSpecjalne"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	local wartosc=argument_pierwszy;
	repeat 
		local ile;
		wartosc,ile=mw.ustring.gsub(wartosc,"'''([^'].-)'''","%1");
		until (ile==0);
	repeat 
		local ile;
		wartosc,ile=mw.ustring.gsub(wartosc,"''([^'].-)''","%1");
	until (ile==0);
	wartosc=mw.ustring.gsub(wartosc,"([%w%c%p]%s*)''+(%s*[%w%c%p])","%1'%2");
	repeat
		local ile1;local ile2;
		wartosc,ile1=mw.ustring.gsub(wartosc,"^%s*'''","");
		wartosc,ile2=mw.ustring.gsub(wartosc,"^%s*''","");
	until ((ile1==0)and(ile2==0));
	return wartosc;
end;
p["UsuńZbędneBiałeZnaki"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"^%s*","");
	argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"%s*$","");
	argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"%s+"," ");
	return argument_pierwszy;
end;
p["WydzielLiczbę"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local argument_pierwszy=PobierzParametr("tekst") or PobierzParametr(1);
	---
	local wartosc=p["UsuńKomentarze"](argument_pierwszy);
	wartosc=p["ZamieńLinkiWewnętrzneNaTekst"](wartosc);
	wartosc=p["ZamieńLinkiZewnętrzneNaTekst"](wartosc);
	wartosc=p["UsuńSzablonyStylów"](wartosc);
	wartosc=p["UsuńZnaczniki"](wartosc);
	wartosc=p["UsuńKategorie"](wartosc);
	wartosc=p["UsuńWywołaniaPlików"](wartosc);
	wartosc=p["UsuńInterwiki"](wartosc);
	wartosc=p["UsuńZnakiSpecjalne"](wartosc);
	----
	local ile;
	wartosc,ile=mw.ustring.gsub(wartosc,"^([^%d]-)([%+%-]?%d+[%d%s]-)%s*$","%2");
	if(ile==0)then return nil;end;
	wartosc=mw.ustring.gsub(wartosc,"(%d)%s+(%d)","%1%2");
	return tonumber(wartosc);
end;
p["PrzetwórzNagłówek"]=function(adres,czy_naglowek_linku,czy_nie_rozwin_adres)
	if(not czy_nie_rozwin_adres)then
		local frame=mw.getCurrentFrame();
		adres=frame:preprocess(adres);
	end;
    adres=p["UsuńKomentarze"](adres);
    adres=p["ZamieńLinkiWewnętrzneNaTekst"](adres);
	adres=p["ZamieńLinkiZewnętrzneNaTekst"](adres);
	adres=p["UsuńInterwiki"](adres);
	adres=p["UsuńKategorie"](adres);
	adres=p["UsuńWywołaniaPlików"](adres);
	local bez_funkcji_naglowka_linku_adres=nil;
	if(czy_naglowek_linku)then
		bez_funkcji_naglowka_linku_adres=adres;
		adres=p["UsuńSzablonyStylów"](adres);
		adres=p["UsuńZnaczniki"](adres);
		adres=mw.ustring.gsub(adres,"&#(%d+);",function(s) return mw.ustring.char(s);end);
		adres=mw.ustring.gsub(adres,"[{}|<>=]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
		local parametry_modul=require("Module:Parametry");
		adres=parametry_modul["Odstępy"]{[1]=adres,[2]="tak",[3]="tak",};
	end;
	return adres,bez_funkcji_naglowka_linku_adres;
end;
return p;