Moduł:Parametry

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 p.TransformacjaFun(wyrazenie_do_transformacji)
    wyrazenie_do_transformacji=mw.ustring.gsub(wyrazenie_do_transformacji,"([%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
	return wyrazenie_do_transformacji;
end;
p["NazwaKsiążkiFun"] = function(pelna_nazwa_strony,bez_transformacji,funkcja,modul)
	if(type(pelna_nazwa_strony)=="table")then
		local args=pelna_nazwa_strony;
		pelna_nazwa_strony=args["nazwa"];
		bez_transformacji=args["bez transformacji"];
		funkcja=args["funkcja"];
		modul=args["moduł"];
	end;
	local nazwa_ksiazki=require("Module:Nazwy")["NAZWAKSIĄŻKIFUN"](pelna_nazwa_strony);
	local parametry_modul=require("Module:Parametry");
	return (parametry_modul.CzyTak(bez_transformacji,pelna_nazwa_strony))and nazwa_ksiazki or require("Module:"..(parametry_modul.CzyTak(modul)and modul or "Parametry"))[parametry_modul.CzyTak(funkcja)and funkcja or "TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_ksiazki);
end;
p["PełnaNazwaKsiążkiFun"] = function(pelna_nazwa_strony,bez_transformacji,funkcja,modul)
	if(type(pelna_nazwa_strony)=="table")then
		local args=pelna_nazwa_strony;
		pelna_nazwa_strony=args["nazwa"];
		bez_transformacji=args["bez transformacji"];
		funkcja=args["funkcja"];
		modul=args["moduł"];
	end;
	local nazwa_ksiazki=require("Module:Nazwy")["PEŁNANAZWAKSIĄŻKIFUN"](pelna_nazwa_strony);
	local parametry_modul=require("Module:Parametry");
	return (parametry_modul.CzyTak(bez_transformacji,pelna_nazwa_strony))and nazwa_ksiazki or require("Module:"..(parametry_modul.CzyTak(modul)and modul or "Parametry"))[parametry_modul.CzyTak(funkcja)and funkcja or "TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_ksiazki);
end;
p["NazwaArtykułuKsiążkiFun"]=function(pelna_nazwa_strony,bez_transformacji,funkcja,modul)
	if(type(pelna_nazwa_strony)=="table")then
		local args=pelna_nazwa_strony;
		pelna_nazwa_strony=args["nazwa"];
		bez_transformacji=args["bez transformacji"];
		funkcja=args["funkcja"];
		modul=args["moduł"];
	end;
    local nazwa_artykulu=require("Module:Nazwy")["NAZWAARTYKUŁUKSIĄŻKIFUN"](pelna_nazwa_strony);
	local parametry_modul=require("Module:Parametry");
	return (parametry_modul.CzyTak(bez_transformacji,pelna_nazwa_strony))and nazwa_artykulu or require("Module:"..(parametry_modul.CzyTak(modul)and modul or "Parametry"))[parametry_modul.CzyTak(funkcja)and funkcja or "TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
end;
p["PełnaNazwaStronicowejKsiążki"]=function(frame)
	return require("Module:Parametry")["PełnaNazwaStronicowejKsiążkiFun"](frame.args["nazwa"] or frame.args[1],frame.args["bez transformacji"],frame.args["funkcja"],frame.args["moduł"]);
end;
p["PełnaNazwaStronicowejKsiążkiFun"]=function(nazwa_ksiazki,bez_transformacji,funkcja,modul)
	if(type(nazwa_ksiazki)=="table")then
		local args=nazwa_ksiazki;
		nazwa_ksiazki=args["nazwa"];
		bez_transformacji=args["bez transformacji"];
		funkcja=args["funkcja"];
		modul=args["moduł"];
	end;
	local parametry_modul=require("Module:Parametry");
	if(not nazwa_ksiazki)then
		return parametry_modul["PełnaNazwaKsiążkiFun"](nazwa_ksiazki,bez_transformacji,funkcja,modul);
	end;
	local dwukropek=mw.ustring.match(nazwa_ksiazki,"^:");
	if(dwukropek)then 
		return parametry_modul["PełnaNazwaKsiążkiFun"](nazwa_ksiazki,bez_transformacji,funkcja,modul);
	else
		local nazwy_modul=require("Module:Nazwy");
		local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENIFUN"](nazwa_ksiazki)
		local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
		local uchwyt_przestrzeni_nazw=mw.site.namespaces[nazwa_przestrzeni];
		if uchwyt_przestrzeni_nazw then
			return parametry_modul["PełnaNazwaKsiążkiFun"](nazwa_ksiazki,bez_transformacji,funkcja,modul);
		else
			local title_main=mw.title.makeTitle('',nazwa_ksiazki);
			if((title_main)and(title_main.exists))then
				return parametry_modul["NazwaKsiążkiFun"](nazwa_ksiazki,bez_transformacji,funkcja,modul);
			else
				local title_wikijunior=mw.title.makeTitle(nazwy_np_modul.Wikijunior,nazwa_ksiazki);
				if((title_wikijunior)and(title_wikijunior.exists))then
					local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
					return ((nazwy_np_modul.Wikijunior~="")and nazwy_np_modul.Wikijunior..":" or "")..parametry_modul["NazwaKsiążkiFun"](nazwa_ksiazki,bez_transformacji,funkcja,modul);
				else
					local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKIFUN"]();
					local pelna_nazwa_ksiazki=nazwa_przestrzeni_ksiazki..((nazwa_ksiazki~="")and("/"..nazwa_ksiazki) or "");
					return parametry_modul["PełnaNazwaKsiążkiFun"](pelna_nazwa_ksiazki,bez_transformacji,funkcja,modul);
				end;
			end;
		end;
	end;
end;
p["TransformacjaKoduZnakuDoZnakuŁancucha"]=function(wyrazenie_do_transformacji)
	return mw.ustring.gsub(wyrazenie_do_transformacji,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end)
end;
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
   	      return Parametry(wywolanie_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
   	  	   return parametry_szablonu;
   	  	else return nil;end;
   end;
end;
function Parametry(wywolanie_szablonu, parametry_szablonu, tekst_do_rozwazania)
   if(parametry_szablonu)then
	local tekst_do_rozwazania2=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-|"..tekst_do_rozwazania.."%s*([^{}|]-)%s*|.*}}$");
	if(tekst_do_rozwazania2)then
		if(tekst_do_rozwazania~="")then
		    parametry_szablonu=ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
		    if(parametry_szablonu)then
		       return Parametry(wywolanie_szablonu,parametry_szablonu, tekst_do_rozwazania.."%s*[^{}|]-%s*|");
		    else
		       return nil;
		    end;
		else
		   parametry_szablonu=ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
		   if(parametry_szablonu)then
		      return Parametry(wywolanie_szablonu,parametry_szablonu, "%s*[^{}|]-%s*|");
		   else
		   	  return nil;
		   end;
		end;
	end;
	tekst_do_rozwazania2=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-|"..tekst_do_rozwazania.."%s*([^{}|]-)%s*}}$")
	if(tekst_do_rozwazania2)then
		   return ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
	else
		return nil;
	end;
   end;
  return nil;
end;
function ZbierzParametry(tworzona_tabela, kawalek_wywolania)
   local kawalek_wywolania2=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*$");
   if(kawalek_wywolania2)then
	  tworzona_tabela[#tworzona_tabela+1]=mw.text.trim(kawalek_wywolania2);
	  return tworzona_tabela;
   else
	 local kawalek_wywolania21,kawalek_wywolania22=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*=%s*([^|{}]-)%s*$");
	 if((kawalek_wywolania21)and(kawalek_wywolania22))then
		for nazwa_elementu_tworzonej_tabeli, _ in pairs(tworzona_tabela) do
			if(type(nazwa_elementu_tworzonej_tabeli)=="string")then
		      if(nazwa_elementu_tworzonej_tabeli==kawalek_wywolania21)then return nil; end;
		    else
		    	local nazwa_elementu_tworzonej_tabeli=tworzona_tabela[tonumber(kawalek_wywolania21)];
		    	if(nazwa_elementu_tworzonej_tabeli)then return nil;end;
		    end;
		end;
		if(not mw.ustring.match(kawalek_wywolania21,"^%d+$"))then
		   tworzona_tabela[kawalek_wywolania21]=mw.text.trim(kawalek_wywolania22);
		   return tworzona_tabela;
		else
		   tworzona_tabela[tonumber(kawalek_wywolania21)]=mw.text.trim(kawalek_wywolania22);
		   return tworzona_tabela;
		end;
	 else
	 	return nil;
     end;
   end;
 return nil;
end;
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac)
  local liczba_elementow_ponumerowanych_w_tablicy=0;
  local parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
  for _1,_2 in ipairs(tabela)do
  	if((not czy_puste_wliczac)or((czy_puste_wliczac)and(parametry_modul.CzyTak(_2))))then
		liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
	end;
  end;
  return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaParametrówNienazwanychSzablonu"] = function (frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/LiczbaParametrówNienazwanychSzablonu").id	
	return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"])
