Moduł:Kategorie
Zobacz podstrony tego modułu.
|
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 szablonowe_modul=require("Module:Szablonowe");
local specjalne_modul=require("Module:Specjalne");
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_kategorii_naprawiona=parametry_modul["Odstępy"]{[1]=nazwa_kategorii,[2]="tak",};
local liczba_stron_istniejacych,tabela_uchwytow_stron=techniczne_modul.PoliczZbiory(Category..":"..nazwa_kategorii_naprawiona);
if(liczba_stron_istniejacych==0)then
if(z_kategoriami_bledow)then
if(tabela_uchwytow_stron[1][1])then
parametry_modul.DodajElementDoZbioru(bledy,"Szablon rekurencyjna łączna liczba stron w kategoriach - nieistniejące kategorie");
else
parametry_modul.DodajElementDoZbioru(bledy,"Szablon rekurencyjna łączna liczba stron w kategoriach - niepoprawne kategorie");
end;
end;
else
local zawartosc_strony=tabela_uchwytow_stron[1][2];
zawartosc_strony=specjalne_modul["UsuńKomentarze"](zawartosc_strony);
local tablica_obiektow_strony_dany_modul={};
local tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(zawartosc_strony,nil,tablica_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local nazwa_szablonu,tabela_modyfikatorow,czy_z_parametrami=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu=="Łączna liczba stron w kategoriach")then
local niepowtarzajace_sie_kategorie=true;
if(zebrane_kategorie[nazwa_kategorii_naprawiona])then
if(z_kategoriami_bledow)then
if(not czy_korzystana_kategoria)then
parametry_modul.DodajElementDoZbioru(bledy,"Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się kategorie");
else
parametry_modul.DodajElementDoZbioru(bledy,"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_kategorii_naprawiona]=true;
local tablica_argumentow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon);
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(nazwa_szablonu=="Rekurencyjna łączna liczba stron w kategoriach")then
local tablica_argumentow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon);
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_kategorii_naprawiona])then
if(z_kategoriami_bledow)then
if(not czy_korzystana_kategoria)then
parametry_modul.DodajElementDoZbioru(bledy,"Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się kategorie");
else
parametry_modul.DodajElementDoZbioru(bledy,"Szablon rekurencyjna łączna liczba stron w kategoriach - powtarzające się parametry");
end;
end;
niepowtarzajace_sie_kategorie=false;
end;
zebrane_kategorie[nazwa_kategorii_naprawiona]=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;
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=parametry_modul.PobierzArgsParametry(frame,true);
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
local tab_parametrow={};
tab_parametrow[1]="Szablon rekurencyjna łączna liczba stron w kategoriach - brak kategorii";
local str_kategoria=p.Kategoria{args=tab_parametrow,};
return "0"..str_kategoria;
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,"Szablon rekurencyjna łączna liczba stron w kategoriach - niezgodność kategorii");
end;
end;
end;
local str_kategorie;
if(parametry_modul["CzySąElementyNumerowaneTablicy"](bledy))then
str_kategorie=p.Kategorie{args=bledy}
else
str_kategorie="";
end;
return liczba_stron_w_kategortiach..str_kategorie;
end;
p["Łączna liczba stron w kategoriach"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
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
local tab_parametrow={};
tab_parametrow[1]="Szablon łączna liczba stron w kategoriach - brak kategorii";
local str_kategoria=p.Kategoria{args=tab_parametrow,};
return "0"..str_kategoria;
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][1])then
parametry_modul.DodajElementDoZbioru(tabela_kategorii,"Szablon łączna liczba stron w kategoriach - nieistniejące kategorie");
else
parametry_modul.DodajElementDoZbioru(tabela_kategorii,"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,"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=0;
if(args["kategoria alternatywna"])then
local iter=mw.text.gsplit(args["kategoria alternatywna"], "|", true );
for kategoria in iter do
liczba_kategorii_w_kategorii_alternatywnej=liczba_kategorii_w_kategorii_alternatywnej+mw.site.stats.pagesInCategory(mw.text.trim(kategoria),"subcats");
end;
end;
if(liczba_kategorii_w_korzystanej_kategorii~=liczba_kategorii_w_kategorii_aktualnej+liczba_kategorii_w_kategorii_alternatywnej)then
parametry_modul.DodajElementDoZbioru(tabela_kategorii,"Szablon łączna liczba stron w kategoriach - niezgodność kategorii");
end;
end;
end;
end;
local str_kategorie;
if(parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_kategorii))then
str_kategorie=p.Kategorie{args=tabela_kategorii,};
else
str_kategorie="";
end;
return liczba_stron_w_kategorii..str_kategorie;
end;
function p.DomniemanaNazwaSortowaniaStrony(frame)
return p:DomniemanaNazwaSortowania(frame);
end;
function p.DomniemanaNazwaSortowania(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;
local koncowka=mw.ustring.match(nazwa_sortowania,"%.([^/%.]+)$");
local inne_niz_mediawiki=((nazwa_przestrzeni_nazw==nazwy_np_modul.Template)or(nazwa_przestrzeni_nazw==nazwy_np_modul.Module));
if((inne_niz_mediawiki)or(nazwa_przestrzeni_nazw==nazwy_np_modul.MediaWiki))then
nazwa_sortowania=inne_niz_mediawiki and mw.ustring.gsub(nazwa_sortowania,"^Książka:","") or nazwa_sortowania;
local koncowka=mw.ustring.match(nazwa_sortowania,"%.([^/%.]+)$");
if(koncowka)then
koncowka=mw.getContentLanguage():lc(koncowka);
if((koncowka=="css")or((not inne_niz_mediawiki)and(koncowka=="js")))then
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(/[^/]*%.[^/%.]+)$","");
end;
end;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"[/%s_]+$","");
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,"files");
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:DomniemanaNazwaSortowania(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.PobierzFrameEwentualnieParent(frame);
local args=parametry_modul.PobierzArgsParametry(frame,true);
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";
local function DodawanieKategorii()
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:DomniemanaNazwaSortowania(frame);
if(tabela_uchwytow_stron[1][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(nazwa_sortowania))then
return ((tabela_uchwytow_stron[1][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));
else
if(parametry_modul.CzyTak(sortuj))then
return ((tabela_uchwytow_stron[1][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:DomniemanaNazwaSortowania(frame);
return ((tabela_uchwytow_stron[1][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;
end;
if(parametry_modul.CzyTak(kategoria))then
return DodawanieKategorii();
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:DomniemanaNazwaSortowania(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.PobierzFrameEwentualnieParent(frame);
local args=parametry_modul.PobierzArgsParametry(frame,true);
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:DomniemanaNazwaSortowania(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"]);
local function DodawanieKategorii()
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:DomniemanaNazwaSortowania(frame);
if(tabela_uchwytow_stron[1][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:DomniemanaNazwaSortowania(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][1]))then
if(parametry_modul.CzyTak(nazwa_sortowania))then
tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria..((not czy_klucz_sortowania)and("|"..((parametry_modul.CzyTak(sortuj))and " " or nazwa_sortowania)) or "").."]]";
else
if(parametry_modul.CzyTak(sortuj))then
tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria.."| ]]";
else
nazwa_sortowania_aut=p:DomniemanaNazwaSortowania(frame);
tablica_kategorii[#tablica_kategorii+1]="[["..Category..":"..kategoria..(((not czy_nazwa_sortowania_aut) and (not czy_klucz_sortowania)) and ("|"..nazwa_sortowania_aut) or "").."]]";
end;
end;
end;
tablica_czy_kategorie_sie_powtarzaja[kategoria]=true;
end;
DodawanieKategorii();
elseif((kategoria)and(kategoria==""))then
nazwa_sortowania_aut=p:DomniemanaNazwaSortowania(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=m:callParserFunction("DEFAULTSORT",klucz_sortowania)..lancuch_kategorii;
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;
function p.OpakujKategorie(frame)
local pf=frame:getParent();
local wikikod=frame.args[1] or pf.args[1];
local _;
wikikod,_=mw.ustring.gsub(wikikod,"__NOINDEX__","")
local bez_kategorii=frame.args["bez kategorii wikikodu"] or pf.args["bez kategorii wikikodu"];
local z_nazwa_sortowania=frame.args["z nazwą sortowania"] or pf.args["z nazwą sortowania"];
local category;
local tablica_category={};
local iterator1=mw.ustring.gmatch(wikikod,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*[^%[%]]+%s*%]%]");
local iterator2=mw.ustring.gmatch(wikikod,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*[^%[%]]+%s*%]%]");
local parametry_modul=require("Module:Parametry");
local function Nazwa_kategorii(category)
local nazwa=mw.ustring.match(category,"^%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|]*)")
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
else
nazwa=mw.ustring.match(category,"^%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|]*)");
if(nazwa)then
return parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",};
end;
end;
return nil;
end;
local sprawdz_modul=require("Module:Sprawdź");
local nazwa_sprawdzania_parametrow_szablonu=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
for category in iterator1 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
for category in iterator2 do
local nazwa=Nazwa_kategorii(category);
if((nazwa)and(nazwa~=nazwa_sprawdzania_parametrow_szablonu))then
tablica_category[category]="";
end;
end;
local parametry_modul=require("Module:Parametry");
if(not parametry_modul["CzySąElementyTablicy"](tablica_category))then return wikikod;end;
wikikod=mw.ustring.gsub(wikikod,"(%[%[%s*[^%[%]]+%s*%]%])",tablica_category);
if(parametry_modul.CzyTak(bez_kategorii))then return wikikod;end;
local czy_z_nazwa_sortowania=parametry_modul.CzyTak(z_nazwa_sortowania);
local ulramka=mw.html.create('ul');
ulramka:addClass('okul');
local pionowa=false;
local kategorie_istnieja=frame.args["kategorie istnieją"] or pf.args["kategorie istnieją"];
local czy_kategorie_istnieja=parametry_modul.CzyTak(kategorie_istnieja);
local parametry_modul=require("Module:Parametry")
local i=1;
for nazwa,wartosc in pairs(tablica_category) do
local nazwa2;
local kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
kategoria_istnieje=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]");
if(kategoria_istnieje)then
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]";
else
function tag(nazwa)
local czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
while czy_tag do
nazwa=mw.ustring.gsub(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>","%1");
czy_tag=mw.ustring.match(nazwa,"<[^/][^<>]->([^<>]*)<%s*/[^<>]+>");
end;
return nazwa;
end;
kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Kk][Aa][Tt][Ee][Gg][Oo][Rr][Ii][Aa]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej)
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
else
local kategoria_istnieje,nazwa_sortowania_kategorii_istniejacej=mw.ustring.match(nazwa,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]*)%s*%]%]");
if(kategoria_istnieje)then
nazwa_sortowania_kategorii_istniejacej,_=tag(nazwa_sortowania_kategorii_istniejacej);
nazwa2="[[:Category:"..kategoria_istnieje.."|"..kategoria_istnieje.."]]"..((czy_z_nazwa_sortowania)and ("<sup title=\""..nazwa_sortowania_kategorii_istniejacej.."\">["..i.."]</sup>") or "");i=i+1;
end;
end;
end;
end;
if(((not czy_kategorie_istnieja)or((czy_kategorie_istnieja)and((not kategoria_istnieje)or((kategoria_istnieje~="Szablon kategoria - nieistniejąca kategoria")and(kategoria_istnieje~="Szablon kategorie - nieistniejące kategorie")))))
and((not kategoria_istnieje)or(kategoria_istnieje~=nazwa_sprawdzania_parametrow_szablonu))
)then
nazwa2=parametry_modul["Odstępy"]{[1]=nazwa2,[2]="tak",};
local liramka=mw.html.create('li');
liramka:addClass('okli');
if(pionowa)then
liramka:addClass('oklilo');
pionowa=true;
else
pionowa=true;
end;
liramka:wikitext(nazwa2);
ulramka:node(liramka);
end;
end;
local kategorie="[[Specjalna:Kategorie|Kategorie]]:"
local divramka=mw.html.create('div');
divramka:addClass('oks');
divramka:wikitext(kategorie);
divramka:node(ulramka);
divcalosc=mw.html.create('div');
divcalosc:addClass('ocwkzks');
local divwikikod=mw.html.create('div');
divwikikod:addClass('obkwk');
divwikikod:wikitext(parametry_modul["CzyTakCiąg"](wikikod) and (wikikod) or "");
divcalosc:node(divwikikod);
divcalosc:node(divramka)
return tostring(divcalosc:allDone());
end;
return p;