Moduł:Kategorie

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local p={};
function PoliczLiczbeStronWPodkategoriach(z_kategoriami_bledow,parametry_modul,argumenty_szablonu,zebrane_kategorie,bledy,czy_korzystana_kategoria)
	local parametry_modul=require("Module:Parametry");
	local techniczne_modul=require("Module:Techniczne");
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local Category=nazwy_np_modul.Category;
	local liczba_stron_w_kategoriach=0;
	for numer_argumentu_szablonu, nazwa_kategorii in ipairs(argumenty_szablonu) do
		if(numer_argumentu_szablonu~=0)then
			local nazwa_kategorii2=parametry_modul["Odstępy"]{[1]=nazwa_kategorii,[2]="tak",};
			local liczba_stron_istniejacych,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..nazwa_kategorii2);
			if(liczba_stron_istniejacych==0)then
				if(z_kategoriami_bledow)then
					if(tabela_uchwytow_stron[1])then
		        		parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - nieistniejące kategorie]]");
		        	else
		        		parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - niepoprawne kategorie]]");
		        	end;
            	end;
		    else    
				local uchwyt_strony=tabela_uchwytow_stron[1];
				local zawartosc_strony=uchwyt_strony:getContent();
				zawartosc_strony=mw.ustring.gsub(zawartosc_strony,"%s*<!%-%-.-%-%->%s*","")
				local wywolanie_szablonu;
				local iterator=mw.ustring.gmatch(zawartosc_strony,"({{[^{}|]+|[^{}]-}})");
				for wywolanie_szablonu in iterator do
					local wywolanie_szablonu2=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{([^{}|]+)|"));
					if(mw.ustring.match(wywolanie_szablonu2,"^[_%s]-Łączna[_%s]+liczba[_%s]+stron[_%s]+w[_%s]+kategoriach[_%s]-$"))then
						local niepowtarzajace_sie_kategorie=true;
						if(zebrane_kategorie[nazwa_kategorii2])then
	    					if(z_kategoriami_bledow)then
	    						if(not czy_korzystana_kategoria)then
	    							parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się kategorie]]");
		    					else
	    							parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się parametry]]");
	    						end;
	    					end;
	    					niepowtarzajace_sie_kategorie=false;
	    				end;
	    				if(niepowtarzajace_sie_kategorie)then
	    		    		zebrane_kategorie[nazwa_kategorii2]=true;
	    	        		local tablica_argumentow_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_szablonu);
	    	        		local liczba_stron_w_kategorii=0;
	    	        		for licznik,elementy_nieponumerowane_argumentow_szablonu in pairs(tablica_argumentow_szablonu)do
	    	        			if((type(licznik)=="number")and(licznik>0))then
	    	        				 local elementy_nieponumerowane_argumentow_szablonu2=parametry_modul["Odstępy"]{[1]=elementy_nieponumerowane_argumentow_szablonu,[2]="tak",};
	    	        	    		 liczba_stron_w_kategorii=liczba_stron_w_kategorii+mw.site.stats.pagesInCategory(elementy_nieponumerowane_argumentow_szablonu2,"all");
	    	        			end;
	    	        		end;
	    	        		liczba_stron_w_kategoriach=liczba_stron_w_kategoriach+liczba_stron_w_kategorii;
	    	        	end;
	    			elseif(mw.ustring.match(wywolanie_szablonu2,"^[_%s]-Rekurencyjna[_%s]+łączna[_%s]+liczba[_%s]+stron[_%s]+w[_%s]+kategoriach[_%s]-$"))then
	    				local tablica_argumentow_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie_szablonu);
	    				for licznik,wartosc_argumentu in pairs(tablica_argumentow_szablonu) do
	    					wartosc_argumentu=parametry_modul["Odstępy"]{[1]=wartosc_argumentu,[2]="tak",};
	    					if((type(licznik)=="number")and(wartosc_argumentu~=""))then
	    						tablica_argumentow_szablonu[licznik]=wartosc_argumentu
	    					end;
	    				end;
	    				local niepowtarzajace_sie_kategorie=true
	    				if(zebrane_kategorie[nazwa_kategorii2])then
	    					if(z_kategoriami_bledow)then
	    						if(not czy_korzystana_kategoria)then
	    								parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się kategorie]]");
		    					else
	    							parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się parametry]]");
	    						end;
	    					end;
	    					niepowtarzajace_sie_kategorie=false;
	    				end;
	    				zebrane_kategorie[nazwa_kategorii2]=true;
	    				if(niepowtarzajace_sie_kategorie)then 
	    					liczba_stron_w_kategoriach=liczba_stron_w_kategoriach+PoliczLiczbeStronWPodkategoriach(z_kategoriami_bledow,parametry_modul,tablica_argumentow_szablonu,zebrane_kategorie,bledy,false);
	    				end;
	    			end;
				end;
			end;
		end;
	end;
	return liczba_stron_w_kategoriach;
