Przejdź do zawartości

Moduł:StronicowyParser/Potrzebne

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.LiczonyHNumer()
	local tab={};
	local h_numer_zapamietane=nil;
	--local ostatnie_poprz=nil;
	return function(h_numer,h_numer_nowe)
		if(h_numer==0)then
			if(#tab>0)then
				local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
				return ostatnie_poprz;
			end;
			return nil;
		elseif(h_numer<0)then
			h_numer=math.abs(h_numer);
		end;
		local ostatnie;---=tab[h_numer];
		local max_h_numer=nil;local min_h_numer=nil;
		
		local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
		for i=#tab,1,-1 do
			----
			local h_numer_pos,ostatnie_pos=unpack(tab[i]);
			if(ostatnie_ost_prawda)then
				if(h_numer_pos==h_numer)then 
					ostatnie_ost=ostatnie_pos;
					break;
				end;
				ostatnie_ost_prawda=nil;
			end;
			----
			if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then 
				if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
					ostatnie_max=ostatnie_pos;
					max_h_numer=h_numer_pos;
				end;
			end;
		end;
		
		if(ostatnie_ost)then
			ostatnie=ostatnie_ost;
		else
			ostatnie=(ostatnie_max or 0)+1;
		end;
		local h_numer_poprz,ostatnie_poprz=nil,nil;
		if(#tab>0)then
			h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
		end;
		if(ostatnie>(ostatnie_poprz or 0)+1)then
			ostatnie=(ostatnie_poprz or 0)+1;
		end;
		table.insert(tab,{h_numer,ostatnie,});
		if(h_numer_nowe)then
			local roznica=h_numer_nowe-ostatnie;
			if(roznica==0)then 
				return ostatnie;
			end;
			local tab2={};
			for i,tabs in pairs(tab)do
				local name,value=unpack(tabs);
				tab2[i]={name,value+roznica,};
			end;
			tab=tab2;
			return h_numer_nowe;
		end;
		return ostatnie;
	end;
end;
function p.PoziomAdresu(adres)
	local lens=#adres;
	local i=1;
	for p=1, lens,1 do
		local znak=mw.ustring.sub(adres,p,p);
		if(znak=="/")then
			i=i+1;
		end;
	end;
	return i;
end;
function p.NazwaNadStrony(adres,numer)
	if((numer)and(numer==0))then return nil;end;
	if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
	local lens=#adres;
	local i=1;
	for p=1, lens,1 do
		local znak=mw.ustring.sub(adres,p,p);
		if(znak=="/")then
			i=i+1;
		end;
		if(i==numer)then
			return mw.ustring.sub(adres,1,p-1);
		end;
	end;
	return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
	if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
	krok=krok or 1;
	if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
	local lens=#adres;
	local i=1;
	local a=nil;local b=nil;
	for p=1, lens,1 do
		local znak=mw.ustring.sub(adres,p,p);
		if(znak=="/")then
			i=i+1;
			if(i==numer)then
				if(not a)then a=p+1;end;
			end;
			if(i==numer+krok)then 
				if(not b)then b=p-1;break;end;
			end;
		end;
	end;
	if(not a)then a=1;end;
	if(not b)then b=lens;end;
	return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
  local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
  local nazwa_jednostki=self.args["nazwa jednostki"];
  if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
  		local html_modul=require("Module:Html");
	    if(nazwa_jednostki)then
			self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true);
			self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true);
	    end;
	    local nazwy_modul=require("Module:Nazwy");
		local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
		local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
		local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
		
		pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
		pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
   		---
   		local techniczne_modul=require("Module:Techniczne");
   		local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
   		local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
    	pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
    	pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
        local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
        
        if(strona)then pelna_nazwa_jednostki=strona;end;
        
		local nazwy_modul=require("Module:Nazwy");
		self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
		self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
		self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
		self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
		self.parametry_woluminu=false;
		 
		local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
		if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
		local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
		if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
		local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
		if(not tab_lista_artykulow_w_ksiazce)then
			return;
		end;
		local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
		if(oryginalna_ksiazka)then
			self.nazwa_przestrzeni=oryginalna_ksiazka[1];
			self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
			self.nazwa_woluminu=oryginalna_ksiazka[3];
		end;
  else
  	  local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;	
	  self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  	  self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
	  self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
	  self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
	  self.parametry_woluminu=true;
  end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  local self_tab;
  if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
		if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
  			if(not tabela_listy_danych_analizy_ksiazki)then
	  			self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
  			end;
  			if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
  				local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
  				local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
  				local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
  		
  				local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
  		
	  			return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
	  		end;
		end;
  end;
  if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
		self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
  end;
  local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
  if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then 
  		return nil,nil,nil,nil,nil;
  end;
  local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
  if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then 
  		return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
  end;
  local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
  if(not tab_lista_artykulow_w_ksiazce)then 
  		return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
  end;
  local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
  return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
  local parametry_modul=require("Module:Parametry");
  self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
	return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
  local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;	
  local self_tab={};

  self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
  self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
  self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
		
  self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
  self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
  self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
  self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
  return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
   return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
   return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
	local stronicowyparser_modul=require("Module:StronicowyParser");
	local nazwy_modul=require("Module:Nazwy");
	local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
	local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
	local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
	return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
                						and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
                					or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
	p:AnalizujArgumentySzablonu(frame);
	p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
	local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
	if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
	local tab_naglowkow={};
	for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
        local rozdzial=tab_lista[1][1];
        local poziom_rozdzialu=tab_lista[1][2][1];
        local czy_centrowany=tab_lista[1][2][4];
        if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
        	table.insert(tab_naglowkow,rozdzial);
        end;
	end;
	self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
	return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
  self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
  self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
  if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
  self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
  self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
  local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
  return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
	self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
	self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
	if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
	self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
	self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
	local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
	return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
	self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
	return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
	self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
	return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
	self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
	self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
	return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
	local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
	local parametry_modul=require("Module:Parametry");
	return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
	p:AnalizujArgumentySzablonu(frame);
	local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
	if(not tab_lista_artykulow_w_ksiazce_spis)then
		p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
		tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
		spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
		inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
		dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
	end;
	if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
    local args=p:Args();
    local parametry_modul=require("Module:Parametry");
    local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
    
    local tab_artykulow=(not czy_naglowek) and {} or nil;
    
	local tab_listy_artykulow={};
	local tab_listy_artykulow_spis={};
  
	local czy_inne_spisy=false;
  
	local html_modul=require("Module:Html");
	  
	local nazwa_tabeli_danego_spisu_tresci=args["spis"];
	if(nazwa_tabeli_danego_spisu_tresci)then
		local techniczne_modul=require("Module:Techniczne");
		nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
		nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
   		nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};

		nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
		local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
		local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
		local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
		if(strona)then
			local nazwy_modul=require("Module:Nazwy");
			nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
		end;
	end;
	  
	local czy_dany_spis=nil; 
	  
	for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
		local poziom_rozdzialu=tab_lista[1][2][1];
  		local nazwa_spisu=nil;
		if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
			local spis=tab_lista[1]["spis"];
			nazwa_spisu=spis and spis[1] or nil;
			----
			if(not nazwa_tabeli_danego_spisu_tresci)then
				if(nazwa_spisu)then
					if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
					local spis_artykulow=tab_listy_artykulow["spis"];
					spis_artykulow[nazwa_spisu]={};
					tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
					czy_inne_spisy=true;
				else
					local dodatkowe=tab_lista[1]["dodatkowe"];
					if(dodatkowe)then
						tab_listy_artykulow["dodatkowe"]={};
						tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
						czy_inne_spisy=true;
					end;
				end;
			else
				if(nazwa_spisu)then
					if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
						czy_dany_spis=true;
					else
						if(czy_dany_spis)then 
							czy_dany_spis=nil;
							break;
						else
							czy_dany_spis=nil;
						end;
					end;
				end;
			end;
		end;
		if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
			local pomin_pozycje=true;
			for _,artykul_w_bazie in ipairs(tab_lista[2])do
				if((not pomin_pozycje)or(not nazwa_spisu))then
					local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
  					local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  					----
  					artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
  					----
  					if(czy_naglowek or (not tab_artykulow[artykul]))then
  						if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
  						local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
						local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
						local pelna_nazwa_ksiazki=czy_table_baza_artykulu and  artykul_w_bazie[1][4] or nil;
						table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
  					end;
				else
					pomin_pozycje=false;
				end;
			end;
		end;
	end;
	local stronicowyparser_modul=require("Module:StronicowyParser");
	local parametry_modul=require("Module:Parametry");
	
	--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
	
	if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
		or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
			and((not dodatkowe_artykuly)
				or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
	))then
		local tablica_spisu_glownego;
		if(not nazwa_tabeli_danego_spisu_tresci)then
			if(czy_inne_spisy)then
				local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
				local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
				tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
			else
				tablica_spisu_glownego=tab_listy_artykulow_spis;
			end;
		else
			tablica_spisu_glownego=tab_listy_artykulow_spis;
		end;
		local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
		return function()
			local wartosc=iter_glowny();
			if(not wartosc)then return nil;end;
			local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
	    	local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
	    	local nazwa=czy_table_wartosc and wartosc[2] or nil;
	    	local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
	    	local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
	    	return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
		end;
	end;
	local wykorzystane_spisy={};
	local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
	local czy_dodatkowe_zaanalizowane=false;
	local function IteratorMain(wartosc,numer)
		----
		local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
		local tabela_spisu=tabela_spisu_spis[wartosc];
		if(tabela_spisu)then
			if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
				tabela_spisu=nil;
			else
				wykorzystane_spisy[wartosc]=true;
			end;
		end;
		local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
		----
		local tak=nil;
		local iter2=nil;
		local function Iterator()
			local function IterMain()
				local wartosc=iter();
				local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
	    		if(not wartosc)then 
	    			if(numer~=0)then
	    				return nil;
	    			else
	    				local function InneSpisy()
	    					--if(aa<10)then return nil;end;
	    					local spis=iter_innych_spisow();
	    					if(not spis)then 
	    						if(czy_dodatkowe_zaanalizowane)then return nil;end;
	    						local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
	    						if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
	    						iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
	    						czy_dodatkowe_zaanalizowane=true;
	    						wartosc=iter();
	    						return true;
	    					end;
	    					local czy_table_spis=parametry_modul.TypeTable(spis);
	    					local spis_artykul=czy_table_spis and spis[1] or spis;
							if(not wykorzystane_spisy[spis_artykul])then
								wykorzystane_spisy[spis_artykul]=true;
								local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
								local tabela_spisu=tabela_spisu_spis[spis_artykul];
								if(tabela_spisu)then
									iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
									wartosc=iter();
									if(not wartosc)then 
										return InneSpisy();
									end;
								else
									return InneSpisy();
								end;
							else
								return InneSpisy();
							end;
							return true;
	    				end;
						local koniec=InneSpisy();
						if(not koniec)then return nil;end;
	    			end;
	    		end;
				----
	    		local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
	    		artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
	    		nazwa=czy_table_wartosc and wartosc[2] or nil;
	    		przekierowanie=czy_table_wartosc and wartosc[3] or nil;
	    		pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
	    		----
	    		artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
	    		----
	    		tak=true;
				iter2=IteratorMain(artykul,numer+1);
	    		return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;  
			end;
			if(not tak)then
	    		local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
	    		return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
	    	else
		    	local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
	    		if(not artykul)then 
	    			tak=nil;
	    			local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
	    			return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
	    		else 
	    			return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
	    		end;
	    	end;
		end;
		return Iterator;
	end;
	local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
	return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
	local frame=mw.getCurrentFrame();
	local nazwy_modul=require("Module:Nazwy");
	local techniczne_modul=require("Module:Techniczne");
	local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
	for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
		if(pelna_nazwa_ksiazki)then
			if(co_ma_wykrywac)then
				if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
					local czy_przekierowanie=pelna_nazwa_ksiazki[6];
					if(czy_przekierowanie)then
						local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
						if(pelna_nazwa_ksiazki[5])then
							if(nazwa_artykulu==przekierowanie)then
								local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
								return nazwa_artykulu_strony,1;
							end;
						else
							if((nazwa_artykulu==przekierowanie))then
								local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
								return nazwa_artykulu_strony,2;
							end;	
						end;
					else
						local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
						local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,};
						if(ile>0)then
							return nazwa_artykulu,3;
						else
							return nazwa_artykulu,4;
						end;
					end;
				end;
			end;
		else
			if(not co_ma_wykrywac)then
				local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
				if(przekierowanie)then
					if(nazwa_artykulu==przekierowanie)then
						local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
						return nazwa_artykulu_strony,1;
					else	
						local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
						if(nazwa_artykulu==nazwa_artykulu_strony)then
							return przekierowanie,2;
						end;
					end;
				else
					local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
					if(nazwa_artykulu==nazwa_artykulu_strony)then
						return nazwa_artykulu,3;
					end;
				end;
			end;
		end;
	end;
