Moduł:Parametry
Wygląd
|
Zobacz podstrony tego modułu.
|
local p={};
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)
local liczba_elementow_ponumerowanych_w_tablicy=0;
local czy_puste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
for _1,_2 in ipairs(tabela)do
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end;
end;
end;
return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)
local parametry_modul=require("Module:Parametry");
return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]);
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac,mnoga)
local czy_puste_wliczac=p.CzyTak(wliczac);
local czy_mnoga=p.CzyTak(mnoga);
local liczba_elementow_nienazwanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1;
if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end;
end;
end;
end;
return liczba_elementow_nienazwanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"])
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)
local czy_puste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_w_tablicy=0;
local techniczne_modul=require("Module:Techniczne");
local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$";
for _1,_2 in pairs(tabela)do
local string_liczba=tonumber(_1) or nil;
local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0));
local zmienna=czy_liczba and przedrostek.._1 or nil;
local element=(czy_liczba and tabela[zmienna] or nil)
or (czy_liczba
and tabela[_1]
or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil)
);
if(element)then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(element~="")))then
liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
end;
end;
end;
return liczba_elementow_w_tablicy;
end;
function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy=0;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0;
end;
function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame)
return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
local liczba_elementow_ponumerowanych_w_tablicy;
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
if(not liczba_elementow_ponumerowanych_w_tablicy)then
liczba_elementow_ponumerowanych_w_tablicy=_1;
else
liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
end;
end;
end;
end;
return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)
local liczba_maksimum=0;
local liczba_minimum;
for nazwa_parametru,wartosc_parametru in pairs(tabela)do
local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..nazwa_parametru_okreslona.."%s(%d+)$")
if(liczba_z_parametru)then
local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1);
liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1);
liczba_maksimum=math.max(liczba_maksimum,liczba);
if(not liczba_minimum)then
liczba_minimum=liczba;
else
liczba_minimum=math.min(liczba_minimum,liczba);
end;
elseif(nazwa_parametru_okreslona==nazwa_parametru)then
liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1));
if(not liczba_minimum)then
liczba_minimum=czy_od_zera and 0 or 1;
else
liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1);
end;
end;
end;
if(not liczba_minimum)then liczba_minimum=1;end;
return liczba_minimum,liczba_maksimum;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
for _1,_2 in ipairs(tabela)do
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)=="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if(type(_1)~="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
end;
return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_sa_elementy_tablicy)then return "tak";end;
return;
end;
p["CzySąElementyTablicy"]=function(tabela,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
for _1,_2 in pairs(tabela)do
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
return true;
end;
end;
return false;
end;
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]);
if(czy_jest_taki_element)then return "tak";end;
end;
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)
local czy_puste_wliczac=p.CzyTak(wliczac);
local i=1;
local czy=false;
for _1,_2 in pairs(args)do
if(type(_1)=="number")then
if((not czy_puste_wliczac)or((czy_puste_wliczac)and(p.CzyTak(_2))))then
if(_1==1)then czy=true;end;
if(i>1)then
return false;
else
i=i+1;
end;
end;
end;
end;
if((czy)or(i==1))then return true;end;
return false;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
local args2={};
local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"];
local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"];
local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"];
local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"];
local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"];
for name,value in pairs(args.tabela)do
local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko;
local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil;
if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end;
local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2;
if(wzor2)then value=mw.ustring.match(value,wzor2);end;
if(value)then
local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko;
local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko;
args2[name]=(przedrostek or '')..value..(przyrostek or '');
end;
end;
return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_puste_wliczac_1=p.CzyTak(wliczac_1);
local czy_puste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka2={};
for name,value in pairs(tabelka)do
if(((not czy_puste_wliczac_1)or((czy_puste_wliczac_1)and(p.CzyTak(name))))and((not czy_puste_wliczac_2)or((czy_puste_wliczac_2)and(p.CzyTak(value)))))then
tabelka2[name]=value;
end;
end;
return tabelka2;
end;
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)
local czy_puste_wliczac_1=p.CzyTak(wliczac_1);
local czy_puste_wliczac_2=p.CzyTak(wliczac_2);
local tabelka3={};
for name,value in pairs(tabelka)do
if(((not czy_puste_wliczac_1)or((czy_puste_wliczac_1)and(p.CzyTak(name))))and((not czy_puste_wliczac_2)or((czy_puste_wliczac_2)and(p.CzyTak(value)))))then
local czy=p.CzyJestTakiKluczTabeli(tabelka2,name);
if(not czy)then
tabelka3[name]=value;
end;
end;
end;
return tabelka3;
end;
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)
local czy_puste_wliczac_1=p.CzyTak(wliczac_1);
local czy_puste_wliczac_2=p.CzyTak(wliczac_2);
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
local szablonowe_modul=require("Module:Szablonowe");
local kopiuj_metatable=function(value,funkcja,funkcja2)
local __metatabelka=getmetatable(value);
if(__metatabelka)then
if(__metatabelka.KopiujMetaTabela)then
__metatabelka.KopiujMetaTabela(value,funkcja,funkcja2)
else
funkcja(value,true);
end;
else
funkcja(value,true);
end;
end;
local function kopiuj(tabelka,tabelka_nowa)
local tabelka2=tabelka_nowa or {};
for name,value in pairs(tabelka)do
if(((not czy_puste_wliczac_1)or((czy_puste_wliczac_1)and(p.CzyTak(name))))and((not czy_puste_wliczac_2)or((czy_puste_wliczac_2)and(p.CzyTak(value)))))then
if(type(value)=="table")then
kopiuj_metatable(value,function(value,jak)
if(jak)then
tabelka2[name]=kopiuj(value);
else
tabelka2[name]=value;
end;
end,kopiuj);
else
tabelka2[name]=value;
end;
end;
end;
return tabelka2;
end;
local tabela_kopiuj={};
kopiuj_metatable(tabelka,function(value,jak)
if(jak)then
tabela_kopiuj=kopiuj(value);
else
tabela_kopiuj=value;
end;
end,kopiuj);
return tabela_kopiuj;
end;
p["NazwanyLiczbą"] = function(frame)
local pf=frame:getParent()
local numer_parametru=frame.args[1]
if(numer_parametru)then
numer_parametru=tonumber(numer_parametru);
if(numer_parametru and pf.args[numer_parametru])then
return "tak"
end
end;
return;
end
p["NazwanyCiągiem"] = function (frame)
local pf=frame:getParent()
local klucz_parametru=frame.args[1]
if(klucz_parametru)then
local klucz_parametru_do_liczby=tonumber(klucz_parametru);
if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then
return "tak"
end
end;
return;
end;
function p.Nazwane(frame)
local pf = frame:getParent()
for _, nazwa_parametru in ipairs(frame.args)do
local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)]
if(wartosc_parametru_nazwanego)then return "tak" end
end
return;
end
function p.Nienazwane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for name, wartosc_parametru2 in pairs(pf.args) do
if(type(name)=="number")then
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end;
end
end
return;
end
function p.Numerowane(frame)
local pf = frame:getParent()
for _, wartosc_parametru in ipairs(frame.args)do
wartosc_parametru=mw.text.trim(wartosc_parametru)
for _, wartosc_parametru2 in ipairs(pf.args) do
if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then
return "tak"
end
end
end
return;
end
p["Odstępy"] = function(frame)
local PobierzParametr=p.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local czy=PobierzParametr(2) or PobierzParametr("wewnątrz");
local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik");
local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje");
if(not p.CzyTak(nazwa))then return nazwa;end;
local m_=(p.CzyTak(odstep_spacje) and "" or "_");
nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+","");
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","")
if(p.CzyTak(czy))then
nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " "));
end;
return nazwa;
end;
function p.DodajElementDoZbioru(tabela,wartosc)
if(wartosc==nil)then return; end;
if(type(tabela)~="table")then return;end;
for _,element_tabeli in pairs(tabela)do
if(element_tabeli==wartosc)then
return false;
end;
end;
table.insert(tabela,wartosc);
return true;
end;
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for _, element_tabeli in ipairs(tabela)do
if(element_tabeli==wartosc)then
return true;
end;
end;
return false;
end;
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)
if(wartosc==nil)then return;end;
if(type(tabela)~="table")then return;end;
for name,value in pairs(tabela)do
if(type(name)=="number")then
if(value==wartosc)then
return true;
end;
end;
end;
return false;
end;
function p.CzyJestTakiKluczTabeli(tabela,klucz)
if(klucz==nil)then return;end;
if(type(tabela)~="table")then return;end;
local wartosc=tabela[klucz];
if(wartosc~=nil)then return true;end;
return false;
end;
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)
if((klucz==nil)or(wartosc==nil))then return;end;
if(type(tabela)~="table")then return;end;
for __klucz, __wartosc in pairs(tabela)do
if((__klucz==klucz)and(__wartosc==wartosc))then
return true;
end;
end;
return false;
end;
p["ŁączDwieTabele"] = function (tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2))
and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1))
and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,}
or tabelka2)
or tabelka1;
end;
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2)
local parametry_modul=require("Module:Parametry");
return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2;
end;
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
p["ŁączTabele"] = function(args,args2)
local tabela={};
local par1=(args2.CzyPairsTablic)and pairs or ipairs;
local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false;
local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs;
local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false;
local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false;
local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false;
local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false;
for licznik, args_tabeli in par1(args)do
if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then
for name,value in par2(args_tabeli)do
if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then
if(nazwij_elementy_numerowane)then
if(not tabela[name])then tabela[name]=value;end;
else
table.insert(tabela,value);
end;
elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then
if(not tabela[name])then tabela[name]=value;end;
end;
end;
end;
end;
return tabela;
end;
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)
if(not tabelka_1)then return nil;end;
if(not tabelka_2)then return tabelka_1;end;
for name,_ in pairs(tabelka_1)do
if(tabelka_2[name]~=nil)then
tabelka_1[name]=nil;
end;
end;
return tabelka_1;
end;
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)
local tabela_poczatkowa=args[1];
local tabela={};
local lens=#args;
for name,value in pairs(tabela_poczatkowa)do
local yes=false;
for i=2,lens,1 do
if(args[i][name]~=nil)then
yes=true;
break;
end;
end;
if(not yes)then
tabela[name]=value;
end;
end;
return tabela;
end;
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
function p.TypeNil(zmienna)
return (zmienna==nil);
end;
local function CzyTakSilnik(args,funkcja)
local parametry_modul=require("Module:Parametry");
local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1];
local argsfun;
if(p.CzyTak(args[2]))then
for name,value in pairs(args)do
local typen=(type(name)=="number");
if(((typen)and((name~=1)and(name~=2)))or(not typen))then
if(not argsfun)then argsfun={};end;
argsfun[(typen and name>2) and (name-2) or name]=value;
end;
end;
else
parametr=tonumber(parametr) or parametr;
if(type(parametr)=="string")then
local parametr2=parametry_modul["Odstępy"](parametr);
if(parametr2=="true")then
parametr=true;
elseif(parametr2=="false")then
parametr=false;
elseif(parametr2=="nil")then
parametr=nil;
else
parametr=tonumber(parametr2) or parametr;
end;
end;
end;
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
end;
p["CzyTakCiąg"]=function(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local ciag=PobierzParametr("ciąg") or PobierzParametr(1);
local parametry=PobierzParametr("parametry") or PobierzParametr(2);
local parametry_modul=require("Module:Parametry");
return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTakCiąg");
end;
end;
function p.CzyTak(...)
local frame_parametry={...};
local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1];
local czy_table=p.TypeTable(frame);
if((czy_table and (not frame.getParent)) or (not czy_table))then
local PobierzParametr=p.PobierzParametr(frame);
local zmienna;local parametry;
if(czy_table)then
local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1);
zmienna=zmienna_temp or frame;
parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil;
else
zmienna=frame;
parametry=nil;
end;
if(zmienna~=nil)then
if(p.TypeString(zmienna))then
if(zmienna~="")then
return "tak";
else
return nil;
end;
elseif(p.TypeNumber(zmienna))then
if(zmienna~=0)then
return "tak";
else
return nil;
end;
elseif(p.TypeBoolean(zmienna))then
return (zmienna and "tak" or nil);
elseif(p.TypeTable(zmienna))then
local parametry_modul=require("Module:Parametry");
return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil);
elseif(p.TypeFunction(zmienna))then
return (zmienna(parametry) and "tak" or nil);
else
return nil;
end;
else
return nil;
end;
else
local args=p.PobierzArgsParametry(frame);
return CzyTakSilnik(args,"CzyTak");
end;
end;
function p.PobierzFrameEwentualnieParent(frame)
return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame);
end;
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)
local TempFunc=function(frame)
local pf=p.PobierzFrameEwentualnieParent(frame);
local args=pf.args;
if(p.TypeTable(args))then
return args;
else
return nil;
end;
end;
if(not p.TypeNil(frame))then
return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame);
else
return {};
end;
end;
function p.PobierzParametryRamki(frame)
local TempFun1=function(tablica)
return function(nazwa)
return tablica[nazwa];
end;
end;
local TempFun2=function(wartosc)
local tak=true;
return function(nazwa)
if(tak)then
tak=false;
return wartosc;
end;
return nil;
end;
end;
local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame);
return function(nazwa)
return tablica_parametrow_ramki(nazwa);
end;
end;
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)
local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame;
return function(nazwa)
local wartosc=tablica_parametrow_funkcji[nazwa];
return wartosc;
end;
end;
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
local __pobierz_parametr_table_args=nil;
if(not p.TypeNil(frame))then
if(p.TypeTable(frame))then
local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent);
if((not tak_frame_lub_parent)or(not frame.getParent))then
local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame);
__pobierz_parametr_table_args=function(nazwa)
return __pobierz_parametr_table_args_temp[nazwa or 1],1;
end;
elseif(tak_frame_lub_parent)then
local pf=(frame.getParent)and frame:getParent() or nil;
__pobierz_parametr_table_args=function(nazwa)
local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil);
return wartosc,2;
end;
end;
else
local tak=true;
__pobierz_parametr_table_args=function(nazwa)
if(tak)then
tak=false;
return frame,0;
end;
return nil,0;
end;
end;
else
__pobierz_parametr_table_args=function(nazwa)
return nil,0;
end;
end;
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
function p.And(frame)
local czy="tak";
local parametry_modul=require("Module:Parametry");
local wartosc_uzyskana=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy and parametry_modul["CzyTakCiąg"](wartosc);
if(not czy)then return nil;end;
wartosc_uzyskana=wartosc;
end;
return czy and wartosc_uzyskana or nil;
end;
function p.Or(frame)
local czy=nil;
for _,wartosc in ipairs(frame.args)do
czy=czy or p["CzyTakCiąg"](wartosc);
if(czy)then return wartosc;end;
end;
return nil;
end;
function p.Not(frame)
local parametry_modul=require("Module:Parametry");
return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil;
end;
function p.Mniejszy(frame)
local wyraz1=tonumber(frame.args[1]) or 0;
local wyraz2=tonumber(frame.args[2]) or 0;
if(wyraz1<wyraz2)then
return "tak";
end;
return;
end;
function p.IlePodano(frame)
local args=frame.args;
local args2=frame:getParent().args;
local licznik=0;
for _,name in pairs(args)do
if(args2[name])then
licznik=licznik+1;
end;
end;
return licznik;
end;
p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={};
function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)
local html_modul=require("Module:Html");
klucz=html_modul.DecodeKoduHTMLZnaku(klucz);
klucz=p["Odstępy"]{[1]=klucz,[2]="tak",};
klucz=mw.ustring.lower(klucz);
return rawget(t,klucz);
end;
function p.IteratorPoNumerowanychElementachTablicy(t)
local i=1;
return function()
local v=t[i];
if(v~=nil)then i=i+1;end;
return v;
end;
end;
p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,funkcja)
local keys={};
for name,_ in next,tabela do
table.insert(keys,name);
end;
table.sort(keys,funkcja);
return function(tablica,klucz)
if(klucz==nil)then return keys[1];end;
for k,_ in ipairs(keys)do
if(keys[k]==klucz)then
return keys[k+1];
end;
end;
end;
end;
function p.Max(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.max(parametr1,parametr2);
end;
function p.Min(...)
local frame={...};
local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame);
local parametr1=tonumber(PobierzElement(1));
local parametr2=tonumber(PobierzElement(2));
return math.min(parametr1,parametr2);
end;
return p;