end;
p["Rekurencyjna łączna liczba stron w kategoriach"]=function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=frame and ((frame.getParent and ((parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))and frame or frame:getParent()) or frame).args or frame) or {};
	
	local bledy={};
	local nazwy_modul=require("Module:Nazwy");
	local nazwa_kategorii=(args["aktualna kategoria"])and (Category..':'..args["aktualna kategoria"]) or nil;
	local nazwa_strony_aktualnej=nazwy_modul["NAZWASTRONY"](nazwa_kategorii);
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_kategorii);
	local zebrane_kategorie={};
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	if(nazwa_przestrzeni==nazwy_np_modul.Category)then
		zebrane_kategorie[nazwa_strony_aktualnej]=true;
	end;
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local Category=nazwy_np_modul.Category;
	local parametry_modul=require("Module:Parametry");
	local z_kategoriami_bledow=not parametry_modul.CzyTak(args["bez kategorii"]);
	local liczba_argumentow_ponumerowanych_w_argumentach_szablonu=parametry_modul["MaksymalnaLiczbaParametruNienazwanegoTablicy"](args,"tak");
	if(liczba_argumentow_ponumerowanych_w_argumentach_szablonu==0)then 
		if(z_kategoriami_bledow)then
			return "0[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - brak kategorii]]";
		else
			return "0";
		end;
    end;
    for licznik,wartosc_argumentu in pairs(args) do
    	local wartosc_argumentu=parametry_modul["Odstępy"]{[1]=wartosc_argumentu,[2]="tak",};
    	if((type(licznik)=="number")and(wartosc_argumentu~=""))then
	    	args[licznik]=wartosc_argumentu;
	    end;
	end;
	local liczba_stron_w_kategortiach=PoliczLiczbeStronWPodkategoriach(z_kategoriami_bledow,parametry_modul,args,zebrane_kategorie,bledy,true);
	if((z_kategoriami_bledow)and(not parametry_modul["CzySąElementyNienazwaneTablicy"](bledy,"tak")))then
		if(nazwa_przestrzeni==nazwy_np_modul.Category)then
			local args2=parametry_modul["KopiujTabelęŁańcuchów"]{tabela=args,przedrostek='Category:'};
			local techniczne_modul=require("Module:Techniczne");
			local liczba_istniejacych_kategorii_w_aktualnej_kategorii,_=techniczne_modul.PoliczZbiory(args2);
			if(liczba_argumentow_ponumerowanych_w_argumentach_szablonu~=mw.site.stats.pagesInCategory(nazwa_strony_aktualnej,"subcats")
				or(liczba_argumentow_ponumerowanych_w_argumentach_szablonu~=liczba_istniejacych_kategorii_w_aktualnej_kategorii)
			)then
				parametry_modul.DodajElementDoZbioru(bledy,"[["..Category..":Szablon rekurencyjna łączna liczba stron w kategoriach - niezgodność kategorii]]");
			end;
		end;
	end;
	return liczba_stron_w_kategortiach..table.concat(bledy);