end;
p["LiczbaElementówNienazwanychTablicy"] = function(tabela,wliczac)
  local parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.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(parametry_modul.CzyTak(_2))))then
				liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1;
			end;
		end;
  end;
  return liczba_elementow_ponumerowanych_w_tablicy;
end;
p["LiczbaElementówTablicy"]=function(tabela,wliczac)
  local parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.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(parametry_modul.CzyTak(_2))))then
			liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1;
	  end;
  end;
  return liczba_elementow_w_tablicy;
end;
p["LiczbaElementówNumerowanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac)
	local parametry_modul=require("Module:Parametry");
	local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
    local liczba_elementow_w_tablicy=0;
	for _1,_2 in pairs(tabela)do
	  local zmienna=przedrostek.._1 ;
	  local element=tabela[zmienna] or tabela[_1];
	  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)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/MaksymalnaLiczbaParametruNienazwanegoSzablonu").id	
	return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, wliczac)
  local parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.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(parametry_modul.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)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/MinimalnaLiczbaParametruNienazwanegoSzablonu").id	
	return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]);
end;
function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,wliczac)
  local parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.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(parametry_modul.CzyTak(_2))))then
  				if(not liczba_elementow_ponumerowanych_w_tablicy)then liczba_elementow_ponumerowanych_w_tablicy=_1;end;
				liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1);
			end;
		end;
  end;
  return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1;
