Moduł:Techniczne
Przejdź do nawigacji
Przejdź do wyszukiwania
Zobacz podstrony tego modułu.
|
local p={};
p["ParsujWywołanieSzablonu"] = function(wywolanie_szablonu)
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-}}$");
if(not wywolanie_bez_parametrow)then
local parametry_szablonu={};
parametry_szablonu[0]=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^{}|]-)%s*|.-}}$"));
if(parametry_szablonu[0])then
local parametry_modul=require("Module:Parametry");
parametry_szablonu[0]=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=parametry_szablonu[0],[2]="tak",});
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"{{[^{}|]*|([^{}]*)}}");
return ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu);
else return nil;end;
else
local parametry_szablonu={};
parametry_szablonu[0]=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^{}|]-)%s*}}$"));
if(parametry_szablonu[0])then
local parametry_modul=require("Module:Parametry");
parametry_szablonu[0]=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=parametry_szablonu[0],[2]="tak",});
return parametry_szablonu;
else return nil;end;
end;
end;
function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu);
end;
return nil;
end;
function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=mw.text.trim(kawalek_wywolania_element_nienazwany);
return tworzona_tabela;
else
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*=%s*([^|{}]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
p["PokażSzablon"]=function(szablon, args)
local result = {}
local flags = {}
table.insert(result, mw.text.nowiki("{{"))
if mw.isSubsting() then
table.insert(result, "subst:")
end
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|")
table.insert(result, tostring(k))
table.insert(result, "=")
table.insert(result, mw.text.nowiki(v))
else
table.insert(result, "|")
table.insert(result, mw.text.nowiki(v))
end
end
end
table.insert(result, mw.text.nowiki("}}"))
return table.concat(result)
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa,_=PobierzParametr();
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwa;
else
return nazwa;
end;
end;
p["Pierwszy niepusty"]= function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local parametry_modul=require("Module:Parametry");
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNumerowanychZPrzedrostkiemLubNieTablicy"](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;
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_strony0=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony2=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local patternopis=mw.ustring.gsub(pelna_nazwa_strony0,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony2,"^"..patternopis.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony2);
local przetworzona_nazwa_strony,_=mw.ustring.gsub(nazwa_strony,"(%%)","%%%%");
przetworzona_nazwa_strony,_=mw.ustring.gsub(przetworzona_nazwa_strony,"/%s*$","");
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_strony2;
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_]+");
return wzor;
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 uchwyt_przestrzeni_nazw;
if(mw.ustring.match(nazwa_przestrzeni_nazw_lub_jego_identyfikator,"^%s*[%+%-]?%d+%s*$"))then
local identyfikator,_=mw.ustring.match(nazwa_przestrzeni_nazw_lub_jego_identyfikator,"^%s*([%+%-]?%d+)%s*$");
uchwyt_przestrzeni_nazw=mw.site.namespaces[tonumber(mw.text.trim(identyfikator))];
else
uchwyt_przestrzeni_nazw=mw.site.namespaces[nazwa_przestrzeni_nazw_lub_jego_identyfikator];
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
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_]+");
return wzor;
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 title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
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 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);
local nko=html_modul.KodHTMLZnaku("{");
local nkz=html_modul.KodHTMLZnaku("}");
local k=html_modul.KodHTMLZnaku("|");
local r=html_modul.KodHTMLZnaku("=");
local s=1;
repeat
repeat
text=mw.ustring.gsub(text,"{{{([^{}|]+)|([^{}]*)}}}",nko..nko..nko.."%1"..k.."%2"..nkz..nkz..nkz);
text=mw.ustring.gsub(text,"{{{([^{}|]+)}}}",nko..nko..nko.."%1"..nkz..nkz..nkz);
until not(mw.ustring.match(text,"{{{([^{}|]+)|([^{}]*)}}}") or mw.ustring.match(text,"{{{([^{}|]+)}}}"));
text=mw.ustring.gsub(text,"{{([^{}]+)}}","&#@p"..s..";%1&#@k"..s..";");
repeat
text=mw.ustring.gsub(text,"&#@p"..s..";([^|]-)|(.-)&#@k"..s..";","&#@p"..s..";%1&#@s"..s..";%2&#@k"..s..";");
until not mw.ustring.match(text,"&#@p"..s..";([^|]-)|(.-)&#@k"..s..";");
s=s+1;
until not (mw.ustring.match(text,"{{[^{}]+}}") or (mw.ustring.match(text,"{{{([^{}|]+)|([^{}]*)}}}") or mw.ustring.match(text,"{{{([^{}|]+)}}}")));
for w=1,s-1,1 do
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";[^#{}|].-)&#@s"..w..";(.-".."&#@k"..w..";)","%1|%2");
until not mw.ustring.match(text,"(&#@p"..w..";[^#{}|].-)&#@s"..w..";(.-".."&#@k"..w..";)");
function ZmienneTekstowe(s)
local tab_zmienne={
["NAMESPACE"]=true,
["PAGENAME"]=true,
}
local czy_te_zmienne=tab_zmienne[s];
if(not czy_te_zmienne)then
return "{{s|"..s.."}}";
else
return nko..nko..s..nkz..nkz;
end;
end;
text=mw.ustring.gsub(text,"&#@p"..w..";([^#{}|].-)".."&#@k"..w..";",ZmienneTekstowe);
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";#invoke:.-)&#@s"..w..";(.-".."&#@k"..w..";)","%1|%2");
until not mw.ustring.match(text,"(&#@p"..w..";#invoke:.-)&#@s"..w..";(.-".."&#@k"..w..";)");
text=mw.ustring.gsub(text,"&#@p"..w..";#invoke:(.-)".."&#@k"..w..";","{{m|%1}}");
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";#%w+:.-)&#@s"..s..";(.-".."&#@k"..w..";)","%1"..k.."%2");
until not mw.ustring.match(text,"(&#@p"..w..";#%w+:.-)&#@s"..s..";(.-".."&#@k"..w..";)")
text=mw.ustring.gsub(text,"&#@p"..w..";(#%w+:.-)".."&#@k"..w..";",nko..nko.."%1"..nkz..nkz);
end;
text=mw.ustring.gsub(text,"=",r)
local mniejszy=html_modul.KodHTMLZnaku("<");
local wiekszy=html_modul.KodHTMLZnaku(">");
text=mw.ustring.gsub(text,"<",mniejszy);
text=mw.ustring.gsub(text,">",wiekszy)
local kwaratowy_lewy=html_modul.KodHTMLZnaku("[");
local kwadratowy_prawy=html_modul.KodHTMLZnaku("]");
local kreska_pionowa=html_modul.KodHTMLZnaku("|");
text=mw.ustring.gsub(text,"%[%[([^%[%]|]*)|([^%[%]]*)%]%]",kwaratowy_lewy..kwaratowy_lewy.."%1"..kreska_pionowa.."%2"..kwadratowy_prawy..kwadratowy_prawy);
text=mw.ustring.gsub(text,"%[%[([^%[%]|]*)%]%]",kwaratowy_lewy..kwaratowy_lewy.."%1"..kwadratowy_prawy..kwadratowy_prawy);
text=mw.ustring.gsub(text,"\n#","\n"..hash);
text=mw.ustring.gsub(text,"^#",hash);
text=frame:getParent():preprocess(text);
return text;
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";
local title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
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ład: 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: 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");
end;
return tekst;
end;
p["RozwiniętyWikikodStrony"]=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 PobierzParametr(1);
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
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,};
if czy_wyspecjalizowana then
bezkluczy["wyspecjalizowana"]=true;
bezkluczy["nie rozwiń"]=true;
end;
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};
local czy2=(czy and frame.args);
text=(czy2 and (not parametry_modul.CzyTak(frame.args["nie rozwiń"])) or (not czy2 and true)) and frame2:preprocess(text) or text;
return text;
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[asgs[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
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"] or "all";
typ=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;
return p;