end;
p["Łączna liczba stron w kategoriach"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=frame and ((frame.getParent and ((parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))and frame or frame:getParent()) or frame).args or frame) or {};
	
	local parametry_modul=require("Module:Parametry");
	local z_kategoriami_bledow=not parametry_modul.CzyTak(args["bez kategorii"]);
	local liczba_argumentow_ponumerowanych_w_argumentach_szablonu=parametry_modul["MaksymalnaLiczbaParametruNienazwanegoTablicy"](args,"tak");
	if(liczba_argumentow_ponumerowanych_w_argumentach_szablonu==0)then 
		if(z_kategoriami_bledow)then
			return "0[["..Category..":Szablon łączna liczba stron w kategoriach - brak kategorii]]";
		else
			return "0";
		end;
	end;
	local tabela_kategorii={};
	for licznik=1,liczba_argumentow_ponumerowanych_w_argumentach_szablonu,1 do args[licznik]=parametry_modul["Odstępy"]{[1]=args[licznik],[2]="tak",};end;
	local liczba_stron_w_kategorii=0;
	local liczba_kategorii_w_korzystanej_kategorii=0;
	local czy_ma_liczyc_zgodnosc_kategorii=true;
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local Category=nazwy_np_modul.Category;
	local techniczne_modul=require("Module:Techniczne");
	for licznik,wartosc_argumentu in pairs(args)do
		if((type(licznik)=="number")and(mw.text.trim(wartosc_argumentu)~=""))then
			local liczba_istniejacych_kategorii,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory("Category:"..args[licznik]);
			if(liczba_istniejacych_kategorii==0)then
				if(z_kategoriami_bledow)then
					if(tabela_uchwytow_stron[1])then
						parametry_modul.DodajElementDoZbioru(tabela_kategorii,"[["..Category..":Szablon łączna liczba stron w kategoriach - nieistniejące kategorie]]");
					else
						parametry_modul.DodajElementDoZbioru(tabela_kategorii,"[["..Category..":Szablon łączna liczba stron w kategoriach - niepoprawne kategorie]]");
					end;
				end;
				czy_ma_liczyc_zgodnosc_kategorii=false;
			else
		    	local czy_niepowtarzajace_kategorie=true;  
    	    	for licznik2=licznik+1,liczba_argumentow_ponumerowanych_w_argumentach_szablonu,1 do
    	    		if(args[licznik]==args[licznik2])then
    	    			if(z_kategoriami_bledow)then
    	    				parametry_modul.DodajElementDoZbioru(tabela_kategorii,"[["..Category..":Szablon łączna liczba stron w kategoriach - powtarzające się parametry]]");
    	    			end;
    	    			czy_niepowtarzajace_kategorie=false;
    	    			czy_ma_liczyc_zgodnosc_kategorii=false;
                    	break;
    	    		end;
    	    	end;
    	    	if(czy_niepowtarzajace_kategorie)then 
    	    		liczba_kategorii_w_korzystanej_kategorii=liczba_kategorii_w_korzystanej_kategorii+1;
    	    		liczba_stron_w_kategorii=liczba_stron_w_kategorii+mw.site.stats.pagesInCategory(args[licznik],"all");
    	    	end;
			end;
		end;
	end;
	if(z_kategoriami_bledow)then
		if(czy_ma_liczyc_zgodnosc_kategorii)then
			local nazwy_modul=require("Module:Nazwy");
			local nazwa_kategorii=(args["aktualna kategoria"])and ('Category:'..args["aktualna kategoria"]) or nil;
			local nazwa_strony_aktualnej=nazwy_modul["NAZWASTRONY"](nazwa_kategorii);
	        local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_kategorii);
	        local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	        if(nazwa_przestrzeni==nazwy_np_modul.Category)then
        		local liczba_kategorii_w_kategorii_aktualnej=mw.site.stats.pagesInCategory(nazwa_strony_aktualnej,"subcats")+(((args["kategoria alternatywna jako podkategoria"])and(args["kategoria alternatywna jako podkategoria"]~="")) and -1 or 0);
        		local liczba_kategorii_w_kategorii_alternatywnej=(args["kategoria alternatywna"])and mw.site.stats.pagesInCategory(args["kategoria alternatywna"],"subcats") or 0;
				if(liczba_kategorii_w_korzystanej_kategorii~=liczba_kategorii_w_kategorii_aktualnej+liczba_kategorii_w_kategorii_alternatywnej)then
					parametry_modul.DodajElementDoZbioru(tabela_kategorii,"[["..Category..":Szablon łączna liczba stron w kategoriach - niezgodność kategorii]]");
				end;	
			end;
		end;
	end;
	return liczba_stron_w_kategorii..table.concat(tabela_kategorii);
end;
p["NazwaSortowaniaDomyślnaStrony"]=function(frame)
	return p:NazwaSortowaniaDomyslna(frame);
end;
function p.NazwaSortowaniaDomyslna(self,frame)
	if(self.nazwa_sortowania)then return self.nazwa_sortowania;end;
	local pudelko_modul=require("Module:Pudełko");
	local nazwa_sortowania=pudelko_modul["Nazwa jednostki 2"](frame);
	local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame);
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local category=nazwy_np_modul.Category;
	if(nazwa_przestrzeni_nazw==category)then nazwa_sortowania,_=mw.ustring.gsub(nazwa_sortowania,"^Książka:(.*)$","%1");end;
	nazwa_sortowania,_=mw.ustring.gsub(nazwa_sortowania,"^.*/([^/]+)$","%1");
	self.nazwa_sortowania=nazwa_sortowania;
    return nazwa_sortowania;
