Przejdź do zawartości

Moduł:Techniczne

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
p["Pierwszy niepusty"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	local i=1;
	local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](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;
end;
function p.NowikiParametr(frame)
	local parametr=frame.args[1];
	local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
	parametr=mw.ustring.gsub(parametr,"(.)",function(s)
		return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
	end);
	return parametr;
end;
function p.EncodeParametr(frame)
	local parametr=frame.args[1];
	local szablonowe_dane_modul=require("Module:Szablonowe/dane");
	parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
		return a..mw.text.encode(str)..b;
	end)
	parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
		local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
		if(znacznik)then
			znacznik=mw.getContentLanguage():lc(znacznik);
			local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
			if(not czy_znacznik)then
				return "&amp;lt;"..znak..mw.text.encode(str).."&amp;gt;";
			end;
		end;
	end);
	parametr=mw.text.decode(parametr);
	parametr=mw.text.encode(parametr);
	return parametr;
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_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
	local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
	local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
	if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
		local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
		local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
		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_strony_podanej_lub_aktualnej;
	end;
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 klucz_projektu=PobierzParametr("klucz projektu");
	local kod_jezyka=PobierzParametr("kod języka");
	local kod_projektu=PobierzParametr("kod projektu");
	
	local wiki_modul=require("Module:Wiki");
	local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
	local nazwy_modul=require("Module:Nazwy");

	local uchwyt_przestrzeni_nazw;
	if(czy_biezace_wiki)then
		uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
	else
		uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
	end;
	if(uchwyt_przestrzeni_nazw)then
		return "tak";
	else
		return;
	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_]+");
	wzor="[%s_]*"..wzor.."[%s_]*";
	return wzor;
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_]+");
	wzor="[%s_]*"..wzor.."[%s_]*";
	return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local strona=PobierzParametr(1) or PobierzParametr("nazwa");
	local nazwy_modul=require("Module:Nazwy");
	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
	local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
	if(nazwa_przestrzeni~="")then
		nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
	end;
	nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
	return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
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,"%%%%","%%%%%%");
	tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
	return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = 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,"%%(%a+)","%%%%%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 nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
	
	local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	local szablonowe_modul=require("Module:Szablonowe");
	local tab_komentarze={};
	local licznik_komentarze=1;
	local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
		tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
			local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
			tab_komentarze[licznik_komentarze]=komentarz;
			licznik_komentarze=licznik_komentarze+1;
			return kod;
		end);
		return tekst_artykulu;
	end);
	if(not tekst)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
	end;
    tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
	local html_modul=require("Module:Html");
	
	tekst=mw.ustring.gsub(tekst,"&(%a+);","&amp;%1;");
	tekst=mw.ustring.gsub(tekst,"&#(%d+);","&amp;#%1;");
	
	local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
	local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
	local tab_linki=techniczne_dane_modul.tablica_linki;
	local tab_tagow=techniczne_dane_modul.tablica_tagowa;
	local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
	
	local tab_zmienne=function(s)
		return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
	end;

    local tablica_analizy_obiektow_strony_dany_modul={};
    local szablonowe_modul=require("Module:Szablonowe")
    local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
	local TekstBezKomentarzy=function(tekst,poczatek)
		tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
			local kod=tonumber(kod);
			local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
			if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
				return  "";
			end;
			return nil;
		end);
		--tekst=parametry_modul["Odstępy"](tekst);
		return tekst;
	end;
	local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
		if(not tabela_modyfikatorow)then return nazwa,"";end;
		--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
		local modyfikatory="";
		repeat
			local ile_zmieniono=0;
			local __modyfikatory=nil;
			nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
				local kod=tonumber(kod);
				local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
				if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
					__modyfikatory=poczatek;
					return "";
				end;
			end);
			nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
				d=b..TekstBezKomentarzy(d)..":";
				if(tabela_modyfikatorow[d])then
					ile_zmieniono=ile_zmieniono+1;
					modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
					return "";
				end;
				return nil;
			end);
			if(ile_zmieniono==0)then
				nazwa=(__modyfikatory or "")..nazwa;
			end;
		until (ile_zmieniono==0);
		return nazwa,modyfikatory;
	end;
	local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
		szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
				local odpowied;
				if(__funkcja)then
					odpowied=__funkcja(znak);
				else
					odpowied=tab_linki[znak] or tab_szablonowa[znak];
				end;
				if(odpowied)then return odpowied;end;
				return znak;
		end);
		return szablon;
	end;
	local CzyBezDwukropka=function(dwukropki)
		return (not mw.ustring.match(dwukropki,":") and "tak" or "");
	end;
	tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
				if(obiekt=="SZABLON")then
					local szablon_old=szablon;
					szablon=TekstBezKomentarzy(szablon);
					local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
					if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
						                        		or(tabela_modyfikatorow["#invoke:"])
						                        			or(tabela_modyfikatorow["int:"]))
												and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
													or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
												
					))then
						local UstawianieLinkowe=function(szablon,ktore)
							local SzablonStrona=function(szablon)
								local strona=TekstBezKomentarzy(szablon);
								strona=parametry_modul["Odstępy"](strona);
								local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
								return "{{s|oryginalna=tak|analiza=tak|"..strona
										.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
										.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
										..(ktore and "|" or "}}");
							end;
							if(ktore)then
								szablon=mw.ustring.gsub(szablon,"=","{{=}}");
								szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
									return SzablonStrona(szablon);
								end);
							else
								szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
									return SzablonStrona(szablon);
								end);
							end;
							return szablon;
						end;
						if(mw.ustring.match(szablon_old,"|"))then
							if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
								szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
				        		return szablon_old;
							else
								return UstawianieLinkowe(szablon_old,true);
							end;
						else
							if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
								szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
				        		return szablon_old;
							end;
							if(pseudoszablon)then
									if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
										szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
										return szablon_old;
									else
										return UstawianieLinkowe(szablon_old,false);
									end;
							else
								return UstawianieLinkowe(szablon_old,false);
							end;
						end;
					else
				         szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
				         return szablon_old;
					end;
				elseif(obiekt=="LINKW")then
					local __szablon=TekstBezKomentarzy(szablon);
					local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
					if(__strona)then
						if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
							szablon=ZamieniajZnakiNaMikroSzablony(szablon);
							return szablon;
						else
							local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
							return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
						end;
					else
						local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
						if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
							szablon=ZamieniajZnakiNaMikroSzablony(szablon);
							return szablon;
						else
							local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
							return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
						end;
					end;
				elseif(obiekt=="LINKZ")then
					local __szablon=TekstBezKomentarzy(szablon);
					local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
					if(__strona)then
						if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
							szablon=ZamieniajZnakiNaMikroSzablony(szablon);
							return szablon;
						else
							local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
							return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
						end;
					else
						local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
						if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
							szablon=ZamieniajZnakiNaMikroSzablony(szablon);
							return szablon;
						else
							local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
							return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
						end;
					end;
				elseif(obiekt=="ZMIENNA")then
					szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
						local odpowied=tab_szablonowa[znak];
						return odpowied;
					end);
					return szablon;
				elseif((obiekt=="NOWIKI")
					or(obiekt=="PRE")
					or(obiekt=="MATH")
					or(obiekt=="ŹRÓDŁO")
					or(obiekt=="GALERIA")
					or(obiekt=="MAPAOBRAZU")
					or(obiekt=="PUDEŁKOWEJŚCIA")
				)then
					szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
						local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
						return odpowied;
					end);
					return szablon;
				elseif(obiekt=="QUIZ")then
					szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
						local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
						return odpowied;
					end);
					return szablon;
				elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
					szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
						local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
						return odpowied;
					end);
					return szablon;
				elseif(obiekt=="ATRYBUTY")then
					szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
						kod=tonumber(kod);
						local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
						return szablon;
					end);
					return szablon;
				elseif(obiekt=="WIKITABELA")then
					szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
						local odpowied=tabela_wikitabelowa[znak];
						return odpowied;
					end);
					return szablon;
				elseif(obiekt=="INNEPRE")then
					--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&amp;nbsp;");
					return szablon;
				else
					return szablon;
				end;
	end);
	tekst=frame:getParent():preprocess(tekst);
	tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
		kod=tonumber(kod);
		local komentarz=tab_komentarze[kod];
		komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
			return "&lt;!--"..zawartosc.."--&gt;";
		end);
		return komentarz;
	end);
	return tekst;
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";
	
	if(not parametry_modul.CzyTak(nazwa))then return;end;
	local title=mw.title.makeTitle(przestrzen,nazwa);
	local text=title and title:getContent() or false;
	if(not text)then return;end;
	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 strona)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
	end;
	local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
	if(not tekst)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
	end;
	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");
	else
		local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
		if(dokumentacja)then
			tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
			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]>","");
		end;
	end;
	return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame);
	
	local strona=args["strona"];
	if(not strona)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
	end;
	local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
	if(not tekst)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
	end;
	---
	---
	local tablica_analizy_obiektow_strony_dany_modul={};
    local szablonowe_modul=require("Module:Szablonowe");
    local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
    local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,nil,nil,nil,
    function(tekst_artykulu,tab_element)
    	return nil,true,nil,true;
    end,
    function(nazwa)
    	return true;
    end);

    local specjalne_modul=require("Module:Specjalne");
	local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
	local tab_mediawiki=function(s)
		return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
	end;
	local tabela_zmiennych={["site"]=true;};
	local tablica_danych_parametrow_szablonu_strony={};
	
	local function UsuwanieZnacznikoweZmiennychNumerowanychElementowychAlternatywnych(szablon)
		local ile=0;
		local szablon=mw.ustring.gsub(szablon,"({{{.+}}})",function(zmienna)
			local numerowana=mw.ustring.match(zmienna,"^{{{%s*(%d+)%s*|");
    		if(numerowana)then
    			local ile2=0;
    			zmienna=mw.ustring.gsub(zmienna,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    				if(b=="")then
    					ile=ile+1;
    					ile2=ile2+1;
    					return a..c;
    				end;
    			end);
    			return (ile2>0)and zmienna or nil;
    		end;
		end);
		return szablon,ile;
	end;
	local function UsuwaniePseudoSzablonowe(szablon)
    	  szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
    			if(obiekt=="SZABLON")then
	    			local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
    					function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    						if(tab_mediawiki(nazwa_szablonu))then
    							return "";
    						end;	
	    				end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
    					function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    						local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
    						return wynik;
    					end,
	    				function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    						return false;
    				end);
	    			if(wynik)then return wynik;end;
	    		end;
	    		return  nil, true;
         end);
        return szablon;
    end;
    local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
		if(tabela_modyfikatorow)then
			for name,value in pairs(tabela_modyfikatorow)do
    			if(tab_modyfikatory[name])then
    				local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
    				if(warunek)then
	    				local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
	    				local czy_usunac_kreski_pionowe=false;
	    				for szablon_dalej,obiekt,kod in iterator do
	    					if(obiekt=="SZABLON")then
	    						local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod,"",
    								function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    									if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$")) or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
    										return true;
    									end;
    								end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
    								function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    									local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
    									return wynik;
    								end,
    								function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    									return false;
    							end);
    							if(wynik)then 
    								czy_usunac_kreski_pionowe=true;
    								break;
    							end;
    						elseif(obiekt=="LINKW")then
    							local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
    							if(wynik)then 
    								czy_usunac_kreski_pionowe=true;
    								break;
    							end;
    						end;
	    				end;
	    				if(czy_usunac_kreski_pionowe)then
	    					warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
	    						if(obiekt=="ZMIENNA")then
	    							    szablon=UsuwaniePseudoSzablonowe(szablon);
										szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    										if(b=="")then
    											return a..c;
    										end;
    									end);
	    								return szablon;
	    							end;
	    					end);
	    					return "{{"..warunek..dalej;
	    				else
    						local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
    						return "{{"..warunek..dalej;
    					end;
    				end;
				end;
			end;
		end;
	end;
    local function PlikowePrzetwarzanie(szablon,obiekt,kod)
    	local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
    		if(obiekt=="ZMIENNA")then
    			szablon=UsuwaniePseudoSzablonowe(szablon);
    			local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
    			if(not numerowana)then
    				szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    					if(b=="")then
    						return a..c;
    					end;
    				end);	
    			end;
    			return szablon;
    		end;
    		return  nil,true;
    	end);
    	return szablon;
    end;
	local function PrzetwarzanieDivowe(szablon,obiekt,kod)
		local szablon,ile=UsuwanieZnacznikoweZmiennychNumerowanychElementowychAlternatywnych(szablon);
		szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
    		if(obiekt=="ZMIENNA")then
    			szablon=UsuwaniePseudoSzablonowe(szablon);
    			local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
    			if(numerowana)then
    				szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    					if(b=="")then
    						return a..c;
    					end;
    				end);
    			end;
    			return szablon;
    		elseif(obiekt=="SZABLON")then
    			local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
    				function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    					local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
    						if(obiekt=="ZMIENNA")then
    							szablon=UsuwaniePseudoSzablonowe(szablon);
    							local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
    							if(not numerowana)then
    								szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    									if(b=="")then
    										return a..c;
    									end;
    								end);
    							end;
    							return szablon;
    						end;
    						return nil,true;
    					end);
    					return szablon;
    				end,
    				function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    					local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
    					return wynik;
    				end,nil,nil,nil,nil,nil,nil,nil,nil,
    				function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    					local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
    					return wynik;
    				end,
    				function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    					return false;
    			end);
    			if(wynik)then return wynik;end;
    			return nil,true;
    		elseif(obiekt=="LINKW")then
    			if(specjalne_modul["CzyPlik"](szablon))then
					  szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
					return szablon;
				end;
    		end;
    		return  nil,true;
		end);
		return szablon;
	end;
	local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
		local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
    		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
    			local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
    			local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
    			if((infobox)or(link))then
    				if((link)and(not infobox))then
    					szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
    				end;
    				local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod	,poziom_iteracji)
    					if(obiekt=="SZABLON")then
    						local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
    							function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    								return nil;
    							end,
    							function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    								local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
									if(wynik)then return wynik;end;
    							end,nil,nil,nil,nil,nil,nil,nil,nil,
							    function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    								local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
    								return wynik;
    							end,
    							function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    								return false;
    							end);
							if(wynik)then return wynik;end;
							return nil,true;
    					elseif(obiekt=="ZMIENNA")then
    						szablon=UsuwaniePseudoSzablonowe(szablon);
    						szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    							if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
    								return a..c;
    							end;
    						end);
    						return szablon;
    					elseif(obiekt=="LINKW")then
    						if(specjalne_modul["CzyPlik"](szablon))then
    							szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
    							return szablon;
    						end;
    						return nil,true;
    					elseif(obiekt=="ZNACZNIK")then
			    	    	local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
			    	    	if(nazwa=="div")then
			    	    		 szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
			    	    		 return szablon;
			    	    	end;
			    	    	return nil,true;
    					end;
    					return szablon;
    				end);
    				return szablon;
    			end;
    		end,
    		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
				local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
				if(wynik)then return wynik;end;
    		end,nil,nil,nil,nil,nil,nil,nil,nil,
    		function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
    			local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
    			return wynik;
    		end,
			function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
				return false;
		end);
    	return wynik;
	end;
    tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
    	if(obiekt=="SZABLON")then
    		szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
    		if(szablon)then return szablon;end;
    	elseif(obiekt=="ZMIENNA")then
    		local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
    		if(not numerowana)then
    			szablon=UsuwaniePseudoSzablonowe(szablon);
    			szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
    				if(b=="")then
    					return a..c;
    				end;
    			end);
    			return szablon;
    		end;
    	elseif(obiekt=="ZNACZNIK")then
    		local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
    		if(nazwa=="div")then
    			szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
				return szablon;
    		end;
    	elseif(obiekt=="LINKW")then
    		if(specjalne_modul["CzyPlik"](szablon))then
    			szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
				return szablon;
			else
				local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
				if(wynik)then
					local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
					return spanramka;
				end;
    		end;
    	end;
    	return szablon;
    end);
	return tekst;
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 sprawdz_modul=require("Module:Sprawdź");
    tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
	
	tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
		return "&#"..mw.ustring.byte(znak)..";";
	end);
	
	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[args[2] or args["nazwa"] or args["funkcja"]](args2);
		end;
	end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = 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 "Nazwa strony";
	local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
	
	local title=mw.title.makeTitle(przestrzen,nazwa);
	local text=title and title:getContent() or nil;
	if(not text)then
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
	end;
	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,
		["wyspecjalizowana"]=true,
		["nie rozwiń"]=true,
	};
	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};
	text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
	return text;
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"];
	typ=(typ and 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;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
	----
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
		if(tablica_danych_parametrow_szablonu_strony_numer)then
			local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
			if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
				return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
			end;
		end;
	end;
	---
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
	if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
	local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
	local adres;
	local dwukropek;
	if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then 
		if(adres_biezacy)then
			adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
			adres=adres_biezacy..adres_wzgledny;
		else
			return nil;
		end;
	else 
		if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
			if(adres_biezacy)then
				adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
				adres=adres_biezacy.."/"..adres_wzgledny;
			else
				return nil;
			end;
		else
			adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
			adres=adres_wzgledny;
		end;
	end;
	if(adres~="")then
		while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
			adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
			adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
			adres=mw.ustring.gsub(adres,"/+","/");
			adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
			adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
			adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
		end;
		adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
		adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
		adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
		adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
		adres=mw.ustring.gsub(adres,"^[%s_]*","");
		adres=mw.ustring.gsub(adres,"[%s_]*$","");
		adres=mw.ustring.gsub(adres,"[%s_]+"," ");
	end;
	local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
	-----
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
		if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
		tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
	end;
	-----
	return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local nazwa_modulu=PobierzParametr(1);
	local html_modul=require("Module:Html");
	local pudelko_modul=require("Module:Pudełko");
	nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
	local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
	if(czy_nazwa_niepoprawna)then
		mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
		return;
	end;
	local title=mw.title.makeTitle('',nazwa_modulu);
	if(title)then
		local strona=title.redirectTarget;
		if(not strona)then return;end;
		return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
	else
		mw.log("Nieprawidłowy format nazwy modułu przy uzykiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
		return;
	end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
	local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
	return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
	local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
	return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local czy_table_frame=parametry_modul.TypeTable(frame);
	local args=czy_table_frame and (frame.args or frame) or nil;
	local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
	local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
	local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
	local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
	local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
	local specjalne_modul=require("Module:Specjalne");
	local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
	if(not liczba_number)then return "(błąd)";end;
	local liczba_number=math.abs(liczba_number);
	if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
    if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
    if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
    if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
	local reszta=math.fmod(liczba_number,20);
	if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
	if(reszta==1)then
		if(liczba_number<20)then 
			return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
		else
			return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
		end;
	end;
    if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
    return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;