Dokumentacja modułu [stwórz] [odśwież]
local p={};
p["Pierwszy niepusty"]= function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local i=1;
	local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
	local licznik=1;
	while true do
		local test=args["test"..i];
		local _i=args[i];
		local zmienna=test or _i;
		local czy_tak=parametry_modul.CzyTak(zmienna);
		if(czy_tak)then
			return (_i)and _i or "{{{"..i.."}}}";
		end;
		if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
		if(zmienna)then licznik=licznik+1;end;
		i=i+1;
	end;
	return;
end;
function p.NowikiParametr(frame)
	local parametr=frame.args[1];
	local tab_parametr=mw.loadData("Module:Techniczne/dane").tablica_parametr;
	parametr=mw.ustring.gsub(parametr,"(.)",tab_parametr);
	return parametr;
end;
function p.EncodeParametr(frame)
	local parametr=frame.args[1];
	local tablica_kodowa=mw.loadData("Module:Techniczne/dane").tablica_kodowa;
	local szablonowe_dane_modul=require("Module:Szablonowe/dane");
	parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
		return a..mw.text.encode(str)..b;
	end)
	parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
		local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
		if(znacznik)then
			znacznik=mw.getContentLanguage():lc(znacznik);
			local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
			if(not czy_znacznik)then
				return "&amp;lt;"..znak..mw.text.encode(str).."&amp;gt;";
			end;
		end;
	end);
	parametr=mw.text.decode(parametr);
	parametr=mw.text.encode(parametr);
	return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
	local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
	local zawartosc_komunikatu;
	if(komunikat:exists())then
		zawartosc_komunikatu=komunikat:plain();
		zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
	else
		zawartosc_komunikatu="Module:$1/opis";
	end;
    local nazwy_modul=require("Module:Nazwy");
	local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
	local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
	local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
	if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
		local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
		local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
		local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
		local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
		return pelna_strona_opisu;
	else
		return pelna_nazwa_strony_podanej_lub_aktualnej;
	end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
	local klucz_projektu=PobierzParametr("klucz projektu");
	local kod_jezyka=PobierzParametr("kod języka");
	local kod_projektu=PobierzParametr("kod projektu");
	
	local wiki_modul=require("Module:Wiki");
	local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
	local nazwy_modul=require("Module:Nazwy");

	local uchwyt_przestrzeni_nazw;
	if(czy_biezace_wiki)then
		uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
	else
		uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
	end;
	if(uchwyt_przestrzeni_nazw)then
		return "tak";
	else
		return;
	end;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
	
	local wzor, _ = mw.ustring.gsub(nazwa,"(.)",function (s) return ((mw.ustring.match(s,"^%a$"))and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")or s);end )
	wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
	wzor="[%s_]*"..wzor.."[%s_]*";
	return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local strona=PobierzParametr(1) or PobierzParametr("nazwa");
	local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
	wzor,_=mw.ustring.gsub(wzor,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
	wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
	wzor="[%s_]*"..wzor.."[%s_]*";
	return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local strona=PobierzParametr(1) or PobierzParametr("nazwa");
	local nazwy_modul=require("Module:Nazwy");
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
	local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
	if(nazwa_przestrzeni~="")then
		nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
	end;
	nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
	return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
	tekst,_=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
	return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
	tekst,_=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
	return tekst;
end;
function p.PoliczZbiory(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame,true);

	local liczba_istniejacych_zbiorow=0;
	local tabela_uchwytow_stron={};
	for _,nazwa_strony in ipairs(args) do
	   local uchwyt_strony = mw.title.makeTitle('',nazwa_strony);
	   local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
	   
	   local czy_istnieje=tekst_artykulu and tekst_artykulu or (uchwyt_strony and uchwyt_strony.exists or nil);
	   
	   tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
	   if(czy_istnieje)then 
	      liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
	   end;
	end;
    return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
	return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
    
	local html_modul=require("Module:Html");
	local i=html_modul.KodHTMLZnaku("&");
	local hash=html_modul.KodHTMLZnaku("#");
	local sr=html_modul.KodHTMLZnaku(";");
	text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
	text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
	return text;
end;
function p.Wikikod(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
	local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
	
	local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
	
	local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true);
	if(not tekst)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
	end;

	local html_modul=require("Module:Html");
	
	local i=html_modul.KodHTMLZnaku("&");
	local hash=html_modul.KodHTMLZnaku("#");
	local sr=html_modul.KodHTMLZnaku(";");
	tekst=mw.ustring.gsub(tekst,"&#(%d+);",i..hash.."%1"..sr);
	tekst=mw.ustring.gsub(tekst,"&(%a+);",i.."%1"..sr);
	
	local tab_znaki={
		["{"]="{{(}}",
		["}"]="{{)}}",
		["|"]="{{!}}",
		["="]="{{=}}";
	};
	local tab_linki={
		["["]="{{!(}}",
		["]"]="{{)!}}",
		["|"]="{{!}}",
	}
	local tab_tagow={
		["<"]="{{Mniejszy}}",
		[">"]="{{Większy}}",
	}
	local tab_zmienne={
		["NAMESPACE"]=true,
		["PAGENAME"]=true,
	};

    local tablica_obiektow_strony_dany_modul={};
    local szablonowe_modul=require("Module:Szablonowe")
    local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul);
	
	local szablonowe_modul=require("Module:Szablonowe");
	
	tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
				if(obiekt=="SZABLON")then
					local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
					if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
						                        		or(tabela_modyfikatorow["#invoke:"])
						                        			or(tabela_modyfikatorow["int:"]))
												and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
													or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
												
					))then
						
						if(mw.ustring.match(szablon,"|"))then
							if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
								szablon,_=mw.ustring.gsub(szablon,"(.)",tab_znaki);
				        		return szablon;
							else
								szablon,_=mw.ustring.gsub(szablon,"=","{{=}}");
								szablon,_=mw.ustring.gsub(szablon,"^{{","{{s|oryginalna=tak|analiza=tak|");
								return szablon;
							end;
						else
							if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
								szablon,_=mw.ustring.gsub(szablon,"(.)",tab_znaki);
				        		return szablon;
							end;
							if(pseudoszablon)then
									if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne[pseudoszablon]))then
										szablon,_=mw.ustring.gsub(szablon,"(.)",tab_znaki);
										return szablon;
									else
										szablon,_=mw.ustring.gsub(szablon,"^{{","{{s|oryginalna=tak|analiza=tak|");
										return szablon;
									end;
							else
								szablon,_=mw.ustring.gsub(szablon,"^{{","{{s|oryginalna=tak|analiza=tak|");
								return szablon;
							end;
						end;
					else
				         szablon,_=mw.ustring.gsub(szablon,"(.)",tab_znaki);
				         return szablon;
					end;
				elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
					szablon,_=mw.ustring.gsub(szablon,"(.)",function(znak)
						local odpowied=tab_linki[znak] or tab_znaki[znak];
						if(odpowied)then return odpowied;end;
						return znak;
					end);
					return szablon;
				elseif(obiekt=="ZMIENNA")then
					szablon,_=mw.ustring.gsub(szablon,"(.)",function(znak)
						local odpowied=tab_linki[znak] or tab_znaki[znak];
						if(odpowied)then return odpowied;end;
						return znak;
					end);
					return szablon;
				elseif((obiekt=="NOWIKI")or(obiekt=="PRE")or(obiekt=="MATH"))then
					szablon,_=mw.ustring.gsub(szablon,"(.)",function(znak)
						local odpowied=tab_linki[znak] or tab_znaki[znak] or tab_tagow[znak];
						if(odpowied)then return odpowied;end;
						return znak;
					end);
					return szablon;
				else
					return szablon;
				end;
			end);
	return frame:getParent():preprocess(tekst);