end;
function p.ObliczeniaInformacje(self,frame)	
	local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
	if (not iterator)then return nil;end;
	----
	self.tab_artykul={};
	----
	for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
		 table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
	end;
	self.len_tab_artykul=#self.tab_artykul;
	return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
	if(numer==0)then return tablica,0;end;
	local s=0;
	for i=#tablica,1,-1 do
		local artykul=tablica[i][1];
		local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
		if(numer~=numer_artykulu_w_bazie)then
			table.remove(tablica,i);
			s=s+1;
		end;
	end;
	return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
    local tab_artykul;local s;
    if(numer>0)then
   		local parametry_modul=require("Module:Parametry");
		tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
		tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
    else
		tab_artykul=self.tab_artykul;
		s=0;
   end;
   local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
   local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
   local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
   return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
    local tab_artykul;local s;
    if(numer>0)then
   		local parametry_modul=require("Module:Parametry");
		tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
		tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
	else
		tab_artykul=self.tab_artykul;
		s=0;
    end;
    local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
    local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
    local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
   return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	local szablonowe_modul=require("Module:Szablonowe");
 	local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
   		if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
   			or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
   		)then 
   			return nil,false;
   		end;
		local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
		if(not czy_powodzenie)then 
			return nil,false;
		end;
		nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
		return nazwa_szablonu,true;
 	end;
   	nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
	return nazwa_szablonu;
 end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
        if(lista_elementow_spisu_tresci==nil)then return nil;end;
        local twor_listy="";
        local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
        local poziom=1;
        local num={};
        
        local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
        
        local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
        
        for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
        	local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
        	local adres=element_w_tablicy[1][1];
        	local naglowek=element_w_tablicy[1][2];
        	
        	local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
        	if(czy_w_tym_szablony)then
        		local specjalne_modul=require("Module:Specjalne");
				adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
				naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
        	end;
        	adres=nazwa_strony_z_naglowkami.."#"..adres;
			----
        	if(licznik==1)then
        		   num[#num+1]=1;
                   twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
                else
                  if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
                  	   num[#num]=num[#num]+1;
                       twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
                  elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
                  	  num[#num+1]=1;
                  	  poziom=poziom+1;
                      twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
                      liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
                  elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
                  	   local num_length=#num;
                  	   for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do 
                  	   	   table.remove(num);
                  	   end;
                  	   num[#num]=num[#num]+1;
                  	   
                  	   local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
                  	   poziom=poziom-roznica_poziomow;
                  	   
                       twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
                                             .."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
                       liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
                  end;
               end;	
        end;
        twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
        return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
		local frame=frame or mw.getCurrentFrame();
		
		local parametry_modul=require("Module:Parametry");
		local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
		local bez_przypisow=PobierzParametr("bez przypisów");
		bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
		
	    local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
	    
	    local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
	    
	    if(not toc_czy_tocramka)then
	    	local czy_ukryte=twor_listy;
        	local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
        	local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc  or "43.75rem";
        	local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc  or "100%";
        	local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci  or "Spis treści";
        	local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
        	
			local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
        	
        	local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
        	local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
        	local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
        	local maxwidth=PobierzParametr("max-width");
        	local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
        	
        	twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
        	local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:0.875rem;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|tytuł=<div class="tytuł_spisu_treści" style="text-align:left;font-size:0.875rem;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125rem;">'..spis_tresci..'</div>|spis='..twor_listy..'|funkcja='..funkcja..'|klasa=spis_treści}}';
        	local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
	    	return rozwiniety_wikikod;
	    else
	    	return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:1.8rem;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:10px">'..twor_listy..'</div>') or "");
	    end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
	if(obiekt~="SZABLON")then return;end;
	--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
	--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
	----
	local szablonowe_modul=require("Module:Szablonowe");
	----
	local function GlownaFunkcja(wywolanie,obiekt,kod)
    	local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
    		__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie);
    
    		if(__Funkcja2)then
    			__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
    		end;
    	end);
	end;
    GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
	local parametry_modul=require("Module:Parametry");
	if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
		if(not czy_naglowek)then
			return artykul[1];
		else
			return artykul;
		end;
	end;
	return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
	local parametry_modul=require("Module:Parametry");
	local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
	if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
	return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
	local parametry_modul=require("Module:Parametry");
	if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
	return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
	local parametry_modul=require("Module:Parametry");
	if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
	return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
	local parametry_modul=require("Module:Parametry");
	parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
	naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
	return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
	local parametry_modul=require("Module:Parametry");
	if(parametry_modul.TypeTable(tab_artykul))then
		if(pomin_link or tab_artykul["LINK"])then
			local nazwa_artykulu_strony=tab_artykul[1];
			if(naglowek)then
				local parametry=tab_artykul[2];
				local naglowek=tab_artykul[3];
				return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
			else
				return nazwa_artykulu_strony;
			end;
		else
			return tab_artykul;
		end;
	else
		return tab_artykul;
	end;