end;
function p.CzyKategoriaDlaKategorii(frame)
	local pudelko_modul=require("Module:Pudełko");
	local nazwa_przestrzeni=pudelko_modul["Nazwa przestrzeni nazw 2"](frame);
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	if(nazwa_przestrzeni==nazwy_np_modul.Category)then
		local nazwa_strony=pudelko_modul["Nazwa jednostki 2"](frame);
		local kategorie_dla_kategorii="Kategorie dla kategorii";
		if(nazwa_strony==kategorie_dla_kategorii)then return nil;end;
		local techniczne_modul=require("Module:Techniczne");
		local liczba_stron_istniejacych,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory("Category:"..kategorie_dla_kategorii);
		if(liczba_stron_istniejacych==0)then return nil;end;
		local liczba_stron_w_kategorii_aktualnej=mw.site.stats.pagesInCategory(nazwa_strony,"pages");
		local liczba_podkategorii_w_kategorii_aktualnej=mw.site.stats.pagesInCategory(nazwa_strony,"subcats");
		local liczba_plikow_w_kategorii_aktualnej=mw.site.stats.pagesInCategory(nazwa_strony,"pages");
		if((liczba_stron_w_kategorii_aktualnej>0)or (liczba_plikow_w_kategorii_aktualnej>0)or(liczba_podkategorii_w_kategorii_aktualnej==0))then return nil;end;
		return "tak";
	end;
	return nil;
end;
function p.KategoriaDlaKategorii(frame)
    local czy_kategoria_dla_kategorii=p.CzyKategoriaDlaKategorii(frame)
    if(czy_kategoria_dla_kategorii)then
		local nazwa_sortowania=p:NazwaSortowaniaDomyslna(frame);
		local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
		local Category=nazwy_np_modul.Category;
		return "[["..Category..":Kategorie dla kategorii|"..nazwa_sortowania.."]]";
	end;
	return "";