end;
p["WikikodStrony"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
	local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
	
	if(not parametry_modul.CzyTak(nazwa))then return;end;
	local title=mw.title.makeTitle(przestrzen,nazwa);
	local text=title and title:getContent() or false;
	if(not text)then return;end;
	text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
	text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	return text;
end;
function p.LuaSubst(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	
	local strona=args[1] or args["strona"];
	if(not parametry_modul.CzyTak(strona))then return "(Błąd: Podana nazwa strony jest pusta lub nie podana)";end;
	local title=mw.title.makeTitle('',strona);
	if((not title)or (not title.exists))then return "(Błąd: Podana strona nie istnieje)";end;
	local tekst=title:getContent();
	local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
	if(inkludowany)then
		tekst,_=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
		tekst,_=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	else
		local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
		if(dokumentacja)then
			tekst,_=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
			tekst,_=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
		end;
	end;
	return tekst;
end;
function p.NowaLinia(frame)
	return "\n";
end;
function p.Nowiki(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local PobierzParametr=parametry_modul.PobierzParametr(args);
	local tekst=PobierzParametr("tekst") or PobierzParametr(1);
	
	local html_modul=require("Module:Html");
	local i=html_modul.KodHTMLZnaku("&");
	local h=html_modul.KodHTMLZnaku("#");
	local s=html_modul.KodHTMLZnaku(";");
    tekst,_=mw.ustring.gsub(tekst,"&#(%d+);",i..h.."%1"..s);
    tekst,_=mw.ustring.gsub(tekst,"&(%a+);",i.."%1"..s);
    local sprawdz_modul=require("Module:Sprawdź");
    tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
    tekst=frame:callParserFunction('#tag:nowiki',tekst);
	return tekst;
end;
function p.FunkcjaLua(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local modul=require("Module:"..(args[1] or args["moduł"]));
	if(modul)then
		if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
			local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
			return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
		end;
	end;
end;
p["RozwińSzablonWzględemPodanychParametrów"]=function (frame)
    local parametry_modul=require("Module:Parametry");
    local args=parametry_modul.PobierzArgsParametry(frame)
	local PobierzParametr=parametry_modul.PobierzParametr(args);
	local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
	local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
	
	local title=mw.title.makeTitle(przestrzen,nazwa);
	local text=title and title:getContent() or nil;
	if(not text)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
	end;
	text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
	text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	local bezkluczy={
		["Nazwa strony"]=true,
		["Nazwa"]=true,
		["Miano przestrzeni nazw"]=true,
		["Przestrzeń"]=true,
		["wyspecjalizowana"]=true,
		["nie rozwiń"]=true,
	};
	local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
	local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
	text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
	return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
	local str=frame.args[1] or frame.args["ciąg"];
	local ile=tonumber(frame.args[2] or frame.args["norma"]);
	if(not ile)then return #str;end;
	if(#str<=ile)then
		return #str;
	end;
	return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
	local kat={
		["subcats"]=true,
		["files"]=true,
		["pages"]=true,
	}
	local typ=args["typ"];
	typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
	local nazwy_modul=require("Module:Nazwy");
	kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
	return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
	----
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
		if(tablica_danych_parametrow_szablonu_strony_numer)then
			local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
			if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
				return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
			end;
		end;
	end;
	---
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
	if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
	local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
	local adres;
	local dwukropek;
	if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then 
		if(adres_biezacy)then
			adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
			adres=adres_biezacy..adres_wzgledny;
		else
			return nil;
		end;
	else 
		if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
			if(adres_biezacy)then
				adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
				adres=adres_biezacy.."/"..adres_wzgledny;
			else
				return nil;
			end;
		else
			adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
			adres=adres_wzgledny;
		end;
	end;
	if(adres~="")then
		while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
			adres,_=mw.ustring.gsub(adres,"/[%s_]*/","/");
			adres,_=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
			adres,_=mw.ustring.gsub(adres,"/+","/");
			adres,_=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
			adres,_=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
			adres,_=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
		end;
		adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
		adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
		adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
		adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
		adres=mw.ustring.gsub(adres,"^[%s_]*","");
		adres=mw.ustring.gsub(adres,"[%s_]*$","");
		adres=mw.ustring.gsub(adres,"[%s_]+"," ");
	end;
	local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
	-----
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
		if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
		tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
	end;
	-----
	return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa_modulu=PobierzParametr(1);
	local html_modul=require("Module:Html");
	nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
	local title=mw.title.makeTitle('',nazwa_modulu);
	if(title)then
		local strona=title.redirectTarget;
		if(not strona)then return;end;
		return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
	else
		mw.log("Nieprawidłowy format nazwy modułu przy uzykiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
		return;
	end;
end;
p["Forma wyrażenia po liczbie"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local czy_table_frame=parametry_modul.TypeTable(frame);
	local args=czy_table_frame and (frame.args or frame) or nil;
	local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
	local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
	local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
	local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
	local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
	local specjalne_modul=require("Module:Specjalne");
	local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
	if(not liczba_number)then return "(błąd)";end;
	if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
    if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
    if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
    if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
	local reszta=math.fmod(liczba_number,20);
	if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
	if(reszta==1)then
		if(liczba_number<20)then 
			return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
		else
			return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
		end;
	end;
    if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
    return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;