end;
function p.DekodowanieTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,czy_nie_odstepy)
	if(not tekst)then return tekst;end;
	local szablonowe_modul=require("Module:Szablonowe");
	tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
	local html_modul=require("Module:Html");
	tekst=html_modul.DecodeHtml(tekst,true,nil,nil,czy_nie_odstepy);
    return tekst;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
	----
	local szablonowe_modul=require("Module:Szablonowe");
	local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
	if(not czy_kodowanie)then return nil,true;end;
	if(not czy_uwzgledniac_modyfikatory)then
		local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
		if(czy_modyfikatory)then return nil,false;end;
	end;
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
    local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
    local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
    ---
    local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
    local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza;
    local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
    ---
    local techniczne_modul=require("Module:Techniczne");
    local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
		if(obiekt=="SZABLON")then
			local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
				if((tab_szablony[nazwa_szablonu])
					or(tab_naglowki[nazwa_szablonu])
					or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) 						
					or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
	 				or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
	 				or(tab_szablony_strona_start[nazwa_szablonu])
				)then return nil;end;
				for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
	 				if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
	 					   or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
	 				)then
	 					return nil;
	 				end;
				end;
				return true;
			end);
			return wynik;
		end;
		return true;
	end);
	local frame=mw.getCurrentFrame();
	nazwa_szablonu=frame:preprocess(nazwa_szablonu);
	return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
	if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
	local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
	if(nazwa_linku)then return nazwa_linku,true;end;
	
	local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
	local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
	if((link)and(link=="L"))then
		if((ustep=="")or(ustep=="u"))then
			prze=litery_przestrzeni_kolidacja[prze] or prze;
			local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
			if(przez_literowa)then 
				local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
				return  nazwa,true;
			end;
			if(ustep=="")then
				if(prze=="u")then return "LinkUstęp"..dwa,true;end;
				if(prze=="o")then return "LinkOgólne"..dwa,true;end;
			end;
		else
			local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
			if(projektowe_literowe)then
				ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
				local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
				if(prze_literowa)then
					return "Link"..projektowe_literowe..prze_literowa..dwa,true;
				end;
			end;
		end;
		return nazwa_szablonu,false;
	else
		local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
		if((link)and(link=="L"))then
			if((ustep=="")or(ustep=="u"))then
				local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
				if(projektowe_literowe)then
					prze=litery_przestrzeni_kolidacja[prze] or prze;
					local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
					if(prze_literowa)then
						return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
					end;
				end;
			end;
		end;
		return nazwa_szablonu,false;
	end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
		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.tablica_analizy_linku;
			end;
		end;
	end;
	nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
	local function AnalizaSzablonowaLinku()
		local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
		if(not nazwa)then return;end;
		if(dwa=="")then dwa=nil;else dwa=true;end;
		local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
		----
		local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
		local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
		local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
		----
		local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
		nazwa=nazwa_nowa or nazwa;
		local czy_ustep=ustep_nowa and true or false;
		
		local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
		if(przestrzen)then
			local przestrzenne=tab_przestrzen[przestrzen];
			if(przestrzenne)then
				return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
			end;
		end;
		----
		local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
		if(jezyk and przestrzen)then
			local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
			if(jezykowe and przestrzenne)then
				return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
			end;
		----
			local projektowe=tab_projektowe[jezyk];
			if(projektowe and przestrzenne)then
				return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
			end;
		end;
		-----
		local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
		if(jezyk and projekt and przestrzen)then
			local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
			if(jezykowe and projektowe and przestrzenne)then
				return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
			end;
			local projektowe=tab_projektowe[jezyk..projekt];
			if(projektowe and przestrzenne)then
				return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
			end;
		end;
		return nil;
	end;
	local wynik=AnalizaSzablonowaLinku();
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
		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.tablica_analizy_linku=wynik;
	end;
	return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,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[-7];
		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.szereg_znakowy;
			end;
		end;
	end;
	--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
	local nazwa_zamiast_linku;
	nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
	if(nazwa_szablonu=="Sekcja referencyjna")then
		local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
		if(nazwa)then return nazwa;end;
		local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
		local parametry_modul=require("Module:Parametry");
		local czy_strona=parametry_modul.CzyTak(strona) and true or false;
		if(not czy_strona)then 
			 local nazwy_modul=require("Module:Nazwy");
			 strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
		end;
		local ustep=tabela_parametrow_szablonu["ustęp"];
		local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
		local czy_ustep=parametry_modul.CzyTak(ustep);
		if(not czy_strona)then czy_ustep=not czy_ustep;end;
		nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
	elseif(nazwa_szablonu=="Link wewnętrzny")then
		nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
	elseif(nazwa_szablonu=="LinkOgólne")then
		nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
	elseif(nazwa_szablonu=="SpisTreści")then
		local nazwa=(tabela_parametrow_szablonu["nazwa"] 
								or tabela_parametrow_szablonu[3] 
								or tabela_parametrow_szablonu["artykuł"]
								or tabela_parametrow_szablonu[1]);
		if(nazwa)then
			local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
			if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
			nazwa_zamiast_linku=nazwa..dodatek;
		end;
	elseif(nazwa_szablonu=="LinkURL")then
		local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
		if(nazwa)then
			nazwa_zamiast_linku=nazwa;
		else
			local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
			nazwa_zamiast_linku=strona;
		end;
	end;
	if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
		if((tablica_danych_parametrow_szablonu_strony)and(kod))then
			if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
			local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
			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.szereg_znakowy=nazwa_zamiast_linku;
		end;
	end;
	return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,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[-8];
		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.szereg_znakowy;
			end;
		end;
	end;
	nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
	local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
	if(tab_spis)then
		local czy_true=tab_spis[1];
		local parametr;local numer;
		if(czy_true)then
			parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
		else
			parametr=tabela_parametrow_szablonu[tab_spis.link];
			local numer=tabela_parametrow_szablonu[tab_spis.numer];
			parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
		end;
		if((parametr)and(parametr~=""))then
			if((tablica_danych_parametrow_szablonu_strony)and(kod))then
				if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
				local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
				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.szereg_znakowy=parametr;
			end;
		end;
		return parametr;
	end;
	return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
	local numer;
	if((obiekt)and(kod))then
		if(obiekt=="SZABLON")then 
			numer=-2;
		elseif(obiekt=="LINKW")then
			numer=-3;
		elseif(obiekt=="LINKZ")then
			numer=-4;
		end;
		if((tablica_danych_parametrow_szablonu_strony)and(kod))then
			local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
			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[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
				end;
			end;
		end;
	end;
	local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
	if((obiekt)and(kod))then
		if((tablica_danych_parametrow_szablonu_strony)and(kod))then
			if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
			local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
			if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
			tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
		end;
	end;
	return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
	----
    local parametry_modul=require("Module:Parametry");
    local wiki_modul=require("Module:Wiki");
	local pozycja_artykulu=nil;local nazwa=nil;
	local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
	if(not czy_tabela_do_parsowania_artykulu)then
		pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$"); 
		if(not((pozycja_artykulu)and(nazwa)))then
			pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
		end;
	end;
	local html_modul=require("Module:Html");
	local nazwy_modul=require("Module:Nazwy")
	local techniczne_modul=require("Module:Techniczne");
   	local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
	local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
        ----
        --local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
        --local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
        ----
        strona=html_modul["NazwaStronyAdresu"](strona,true);
        strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
   		local techniczne_modul=require("Module:Techniczne");
    	strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
        ----
        local tabela_nazw_strona={};
        local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
        local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
        local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
        local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
        
        --if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
        --[[else]]
        if(tab_nazwa_spisow_przekierowaniowych)then
        	local techniczne_modul=require("Module:Techniczne");
        	local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
        	local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
        		local tabela_nazw_przekierowanie={};
        		----
        		local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
        		local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
        		local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
        		local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
        		----
        		local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true)) or nil);
        		local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true)) or nil);
        		----
        		if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
        			local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
        			if(czy_inne_ksiazka)then
        		   		if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
        		   			tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
        		   		end;
        		   		if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
        		   			tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
        		   		end;
        		   		if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
        		   			tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
        		   		end;
        			end;
        		   	return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
        		 else
        		 	if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
	        		   	 return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
	        		  else	        		  	         		   	
	        		  	 return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
	        		  end;
        		 end;
        	end;
        	if(strona_przekierowania)then
        		return DaneRozwazone(strona_przekierowania,nil,true);
        	else
        		if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
        			and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
        				return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
        		end;
        		local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
        		local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
        		if(strona_przekierowania)then
        			 return DaneRozwazone(strona_przekierowania,true,false);
        		end;
        	end;
        end;
        if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
        	  return {nazwa_artykulu_strony,parametry,naglowek,};
        end
        return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
	end;
	---
	local pudelko_modul=require("Module:Pudełko");
	local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
	local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
	local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
		if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
			if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
				----
				pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil)
                parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
                naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
                ----
                local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
                parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true);
        		naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true);
        		pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true);
                ----
                local czy_pozycja_artykulu=pozycja_artykulu;
    	    	local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
        		if(pozycja_artykulu)then
        			return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
        		else
        			local nazwy_modul=require("Module:Nazwy");
        			--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
        			strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
        			local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
        			
        			if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
        				or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
        					or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
        						or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
        			)then
        				return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
        			elseif(
        					czy_link
        					or parametry_modul.CzyTak(klucz_projektu) 
        					or parametry_modul.CzyTak(kod_jezyka) 
        					or parametry_modul.CzyTak(kod_projektu) 
        					or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
        			)then
        				 return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
        			end;
        		end;
        	else
        		local pozycja_artykulu_stara=pozycja_artykulu;
        		local pudelko_modul=require("Module:Pudełko");
        		local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
        		local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
        		local wiki_modul=require("Module:Wiki");
        		local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
        		
        		pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
        		local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
				local nazwa_strony_linku;
				local uzyskana_nazwa_strony_linku;
				if(czy_nie_dwukropek)then
					nazwa_strony_linku=pozycja_artykulu;
				else
					local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
					nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
					uzyskana_nazwa_strony_linku=nazwa_strony_linku;
				end;
				----
        		parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
                naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
				----
				local html_modul=require("Module:Html");
				local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true);
        		local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true);
        		nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true);
        	    local nazwy_modul=require("Module:Nazwy");
				----
				local tabela_nazw_artykul={};
				local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
				local nazwa_kanoniczna_przestrzeni;
				local biezaca_wiki;
				if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
					biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
				else
					biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
				end;
				
				local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
				if(biezaca_wiki)then
					local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
					if(nazwa_przestrzeni)then
						if((nazwa_przestrzeni==nazwy_np_modul.Main)
							   or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
							      or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
							        or(nazwa_przestrzeni==nazwy_np_modul.User)
					    )then
    	    				local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
    	    				if(pozycja_artykulu)then
								return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
							else
								nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
								return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
							end;
					    elseif(
					    		czy_link 
        						or (nazwa_strony_linku~=pozycja_artykulu)
					    		or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
					    )then 
							nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
							return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
						end;
					else
						return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
					end;
				else
					nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
					nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
					if(nazwa_kanoniczna_przestrzeni)then
						if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
							   or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
							     or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
							    	or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
					    )then
							return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
						else
							return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
						end;
					else
						return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
					end;
				end;
				return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
			end;
    	else
    		return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
		end;
	end;
	---
    local czy_pozycja_artykulu=nil;
	if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
		local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
		if(link_szablon)then
				local szablonowe_modul=require("Module:Szablonowe");
				return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
					nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);			
            		if(nazwa_szablonu=="SpisTreści")then
                	    pozycja_artykulu=tabela_parametrow_szablonu[1];
                	    if(not pozycja_artykulu)then
                	    	 return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                	    end;
                	    ------
                    	pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
                    	------
                	    return {pozycja_artykulu,nil},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
            		elseif(nazwa_szablonu=="Sekcja referencyjna")then
                		local strona=tabela_parametrow_szablonu[1] or tabela_parametrow_szablonu["strona"];
                		--if(not strona)then
                    	--	return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                    	--end;
                		local podstrona=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["podstrona"];
                		local pozycja_artykulu;
                		if(not podstrona)then
                			local nazwy_modul=require("Module:Nazwy");
                    		pozycja_artykulu=strona or "";
                    	else
                    		pozycja_artykulu=(((podstrona) and (podstrona~="")) and (podstrona..(((strona)and(not mw.ustring.match(strona,"^#"))) and "/" or "")) or "")..(strona or "");
                    	end;
                    	local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
                    	------
                    	pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
        				----
        				local html_modul=require("Module:Html");
        			    local parametry_ref=html_modul["ParametryStronyAdresu"](pozycja_artykulu,true);
        				local naglowek_ref=html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true);
        				----
        				local pozycja_artykulu_ref=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true);
                    	------
                    	return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu_ref,parametry_ref,naglowek_ref),nazwa},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                	else
                    	if(nazwa_szablonu=="Link wewnętrzny")then
                    		local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
                    		if(not pozycja_artykulu)then
                    			return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                    		end;
                    		local nazwa=tabela_parametrow_szablonu["nazwa"];
                    		local naglowek=tabela_parametrow_szablonu["nagłówek"];
                    		
                    		local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
                    		local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
                    		local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
                   			local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
                    		return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
                    	else
                    		local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
                    		if(nazwa_szablonu_nowa)then
                    			local pozycja_artykul;
                    			local strona=tabela_parametrow_szablonu[1];
                    			if(not strona)then
                    				return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                    			end;
                    			local czy_dwa=(dwa~="")and true or false;
                    			local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
                    			local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
                    			local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
                    			local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
                    			local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"] 
                    											or tabela_parametrow_szablonu["przestrzeń"]
                    											or tabela_parametrow_szablonu["m"];
                    			if(miano_przestrzeni_nazw)then
                    				pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
                    			else
                    		    	pozycja_artykulu=strona;
                    			end;
                   				local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
                    			return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
                    		else 
                    			local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
                    			if(dane_szablonu_linku)then
                    				local pozycja_artykulu=tabela_parametrow_szablonu[1];
                    				if(not pozycja_artykulu)then
                    					return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
                    				end;
                    				local nazwa_przestrzeni=dane_szablonu_linku[1];
                    				local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
                    				local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
                    				local klucz_projektu;local kod_jezyka;local kod_projektu;
                    				if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
                    					klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
                    					kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
                    					kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
                    				else
                    					kod_jezyka=dane_szablonu_linku[3];
                    					kod_projektu=dane_szablonu_linku[2];
                    				end;
                    				local czy_nie_dwukropek;
                    				if(nazwa_przestrzeni=="")then
                    					czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
	                    			elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
    	                				czy_nie_dwukropek=true;
        	            			else
            	        				czy_nie_dwukropek=false;
	            	        		end;
    	            	    		return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
                    			elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
                    				return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
                    			end;
                    		end;
                    	end;
                    end;
				end);
        else
        	local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
        	if(nazwa_strony)then
        		 nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
        		 return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
        	else
        		local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
        		if((nazwa_strony)and(nazwa_linku))then
        			nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
        			return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
        		end;
        	end;
		end;
    elseif(not czy_tabela_do_parsowania_artykulu)then
    	local specjalne_modul=require("Module:Specjalne");
    	if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
    		return nil,nil,false,nil,true;
    	end;
    	local parametry_modul=require("Module:Parametry");
        --pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
        local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
        if(czy_pozycja_artykulu)then
        	if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
        		czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
    	        return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
    	    else
    	    	pozycja_artykulu=nil;
    	    	return {pozycja_artykulu,nazwa},1,false,nil,false;
    	    end;
         else
         	local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
         	return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
        end;
    else
    	local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
    	local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
    	local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
     	return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
	end;
end;
return p;