end;
function p.Kategoria(frame)
	local parametry_modul=require("Module:Parametry");
	local m=(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))and frame or frame:getParent();
	local args=frame and ((frame.getParent and m or frame).args or frame) or {};
	
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local Category=nazwy_np_modul.Category;
	local parametry_modul=require("Module:Parametry");
	local z_kategoriami_bledow=not parametry_modul.CzyTak(args["bez kategorii"]);
	local kategoria2=args[1] and parametry_modul["Odstępy"]{[1]=args[1],[2]="tak",};
	local kategoria=parametry_modul.CzyTak(kategoria2) and mw.getContentLanguage():ucfirst(kategoria2) or nil;
	local nazwa_sortowania=args[2] and parametry_modul["Odstępy"]{[1]=args[2],[2]="tak",};
	local czy_nazwa_sortowania_aut=parametry_modul.CzyTak(args["nie sortuj nazwą"] or args["n"]);
	local czy_nie_kategorie_dla_kategorii=parametry_modul.CzyTak(args["nie kategorie dla kategorii"] or args["nk"]);
	local kategorie_dla_kategorii="Kategorie dla kategorii";
	if((kategoria)and(kategoria~="")and(nazwa_sortowania)and(nazwa_sortowania~=""))then
		local sortuj=args["sortuj spacją"] or args["s"];
		local techniczne_modul=require("Module:Techniczne");
		local liczba_istniejacych_stron,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..kategoria);
		local dotatkowekategorie="";
		if(z_kategoriami_bledow)then
			if(liczba_istniejacych_stron==0)then
	            local nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
				if(tabela_uchwytow_stron[1])then
					dotatkowekategorie="[["..Category..":Szablon kategoria - nieistniejąca kategoria|"..nazwa_sortowania_aut.."]]";
				else
					dotatkowekategorie="[["..Category..":Szablon kategoria - niepoprawna kategoria|"..nazwa_sortowania_aut.."]]";
				end;
			end;
		end;
		return ((tabela_uchwytow_stron[1])and "[["..Category..":"..kategoria..((not czy_nazwa_sortowania_aut) and ("|"..((parametry_modul.CzyTak(sortuj))and " " or nazwa_sortowania)) or "").."]]" or "")..dotatkowekategorie..((czy_nie_kategorie_dla_kategorii or (kategoria==kategorie_dla_kategorii)) and "" or p.KategoriaDlaKategorii(frame));
	elseif((kategoria)and(kategoria~="")and((not nazwa_sortowania)or(nazwa_sortowania=="")))then
		local sortuj=args["sortuj spacją"] or args["s"];
		local techniczne_modul=require("Module:Techniczne");
		local liczba_istniejacych_stron,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..kategoria);
		local dotatkowekategorie="";
		local nazwa_sortowania_aut;
		if(z_kategoriami_bledow)then
			if(liczba_istniejacych_stron==0)then
				nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
				if(tabela_uchwytow_stron[1])then
					dotatkowekategorie="[["..Category..":Szablon kategoria - nieistniejąca kategoria|"..nazwa_sortowania_aut.."]]";
				else
					dotatkowekategorie="[["..Category..":Szablon kategoria - niepoprawna kategoria|"..nazwa_sortowania_aut.."]]";
				end;
			end;
		end;
		if(parametry_modul.CzyTak(sortuj))then
			return ((tabela_uchwytow_stron[1])and "[["..Category..":"..kategoria.."| ]]" or "")..dotatkowekategorie..((czy_nie_kategorie_dla_kategorii or (kategoria==kategorie_dla_kategorii)) and "" or p.KategoriaDlaKategorii(frame));
		else
			nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
			return ((tabela_uchwytow_stron[1])and "[["..Category..":"..kategoria..(((not czy_nazwa_sortowania_aut) and (not nazwa_sortowania)) and ("|"..nazwa_sortowania_aut) or "").."]]" or "")..dotatkowekategorie..((czy_nie_kategorie_dla_kategorii or (kategoria==kategorie_dla_kategorii)) and "" or p.KategoriaDlaKategorii(frame));
		end;
	end;
	local title=mw.title.getCurrentTitle();
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
	local category=nazwy_np_modul.Category;
	if(title.nsText==category)then nazwa_sortowania,_=mw.ustring.gsub(title.text,"^Książka:(.*)$","%1");else nazwa_sortowania=title.text;end;
	--nazwa_sortowania,_=mw.ustring.gsub(nazwa_sortowania,"^.*/([^/]+)$","%1");
	local nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
	return "[["..Category..":Szablon kategoria - nazwa kategorii pusta lub niepodana|"..nazwa_sortowania_aut.."]]"..((czy_nie_kategorie_dla_kategorii or (kategoria==kategorie_dla_kategorii)) and "" or p.KategoriaDlaKategorii(frame));