end;
p["CzySąParametryNumerowaneSzablonu"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzySąParametryNumerowaneSzablonu").id	
	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 parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
  for _1,_2 in ipairs(tabela)do
  	if((not czy_puste_wliczac)or((czy_puste_wliczac)and(parametry_modul.CzyTak(_2))))then
		return true;
	end;
  end;
  return false;
end;
p["CzySąParametryNienazwaneSzablonu"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzySąParametryNienazwaneSzablonu").id	
	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 parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
  for _1,_2 in pairs(tabela)do
  	if(type(_1)=="number")then
  		if((not czy_puste_wliczac)or((czy_puste_wliczac)and(parametry_modul.CzyTak(_2))))then
			return true;
		end;
	end;
  end;
  return false;
end;
p["CzySąParametryNazwaneSzablonu"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzySąParametryNazwaneSzablonu").id
	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 parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
  for _1,_2 in pairs(tabela)do
  	if(type(_1)~="number")then
  		if((not czy_puste_wliczac)or((czy_puste_wliczac)and(parametry_modul.CzyTak(_2))))then
			return true;
		end;
	end;
  end;
  return false;
end;
p["CzySąParametrySzablonu"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzySąParametrySzablonu").id
	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 parametry_modul=require("Module:Parametry");
  local czy_puste_wliczac=parametry_modul.CzyTak(wliczac);
  for _1,_2 in pairs(tabela)do
  	  if((not czy_puste_wliczac)or((czy_puste_wliczac)and(parametry_modul.CzyTak(_2))))then
			return true;
	  end;
  end;
  return false;
end;
p["CzyJestZeroLubJedenJakoPierwszyNienazwanychElementówSzablonu"] = function (frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzyJestZeroLubJedenJakoPierwszyNienazwanychElementówSzablonu").id
	local parametry_modul=require("Module:Parametry");
	return parametry_modul["CzyJestZeroLubJedenJakoPierwszyNienazwanychElementówTablicy"](frame:getParent().args,frame.args["niepuste"]);
end;
p["CzyJestZeroLubJedenJakoPierwszyNienazwanychElementówTablicy"] = function (args,wliczac)
	local parametry_modul=require("Module:Parametry");
	local czy_puste_wliczac=parametry_modul.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(parametry_modul.CzyTak(_2))))then
				if(_1==1)then czy=true;end;
				if(i>1)then
					return "";
				else
	    			i=i+1;
	    		end;
			end;
	 	end;
	end;
	if((czy)or(i==1))then return "tak";else return "";end;
end;
function p.PoliczZbiory(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/PoliczZbiory").id	
	local liczba_istniejacych_zbiorow,_ = require("Module:Parametry").PoliczZbioryFun(frame.args);
	return liczba_istniejacych_zbiorow;
end;
function p.PoliczZbioryFun(args)
	local liczba_istniejacych_zbiorow=0;
	local tabela_uchwytow_stron={};
	for _,nazwa_strony in ipairs(args) do
	   local uchwyt_strony = mw.title.makeTitle('',nazwa_strony);
	   tabela_uchwytow_stron[#tabela_uchwytow_stron+1]=uchwyt_strony;
	   if(((uchwyt_strony~=nil)and(uchwyt_strony.exists)))then 
	      liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
	   end;
	end;
    return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
p["KopiujTabelęŁańcuchów"]=function(args)
	local args2={};
	for name,value in pairs(args.tabela)do
		if(args.wzor and args.podstawienie)then value=mw.ustring.gsub(value,args.wzor,args.podstawienie);end;
		if(args.wzor2)then value=mw.ustring.match(value,args.wzor2);end;
		args2[name]=((args.przedrostek)and args.przedrostek or '')..value..((args.przyrostek)and args.przyrostek or '');
	end;
	return args2;
end;
p["KopiujTabelęElementów"]=function(tabelka)
	local tabelka2={};
	for name,value in pairs(tabelka)do
		tabelka2[name]=value;
	end;
	return tabelka2;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/WzórDanejPrzestrzeniNazw").id
	return require("Module:Parametry")["WzórDanejPrzestrzeniNazwFun"](frame.args[1]);
end;
p["WzórDanejPrzestrzeniNazwFun"] = function (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 )
	return wzor;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
		mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/CzyIstniejeDanaPrzestrzeńNazw").id
	return require("Module:Parametry")["CzyIstniejeDanaPrzestrzeńNazwFun"](frame.args[1]);
end
p["CzyIstniejeDanaPrzestrzeńNazwFun"] = function(nazwa_przestrzeni_nazw_lub_jego_identyfikator)
	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["PełnaNazwaOpisuModułu"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/PełnaNazwaOpisuModułu").id
	return require("Module:Parametry")["PełnaNazwaOpisuModułuFun"](frame.args[1]);
end;
p["PełnaNazwaOpisuModułuFun"] = function(pelna_nazwa_strony)
	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ŁNANAZWASTRONYFUN"](zawartosc_komunikatu);
	local pelna_nazwa_strony2=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONYFUN"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONYFUN"]();
	local patternopis=mw.ustring.gsub(pelna_nazwa_strony0,"%$1",".-");
	if(not mw.ustring.match(pelna_nazwa_strony2,"^"..patternopis.."$"))then
		local nazwa_strony=nazwy_modul["NAZWASTRONYFUN"](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ŁNANAZWASTRONYFUN"](pelna_nazwa_strony_opisu);
		return pelna_strona_opisu;
	else
		return pelna_nazwa_strony2;
	end;
end;
p["NazwanyLiczbą"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/NazwanyLiczbą").id
	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)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/NazwanyCiągiem").id
	local pf=frame:getParent()
	local numer_parametru=frame.args[1]
	if(numer_parametru)then
		local numer_parametru2=tonumber(numer_parametru);
		if(not numer_parametru2 and pf.args[numer_parametru])then
			return "tak"
		end
	end;
	return;
end;
function p.Nazwane(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/Nazwane").id
    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)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/Nienazwane").id
    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)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/Numerowane").id
    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["WydzielLiczbę"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/WydzielLiczbę").id	
	return require("Module:Parametry")["WydzielLiczbęFun"](frame.args[1]);
end;
p["WydzielLiczbęFun"] = function(argument_pierwszy)
	argument_pierwszy=mw.ustring.gsub(argument_pierwszy,"(%d)%s+(%d)","%1%2");
	local liczba_w_linku=mw.ustring.match(argument_pierwszy,"^%s*'*%s*%[%[[%w:/+-%s]+|%s*'*%s*(%d+)%s*'*%s*%]%]%s*'*%s*$");
	if(liczba_w_linku)then return liczba_w_linku;end;
	local liczba_w_czudzyslowie=mw.ustring.match(argument_pierwszy,"^%s*'*%s*(%d+)%s*'*%s*$");
	if(liczba_w_czudzyslowie)then return liczba_w_czudzyslowie;end;
	return argument_pierwszy;
end;
p["UsuńKategorie"]=function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/UsuńKategorie").id	
	return require("Module:Parametry")["UsuńKategorieFun"](frame.args[1]);
end;
p["UsuńKategorieFun"]=function(argument_pierwszy)
    local category=require("Module:Nazwy").NpFun{nazwa="Category"};
    local wzorcategory=require("Module:Parametry")["WzórDanejPrzestrzeniNazwFun"](category);
    argument_pierwszy,_=mw.ustring.gsub(argument_pierwszy,"%[%["..wzorcategory..":[^%[%]]+%]%]","");
    argument_pierwszy,_=mw.ustring.gsub(argument_pierwszy,"%[%[[CC][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:[^%[%]]+%]%]","");
    return argument_pierwszy;
end;
p["WłaściwąFormęWyrażeniaWyświetlPoLiczbie"]=function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/WłaściwąFormęWyrażeniaWyświetlPoLiczbie").id
	local argument_funkcji_modulu_1=(frame.args[1])and frame.args[1] or "0";
	local argument_funkcji_modulu_2=(frame.args[2])and frame.args[2] or "zbiorów";
	local argument_funkcji_modulu_3=(frame.args[3])and frame.args[3] or "zbiór";
	local argument_funkcji_modulu_4=(frame.args[4])and frame.args[4] or "zbiory";
	local liczba=require("Module:Parametry")["UsuńKategorieFun"](argument_funkcji_modulu_1);
	liczba=require("Module:Parametry")["WydzielLiczbęFun"](liczba);
	local liczba_number=tonumber(liczba);
	if(not liczba_number)then return "(błąd)";end;
	if(liczba_number==0)then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_2;end;
    if(liczba_number==1)then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_3;end;
    if(liczba_number<5)then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_4;end;
    if(liczba_number<20)then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_2;end;
	local reszta=math.fmod(liczba_number,10);
	if((reszta==0)or(reszta==1))then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_2;end;
    if(reszta<5)then return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_4;end;
    return argument_funkcji_modulu_1.." "..argument_funkcji_modulu_2;
end;
p["Odstępy"] = function(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/Odstępy").id
	local pf=frame:getParent();
	return require("Module:Parametry")["OdstępyFun"](pf.args[1],pf.args["wewnątrz"]);
end;
p["OdstępyFun"] = function(nazwa,czy)
	if(not p.CzyTak(nazwa))then return nazwa;end;
	nazwa=mw.ustring.gsub(nazwa,"^[%s_]+","");
	nazwa=mw.ustring.gsub(nazwa,"[%s_]+$","")
	if(p.CzyTak(czy))then
		nazwa,_=mw.ustring.gsub(nazwa,"[%s_]+"," ");
	end;
	return nazwa;
end;
function p.ZamianaKategoriiNaLinki(frame)
	return require("Module:Parametry").ZamianaKategoriiNaLinkiFun(frame.args[1]);
end;
function p.ZamianaKategoriiNaLinkiFun(kategorie)
	local parametry_modul=require("Module:Parametry");
	local nazwy_modul=require("Module:Nazwy");
	local kategoria_polska=nazwy_modul.NpFun{nazwa="Category"};
	local wzor_kategorii_polskiej=parametry_modul["WzórDanejPrzestrzeniNazwFun"](kategoria_polska)
	local kategorie=mw.ustring.gsub(kategorie,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^|%[%]]+)%s*%]%]","[[:Kategoria:%1|%1]]");
	kategorie=mw.ustring.gsub(kategorie,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]","[[:Kategoria:%1|%1]]");
	kategorie=mw.ustring.gsub(kategorie,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*|%s*([^|%[%]]+)%s*%]%]","[[:Kategoria:%1|%1]]");
	kategorie=mw.ustring.gsub(kategorie,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*%]%]","[[:Kategoria:%1|%1]]");
	return kategorie;
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=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=true;args2["CzyPairsElementówTablic"]=false;args2.CzyNazwaneElementyTabel=false;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=true;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=false;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=true;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=true;args2.CzyTylkoNazwaneElementyTabel=true;
	return parametry_modul["ŁączTabele"](args2);
end;

p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=false;args2["CzyPairsElementówTablic"]=false;args2.CzyNazwaneElementyTabel=false;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=false;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=false;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=false;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=true;args2.CzyTylkoNazwaneElementyTabel=true;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączNumerowaneTabele"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=false;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=true;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączNienazwaneTabele"]=function(args)
	local parametry_modul=require("Module:Parametry");
	local args2=parametry_modul["KopiujTabelęElementów"](args);
	args2.CzyPairsTablic=true;args2["CzyPairsElementówTablic"]=true;args2.CzyNazwaneElementyTabel=true;args2.CzyTylkoNazwaneElementyTabel=false;
	return parametry_modul["ŁączTabele"](args2);
end;
p["ŁączTabele"] = function(args)
  	local parametry_modul=require("Module:Parametry");
	local tabela={};
	local par1=(args.CzyPairsTablic)and pairs or ipairs;
	local czy_number_nie_tylko_tablic=(not args.CzyPairsTablic)and true or false;
	local par2=(args["CzyPairsElementówTablic"])and pairs or ipairs;
	local czy_number_nie_tylko_elementow_tablic=(not args["CzyPairsElementówTablic"])and true or false;
	local czy_nazwane=(args.CzyNazwaneElementyTabel)and true or false;
	local czy_nie_tylko_nazwane=(not args.CzyTylkoNazwaneElementyTabel)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
					table.insert(tabela,value);
				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;
	local tabelka=require("Module:Parametry")["KopiujTabelęElementów"](tabelka_1);
	if(not tabelka_2)then return tabelka;end;
	for name,_ in pairs(tabelka_2)do
		if(tabelka[name])then tabelka[name]=nil;end;
	end;
	return tabelka;
end;
function p.NazwaSzablonu(nazwa)
    local nazwy_modul=require("Module:Nazwy");
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENIFUN"](nazwa)
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
	if(nazwa_przestrzeni==nazwy_np_modul.Template)then
	   return nazwy_modul["NAZWASTRONYFUN"](nazwa);
	elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
		return ":"..nazwa;
	else
		return nazwa;
	end;
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
p["Pierwszy niepusty"]= function(frame)
	local pf=frame:getParent();
	local i=1;
	local liczba_elementow_w_tablicy_args=p["LiczbaElementówNumerowanychZPrzedrostkiemLubNieTablicy"](pf.args,"test");
	local licznik=1;
	while true do
		local test=pf.args["test"..i];
		local _i=pf.args[i];
		local zmienna=test or _i;
		local czy_tak=p.CzyTak(zmienna);
		if(czy_tak)then
			return (_i)and _i or "{{{"..i.."}}}";
		end;
		if(licznik>=liczba_elementow_w_tablicy_args)then return "";end;
		if(zmienna)then licznik=licznik+1;end;
		i=i+1;
	end;
	return "";
end;
function p.WikidaneIdWiki(frame)
	return p.WikidaneIdWikiFun{["kod języka"]=frame.args["kod języka"],["kod projektu"]=frame.args["kod projektu"]};
end;
function p.WikidaneIdWikiFun(kod_jezyka,kod_projektu)
   if(type(kod_jezyka)=="table")then
   		local args=kod_jezyka;
		kod_jezyka=args["kod języka"];
		kod_projektu=args["kod projektu"];
   end;
   local kody_projektow_z_indetyfikatorow_globalnej_danej_wiki_1={
    	["w"]="wiki",
    	["b"]="wikibooks",
    	["wikt"]="wiktionary",
    	["q"]="wikiquote",
    	["s"]="wikisource",
    	["voy"]="wikivoyage",    	
    	["n"]="wikinews",
    	["v"]="wikiversity",    
    };
    local kody_projektow_z_indetyfikatorow_globalnej_danej_wiki_2={
    	["commons"]="commonswiki",
    	["wikispecies"]="specieswiki", 
    	["d"]="wikidatawiki",
    	["mw"]="mediawikiwiki",
    	["m"]="metawiki",
    	["wikimania"]="wikimaniawiki",
    };
    local pudelko_modul=require("Module:Pudełko");
	if(not kod_jezyka)then kod_jezyka=pudelko_modul["Kod języka tego projektu"]();end;
	if(not kod_projektu)then kod_projektu=pudelko_modul["Kod projektu tego projektu"]();end;
    local kod_projektu_identyfikatora_projektu_1=kody_projektow_z_indetyfikatorow_globalnej_danej_wiki_1[kod_projektu];    
    local kod_projektu_identyfikatora_projektu_2=kody_projektow_z_indetyfikatorow_globalnej_danej_wiki_2[kod_projektu];
    if(kod_projektu_identyfikatora_projektu_1)then 
    	return kod_jezyka..kod_projektu_identyfikatora_projektu_1;
     elseif(kod_projektu_identyfikatora_projektu_2) then
     	return kod_projektu_identyfikatora_projektu_2;
    else 
     	return nil;
     end;
end;
function p.WikidaneOdpowiednikStronyFun(nazwa_strony,kod_jezyka,kod_projektu,kod_jezyka_baza,kod_projektu_baza)
	if(type(nazwa_strony)=="table")then
		local args=nazwa_strony;
		nazwa_strony=args["nazwa strony"];
	    kod_jezyka=args["kod języka"];
	    kod_projektu=args["kod projektu"];
	    kod_jezyka_baza=args["kod języka bazy"];
	    kod_projektu_baza=args["kod projektu bazy"];
	end;
	local identyfikator_projektu_globalnej_danej_wiki=p.WikidaneIdWikiFun{["kod języka"]=kod_jezyka_baza,["kod projektu"]=kod_projektu_baza};
	if(not identyfikator_projektu_globalnej_danej_wiki)then identyfikator_projektu_globalnej_danej_wiki=mw.wikibase.getGlobalSiteId();end;
	local identyfikator_strony=mw.wikibase.getEntityIdForTitle(nazwa_strony,identyfikator_projektu_globalnej_danej_wiki);
	if(not identyfikator_strony)then return nil;end;
	local tabela_wikidane=mw.wikibase.getEntity(identyfikator_strony);
	if(not tabela_wikidane)then return nil;end;
	local identyfikator_projektu_globalnej_danej_wiki_2=p.WikidaneIdWikiFun{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu};
    local odpowiednik=tabela_wikidane.sitelinks[identyfikator_projektu_globalnej_danej_wiki_2];
    if(odpowiednik)then
    	local odpowiednik_strony_danej_wiki_na_innej_wiki,_=mw.ustring.gsub(odpowiednik["title"],"[_%s]+"," ");
    	return odpowiednik_strony_danej_wiki_na_innej_wiki;
    else
        return nil
    end;
end;
function p.WikidaneOdpowiednikStrony(frame)
	mw.logObject(frame:getParent():getTitle(), "parent:title")
	_ = mw.title.new("Module:Parametry/Wywołanie funkcji/WikidaneOdpowiednikStrony").id
	return p.WikidaneOdpowiednikStronyFun{["nazwa strony"]=frame.args["nazwa strony"],["kod języka"]=frame.args["kod języka"],["kod projektu"]=frame.args["kod projektu"],["kod języka bazy"]=frame.args["kod języka bazy"],["kod projektu bazy"]=frame.args["kod projektu bazy"]};
end;
function p.CzyTak(zmienna,args)
	if(zmienna~=nil)then
		if(type(zmienna)=="string")then
			if(zmienna~="")then
				return true;
			else
				return false;
			end;
		elseif(type(zmienna)=="number")then
			if(zmienna~=0)then
				return true;
			else
				return false;
			end;
		elseif(type(zmienna)=="boolean")then
			return zmienna;
		elseif(type(zmienna)=="table")then
			return p["CzySąElementyTablicy"](zmienna);
		elseif(type(zmienna)=="function")then
			return zmienna(args);
		else
			return false;
		end;	
	else
		return false;
	end;
end;
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona)
	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 0;
			liczba_maksimum=math.max(liczba_maksimum,liczba);
			if(not liczba_minimum)then 
				 liczba_minimum=(liczba>0)and liczba or 1;
		    else 
		    	liczba_minimum=math.min(liczba_minimum,(liczba>0)and liczba or 1);
			end;	
		elseif(nazwa_parametru_okreslona==nazwa_parametru)then
			liczba_maksimum=math.max(liczba_maksimum,1);
			if(not liczba_minimum)then 
				 liczba_minimum=1;
		    else 
		    	liczba_minimum=math.min(liczba_minimum,1);
			end;
		end;
	end;
	if(not liczba_minimum)then liczba_minimum=1;end;
	return liczba_minimum,liczba_maksimum;
end;
return p;