end;
function p.Kategorie(frame)
	local parametry_modul=require("Module:Parametry");
	local m=(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))and frame or frame:getParent();
	local args=frame and ((frame.getParent and m or frame).args or frame) or {};
	
	local tablica_kategorii_bledow={};
	local tablica_kategorii={};
	local tablica_czy_kategorie_sie_powtarzaja={};
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local Category=nazwy_np_modul.Category;
	local parametry_modul=require("Module:Parametry");
	local z_kategoriami_bledow=not parametry_modul.CzyTak(args["bez kategorii"]);
	local czy_sa_argumenty_ponumerowane=parametry_modul["CzySąElementyNienazwaneTablicy"](args);
	if(not czy_sa_argumenty_ponumerowane)then 
		if(z_kategoriami_bledow)then
			local nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
			return "[["..Category..":Szablon kategorie - nie podano nazw kategorii|"..nazwa_sortowania_aut.."]]"..(czy_nie_kategorie_dla_kategorii and "" or p.KategoriaDlaKategorii(frame));
		else
			return (czy_nie_kategorie_dla_kategorii and "" or p.KategoriaDlaKategorii(frame));
		end;
	end;
	local klucz_sortowania=args["klucz sortowania"] or args["k"];
	local czy_klucz_sortowania=parametry_modul.CzyTak(klucz_sortowania);
	local czy_nie_kategorie_dla_kategorii=parametry_modul.CzyTak(args["nie kategorie dla kategorii"] or args["nk"]);
	local kategorie_dla_kategorii="Kategorie dla kategorii";
	local techniczne_modul=require("Module:Techniczne");
	local nazwa_sortowania_aut;
	for licznik,wartosc_argumentu in pairs(args)do
		if(type(licznik)=="number")then
	   		local kategoria=wartosc_argumentu and parametry_modul["Odstępy"]{[1]=wartosc_argumentu,[2]="tak",};
	   		if((kategoria)and(kategoria~=""))then
	   			local _i=args["_"..licznik] or args["_i"];
				local nazwa_sortowania=_i and parametry_modul["Odstępy"]{[1]=_i,[2]="tak",};
				local sortuj=(not czy_klucz_sortowania) and (parametry_modul.CzyTak(args["sortuj spacją "..licznik] or args["s"..licznik] or args["sortuj spacją"] or args["s"])) or nil;
				local czy_nazwa_sortowania_aut=parametry_modul.CzyTak(args["nie sortuj nazwą "..licznik] or args["n"..licznik] or args["nie sortuj nazwą"] or args["n"]);
				if((nazwa_sortowania)and(nazwa_sortowania~=""))then
					local liczba_istniejacych_stron,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..kategoria);
					if(z_kategoriami_bledow)then
						if(liczba_istniejacych_stron==0)then
							nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
							if(tabela_uchwytow_stron[1])then
			    				parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - nieistniejące kategorie|"..nazwa_sortowania_aut.."]]");
			    			else
			    				parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - niepoprawne kategorie|"..nazwa_sortowania_aut.."]]");
			    			end;
			    		end;
					end;
					local czy_sie_nie_powtarza=true;
					kategoria=mw.getContentLanguage():ucfirst(kategoria);
					if(tablica_czy_kategorie_sie_powtarzaja[kategoria])then
				    	if(z_kategoriami_bledow)then	
							nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
							parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - powtarzające się kategorie|"..nazwa_sortowania_aut.."]]");
						end;
						czy_sie_nie_powtarza=false;
					end;
					if((czy_sie_nie_powtarza)and (tabela_uchwytow_stron[1]))then 
						tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria..((not czy_klucz_sortowania)and("|"..((parametry_modul.CzyTak(sortuj))and " " or nazwa_sortowania)) or "").."]]";
					end;
					tablica_czy_kategorie_sie_powtarzaja[kategoria]=true;
				elseif(((not nazwa_sortowania)or(nazwa_sortowania=="")))then
					local liczba_stron_istniejacych,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..kategoria);
					if(z_kategoriami_bledow)then
						if(liczba_stron_istniejacych==0)then
							nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
							if(tabela_uchwytow_stron[1])then
								parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - nieistniejące kategorie|"..nazwa_sortowania_aut.."]]");
							else
								parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - niepoprawne kategorie|"..nazwa_sortowania_aut.."]]");
							end;
						end;
					end;
					local czy_sie_nie_powtarza=true;
					kategoria=mw.getContentLanguage():ucfirst(kategoria);
					if(tablica_czy_kategorie_sie_powtarzaja[kategoria])then
						if(z_kategoriami_bledow)then
							nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
							parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - powtarzające się kategorie|"..nazwa_sortowania_aut.."]]");
						end;
						czy_sie_nie_powtarza=false;
					end;
					tablica_czy_kategorie_sie_powtarzaja[kategoria]=true;
					if((czy_sie_nie_powtarza)and (tabela_uchwytow_stron[1]))then
						if(sortuj)then
							tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria.."| ]]";
						else
							nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
							tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria..(((not czy_nazwa_sortowania_aut) and (not czy_klucz_sortowania)) and ("|"..((sortuj)and " " or nazwa_sortowania_aut)) or "").."]]";
						end;
					end;
				end;
	   		elseif((kategoria)and(kategoria==""))then
				nazwa_sortowania_aut=p:NazwaSortowaniaDomyslna(frame);
				parametry_modul.DodajElementDoZbioru(tablica_kategorii_bledow,"[["..Category..":Szablon kategorie - puste kategorie|"..nazwa_sortowania_aut.."]]");
			end;
		end;
	end;
	local lancuch_kategorii=table.concat(tablica_kategorii,"")..table.concat(tablica_kategorii_bledow);
	if(lancuch_kategorii~="")then
		if(czy_klucz_sortowania)then
			klucz_sortowania=parametry_modul["Odstępy"]{[1]=klucz_sortowania,[2]="tak",};
			lancuch_kategorii=lancuch_kategorii..m:callParserFunction("DEFAULTSORT",klucz_sortowania);
		end;
	end;
	return lancuch_kategorii..((czy_nie_kategorie_dla_kategorii or (tablica_czy_kategorie_sie_powtarzaja[kategorie_dla_kategorii])) and "" or p.KategoriaDlaKategorii(frame));
end;
return p;