Moduł:StronicowyParser/ZbieranieDanychStron

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)
	return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)
    self.tabela_listy_danych_analizy_ksiazki={};
    
    self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron={};
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    
    self.tabela_listy_danych_analizy_ksiazki.problemy=nil;
    self.tabela_listy_danych_analizy_ksiazki.licencja={};
    
    local nazwy_modul=require("Module:Nazwy");
    local ksiazkowe_modul=require("Module:Książkowe");
    
    local function DaneNazw(pelna_nazwa_strony)
    	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony);
    	local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony);
    	local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony);
    	local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony);
    	return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
    end;
    local strona_aktualna=ksiazkowe_modul["PełnaNazwaArtykułu"]();
    local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona_aktualna);
    local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")
                                                ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")
                                                        ..nazwa_ksiazki;
    local pelna_nazwa_ksiazki_ustawienia="Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki;
    
    local techniczne_modul=require("Module:Techniczne");
    
    local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki_ustawienia.."/config",};
    if(ile>0)then
    	local frame=mw.getCurrentFrame();
    	local szablonowe_modul=require("Module:Szablonowe");
    	local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki_ustawienia);

        local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
        local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
        if(not mw.ustring.match(ksiazka,"^%s*$"))then
        	local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
        	local html_modul=require("Module:Html");
        	strona=html_modul.DecodeHtml(strona,true);
        	local techniczne_modul=require("Module:Techniczne");
        	strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=strona_aktualna,};
        	local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,};
        	if(ile>0)then
        		strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona);
        		if(strona~=strona_aktualna)then
        			local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
        			nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona);
        			local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=DaneNazw(strona_aktualna);
        			self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni=aktualna_nazwa_przestrzeni;
        			self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki=aktualna_nazwa_przestrzeni_ksiazki;
        			self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki=aktualna_nazwa_ksiazki;
    				self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu=aktualna_nazwa_artykulu;
    				if((aktualna_nazwa_przestrzeni~=nazwa_przestrzeni)
    					or(aktualna_nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki)
    						or(aktualna_nazwa_ksiazki~=nazwa_ksiazki)
    							or(aktualna_nazwa_artykulu~=nazwa_artykulu)
    				)then
    				    local zastepcza=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępcza",}};
    				    local parametry_modul=require("Module:Parametry");
    				    self.tabela_listy_danych_analizy_ksiazki.alternatywna=parametry_modul.CzyTak(zastepcza);
    				    if(not self.tabela_listy_danych_analizy_ksiazki.alternatywna)then
    						self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true;
    					end;
    				end;
        		end;
        	end;
        end;
    end;
    
    local tablica_zmiennych={};
    tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};
    tablica_zmiennych.linkobiekt={};
    local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tablica_zmiennych);
    local parametry_modul=require("Module:Parametry");
    if(parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki))then
    	p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
    end;
    return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.CzyJestTakiProblemowyElement(self,element,element2,element3)
	if(not element2)then
		local problemy=self.tabela_listy_danych_analizy_ksiazki.problemy;
		return ((problemy and problemy[element]) and true or false);
	else
		if(not element3)then
			local problemy=self.tabela_listy_danych_analizy_ksiazki.problemy;
			local problemy_element=problemy and problemy[element];
			return ((problemy
						and problemy_element
							and problemy_element[element2]
					) and true or false);
		else
			local problemy=self.tabela_listy_danych_analizy_ksiazki.problemy;
			local problemy_element=problemy and problemy[element];
			local problemy_element_element2=problemy_element and problemy_element[element2]
			return ((problemy
						and problemy_element
							and problemy_element_element2
								and problemy_element_element2[element3]
					) and true or false);
		end;
	end;
end;
function p.UstawTakiProblemowyElement(self,element,element2,element3)
	if(not self.tabela_listy_danych_analizy_ksiazki.problemy)then
		self.tabela_listy_danych_analizy_ksiazki.problemy={};
	end;
	local problemy=self.tabela_listy_danych_analizy_ksiazki.problemy;
	if(not element2)then
		problemy[element]=0;
	else
		if(not problemy[element])then
			problemy[element]={};
		end;
		local problemy_element=problemy[element];
		if(not element3)then
			problemy_element[element2]=0;
		else
			if(not problemy_element[element2])then
				problemy_element[element2]={};
			end;
			local problemy_element_element2=problemy_element[element2];
			problemy_element_element2[element3]=0;
		end;
	end;
end;
function p.DodawanieProblemowegoElementuDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki;
	if(not tabela_listy_danych_analizy_ksiazki.problemy)then 
		tabela_listy_danych_analizy_ksiazki.problemy={};
	end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki.problemy;
	
	if(not tabela_listy_danych_analizy_ksiazki["problemy książkowe"])then tabela_listy_danych_analizy_ksiazki["problemy książkowe"]={};end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki["problemy książkowe"];
	
	if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
	
	if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni_ksiazki])then tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni_ksiazki]={}; end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni_ksiazki];
	
	if(not tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki])then tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]={}; end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki];
		
	if(not tabela_listy_danych_analizy_ksiazki[rodzaj_problemu])then tabela_listy_danych_analizy_ksiazki[element_tablicy]={}; end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
	
	if(nazwa_obiektu)then
		if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={}; end;
	end;
end;
function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow)
	----
	local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_obiektow_strony_dany_modul_uzyskany));
	----
	if(not nazwa_modulu_aktualna_czy_biezaca)then
		if czy_artykul_korzystany then
				local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
	   			local nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
	   			local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
	   			local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
	   			local nazwy_modul=require("Module:Nazwy");
	   			nazwa_modulu_aktualna_czy_biezaca=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_aktualna_czy_biezaca,nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca,nazwa_ksiazki_aktualna_czy_biezaca,nazwa_artykulu_aktualna_czy_biezaca);
	   	else
   			nazwa_modulu_aktualna_czy_biezaca=nazwa_strony;
		end;
	end;
    local html_modul=require("Module:Html");
    nazwa_strony=html_modul.EncodeId(nazwa_strony);
    -----
    local tablica_spisu_tresci=nil;
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local szablonowe_modul=require("Module:Szablonowe");
    local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
    local uzyskany_w_wyniku_parsowania;    
    local tablica_powtarzajacych_sie_elementow={};
    local elementy_linku=nil;
    local frame=mw.getCurrentFrame();
    local parametry_modul=require("Module:Parametry");
    local techniczne_modul=require("Module:Techniczne");
    local html_modul=require("Module:Html");
    
    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 stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    ----	
    if(czy_kodowanie)then
    	tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,nil,function(szablon,obiekt,kod)
    		if((obiekt=="SZABLON")or(obiekt=="ZNACZNIK")or(obiekt=="WIKITABELA"))then
    				local rozdzial=mw.ustring.match(szablon,"\n(=+[^\n]+=+)[^%S\n]*\n");
        			if(rozdzial)then
        				local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomWprowadzeniaTekstu(rozdzial);
        				if(naglowek)then
        					return true;
        				end;
        			end;
				end;
    	end);
    end;
    
    local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);

    local numeracja;
	----
	local KtorySzablonMaZwracacKategorieNaglowek=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[1] or nil;
	local KtorySzablonMaZwracacKategorieTekst=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[2] or nil;
	----
    local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)
        --local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
        local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
        if(jest_naglowkuj_w_tekscie_rozdzialu)then
        	--local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
        	local numeracja_aktualna=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1];
        	----
        	if(numeracja_aktualna)then
        		numeracja_aktualna=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany);
				numeracja_aktualna=frame:preprocess(numeracja_aktualna);
				numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true);
        		table.insert(numeracja,numeracja_aktualna);
        		----
        		if(powtorka>=1)then 
            		 if(self.tabela_listy_danych_analizy_ksiazki)then
            	 		KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania);
            		 end;
	    		end;
        	end;
        	powtorka=powtorka+1;
        end;
		return powtorka;
    end;
    ----
    local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
    ----
    local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)  
        local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
        local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu];
        if(jest_naglowkuj_w_tekscie_rozdzialu)then
            local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
            local numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
            if(numeracja)then
            	numeracja=frame:preprocess(numeracja);
            	KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu);
             end;
        end;
    end;
    
    local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or "");
    
    for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
    	numeracja={};
    	if((self)and(czy_kodowanie))then
			local tekst_rozdzialu_naglowka=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,SzablonNaglowkujWTekscieRozdzialu);
    	end;
        local powtorka=0;
        
        local czy_szablony=nil;
        local function SzablonyWywolywane(szablon,obiekt,kod)
        	  if(obiekt=="SZABLON")then
            		local parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
            		powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania);
            		if(tab_naglowki[nazwa_szablonu_wywolania])then 
            			return "";
            		elseif(tab_szablony[nazwa_szablonu_wywolania])then 
            			czy_szablony=true;
            			if(not czy_artykul_korzystany)then
            				parametry_wywolania_szablonu["nazwa przestrzeni nazw"]=parametry_wywolania_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
            				parametry_wywolania_szablonu["nazwa jednostki"]=parametry_wywolania_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""))
            				if(self)then
            					if(mw.ustring.match(nazwa_szablonu_wywolania,"^Link"))then
            						p.ZbieranieKontenerowychInformacjiReferencji(self,parametry_wywolania_szablonu,nazwa_modulu_aktualna_czy_biezaca);
            					else
            						p.ZbieranieKontenerowychInformacji(self,parametry_wywolania_szablonu);
            					end;
            				end;
            			end;
						return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu_wywolania,parametry_wywolania_szablonu,modyfikatory_wywolania,true);
            		end;
            		return szablon;
        	  end;
        	  return szablon;
        end;
        
        local function SzablonyWywolywaneOgolny(naglowek)
        	local naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,SzablonyWywolywane);
        	return naglowek;
        end;
        if((self)and(czy_kodowanie))then
        	naglowek=SzablonyWywolywaneOgolny(naglowek);
        end;
        --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny);
        
        --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>","");
        naglowek=frame:preprocess(naglowek);
        local specjalne_modul=require("Module:Specjalne");
        naglowek=specjalne_modul["UsuńKomentarze"](naglowek);
        naglowek=specjalne_modul["UsuńKategorie"](naglowek);
        naglowek=specjalne_modul["UsuńWywołaniaPlików"](naglowek);
		naglowek=specjalne_modul["UsuńInterwiki"](naglowek);
		naglowek=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](naglowek);
		naglowek=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](naglowek);
        ---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
        
        local nazwa_rozdzialu_w_artykule=specjalne_modul["UsuńSzablonyStylów"](naglowek);
		nazwa_rozdzialu_w_artykule=specjalne_modul["UsuńZnaczniki"](nazwa_rozdzialu_w_artykule);
		
		if(not czy_szablony)then
			nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"&#(%d+);",function(s) return mw.ustring.char(s);end);
        	nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[{}|<>=]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
        end;
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
        naglowek,_=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod) return "";end);
        naglowek,_=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod)
        	if(not wzory_zamiast_kodow)then
        		return szablonowe_modul[((nazwa_strony)and(nazwa_strony=="")) and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod);
        	elseif(not czy_artykul_korzystany)then
        		if(tablica_obiektow_strony_danych_kodow_specjalnych_modul)then
        			if(tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then
        				local kod=tonumber(kod);
        				local szablon=tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][kod];
        				if(szablon)then
        					szablon=frame:preprocess(szablon);
        					return szablon;
        				end;
        			end;
        		end
        	end;
        	return szablonowe_modul[czy_artykul_korzystany and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod);
        end);
        nazwa_rozdzialu_w_artykule,_=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod) 
        	return "&#91;"..((obiekt~="") and (obiekt.." ") or "")..kod.."&#93;";
        end);
        nazwa_rozdzialu_w_artykule,_=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod)
        	return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod);
        end);
        --nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
        local numer_tego_samego_naglowka=1;
        --local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
            
        local numer_tego_samego_naglowka=1;
        for s=1,#tablica_powtarzajacych_sie_elementow,1 do
            local element=tablica_powtarzajacych_sie_elementow[s];
            if(element==nazwa_rozdzialu_w_artykule)then
                numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
            end;
        end;
  
        if(numer_tego_samego_naglowka==1)then
            elementy_linku={nazwa_rozdzialu_w_artykule,naglowek};
        else
            elementy_linku={nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
        end;
        if((obiekty)and(numeracja))then
        	for _,value_numeracja in ipairs(numeracja)do
            	obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}};
            end;
        end;
        if((poziom_rozdzialu or 0)>0)then
        	local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
        	tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;  
        	if(tablica_spisu_tresci==nil)then 
        		tablica_spisu_tresci={};
        		tablica_spisu_tresci.nazwa_strony=nazwa_strony_z_naglowkami;
        	end;
        	tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
        end;
    end;
    if(self)then
    	if(czy_artykul_korzystany)then
			if(not p.CzyJestTakiProblemowyElement(self,"naglowek_tekscie_rozdzialu_w_stronie_korzystanej"))then
				local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
	 			if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
	 				return tablica_spisu_tresci;
	 			end;
	 			local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
	 			SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
	 		end;
		end;
	end;
    return tablica_spisu_tresci;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie)
    local lista_dwuelementowa={};
    local szablonowe_modul=require("Module:Szablonowe");
    kod_uchwytu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(kod_uchwytu,nil,tablica_obiektow_strony_dany_modul_uzyskany);
    local frame=mw.getCurrentFrame();
	kod_uchwytu=frame:preprocess(kod_uchwytu);
	local html_modul=require("Module:Html");
	kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
	KtorySzablonMaZwracacKategorie(kod_uchwytu)
    lista_dwuelementowa[1]=kod_uchwytu;
    local parametry_modul=require("Module:Parametry");
    if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then 
        if(not (p.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then 
       			p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
		end;
       	tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
    end;
    table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie)
	local kod_uchwytu=nil;
	if(tabela_parametrow_szablonu["uchwyt"])then 
		local parametry_modul=require("Module:Parametry");
        kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
    elseif(tabela_parametrow_szablonu[numer_numeracji])then
        local parametry_modul=require("Module:Parametry");
		kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
	end;
	if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then 
		p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
	end;
end;
function p.CzyJestTakiElementTabeliProblemu(self,element, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	local parametry_modul=require("Module:Parametry");
	if(not self.tabela_listy_danych_analizy_ksiazki.problemy)then return false;end;
  	local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy["problemy książkowe"];
  	if(not tabela_problemow)then return false;end;
  	local tablica_przestrzeni=tabela_problemow[nazwa_przestrzeni];
  	if(not tablica_przestrzeni)then return false;end;
	local tablica_nazwa_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
	if(not tablica_nazwa_przestrzeni_ksiazki)then return false;end;
  	local tablica_nazwy_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
  	if(not tablica_nazwy_ksiazki)then return false;end;
  	local tab_element=tablica_nazwy_ksiazki[element];
  	if(not tab_element)then return false;end;
  	return true;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
	if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
		if(nazwa_artykulu=="")then return;end;
  		local czy_element_wystepuje_w_tablicy=false;
  		local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
		if(tablica_przestrzeni_wszystkiego)then
			local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
			if(tabela_przestrzeni_ksiazek)then
				local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
				if(tabela_ksiazek)then
					local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
					if(tab_ksiazki)then
						if(tab_ksiazki.spis)then
							czy_lista_niepusta=true;
				    		for _,tab_value1 in ipairs(tab_ksiazki.spis)do
				    			if(tab_value1[2])then
				    				for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
  										if(nazwa_artykulu1[1]==nazwa_artykulu)then
  	                						czy_element_wystepuje_w_tablicy=true;
  	                						break;
  	                					end;
  	    							end;
				    			end;
				    			if(czy_element_wystepuje_w_tablicy)then break;end;
				    		end;
				    	end;
				    end;
                  end;
  	    	end;
		end;
    	if(not czy_element_wystepuje_w_tablicy)then 
        	if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
        			 or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
        			       or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
        			            or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
        		if(not (p.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
	            	p.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	            end;
        	elseif(not p.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
       			if(not (p.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
            			p.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
        		end;
    		end;
    	end;
    end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
  local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
  local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
  local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
  if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
  		if(not p.CzyJestTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,1))then
	 		p.UstawTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,1);
		end;
  end;
  if(czy_artykul_z_tylko_odstepami_lub_pusty)then 
		if(not p.CzyJestTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,2))then
	 			p.UstawTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,2);
 		end;
  end;
  if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
		if(not p.CzyJestTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,3))then
			p.UstawTakiProblemowyElement(self,"puste_parametry_szablonow_stronicowych_linkujacych",nazwa_obiektu,3);
		end;
  end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie)
   local nazwa_artykulu,pelna_nazwa_ksiazki,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true);
   
   local ksiazkowe_modul=require("Module:Książkowe");
   pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
   nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
  
   local strona;
   if((not nazwa_przestrzeni) or (not nazwa_przestrzeni_ksiazki) or (not nazwa_ksiazki) or (not nazwa_artykulu))then
   		local parametry_modul=require("Module:Parametry");
		strona=pelna_nazwa_ksiazki..(parametry_modul.CzyTak(nazwa_artykulu) and ("/"..nazwa_artykulu) or "");
		local nazwy_modul=require("Module:Nazwy");
		strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona);
   end;
   
   local nazwy_modul=require("Module:Nazwy");
   local nazwa_przestrzeni=nazwa_przestrzeni or nazwy_modul["NAZWAPRZESTRZENI"](strona);
   local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona);
   local nazwa_ksiazki=nazwa_ksiazki or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona);
   local nazwa_artykulu=nazwa_artykulu or nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
   if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
   local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
	local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
	local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
	if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
	local parametry_modul=require("Module:Parametry");
	if(nazwa_jednostki and not parametry_modul["CzyTakCiąg"](nazwa_jednostki))then return;end;
	
	local szablonowe_modul=require("Module:Szablonowe");
	if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
		 or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
	)then return;end;

	local nazwy_modul=require("Module:Nazwy");
	local ksiazkowe_modul=require("Module:Książkowe");
	local html_modul=require("Module:Html");
	if(nazwa_jednostki)then
		nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
	end;
	
	local nazwa_jednostki=(nazwa_jednostki
		                         and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") 
		                            or nil
		                 ) or ksiazkowe_modul["NazwaArtykułu"]();
	if(nazwa_przestrzeni)then
		nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
	end;
	local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"]();
	
	local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
	local techniczne_modul=require("Module:Techniczne");
    strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
	
	strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona);
	
    local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
    local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona);
    local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona);
    local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
    if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
	local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
   local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
   local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
   local parametry_modul=require("Module:Parametry");
   local nazwy_modul=require("Module:Nazwy");
   local html_modul=require("Module:Html");
   if(nazwa_artykulu)then 
   	    nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
   	    
   	    local techniczne_modul=require("Module:Techniczne");
        nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
   end;
   local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
   
   if(pelna_nazwa_ksiazki)then
       pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
       
       local techniczne_modul=require("Module:Techniczne");
       pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
       ----
   	   local ksiazkowe_modul=require("Module:Książkowe");
   	   pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
   	   
   	   nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
   	   nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki);
   	   nazwa_ksiazki=nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki);
   end;
   return nazwa_artykulu,pelna_nazwa_ksiazki,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
   local nazwa_artykulu,pelna_nazwa_ksiazki,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
   local nazwy_modul=require("Module:Nazwy");
   if((nazwa_artykulu)and(pelna_nazwa_ksiazki))then
   		local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
   		tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu);
   		tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NAZWASTRONY"](nazwa_modulu);
   		p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   elseif((nazwa_artykulu)and(not pelna_nazwa_ksiazki))then	
   		local ksiazkowe_modul=require("Module:Książkowe");
   	    local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
   	    local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["PełnaNazwaArtykułu"]();
   		local pelna_nazwa_strony=(((nazwa_przestrzeni)and(nazwa_przestrzeni~="")) and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
   	   	nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony);
   	    nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony);
   	    nazwa_ksiazki=nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony);
   	    
   	   	local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
   		tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu);
   		tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NAZWASTRONY"](nazwa_modulu);
   	   	p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   elseif((not nazwa_artykulu)and(pelna_nazwa_ksiazki))then
   else
   		p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   end;
end;
function p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu, tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie)
   local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
   local nazwa_artykulu,pelna_nazwa_ksiazki,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
   ----
   local parametry_modul=require("Module:Parametry");
   if(parametry_modul.CzyTak(uchwyt_obiektu))then
   		local szablonowe_modul=require("Module:Szablonowe");
   		uchwyt_obiektu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,uchwyt_obiektu,nil,tablica_obiektow_strony_dany_modul_uzyskany);
		local frame=mw.getCurrentFrame();
		uchwyt_obiektu=frame:preprocess(uchwyt_obiektu);
		local html_modul=require("Module:Html");
		uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
	end;
   ----
   if(parametry_modul.CzyTak(uchwyt_obiektu))then
    	if(nazwa_artykulu)then
    		if(nazwa_artykulu~="")then
        		if(not nazwa_ksiazki)then
        			nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
        			nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
        			nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
        		elseif(nazwa_ksiazki=="")then
        		   p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
        		   return;
        		end;
        	elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
        		nazwa_artykulu="";
        	elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
        		  p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
        		  return;
        	else
        		nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
        		nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
        		nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
        	end;
        	if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
        		   or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
        		        or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
        		             or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
        		p.LinkowanieInnychStron(self,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
        	else	
        		p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
        		p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); 
        	end;
    	else 
    		p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie) 
    		p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); 
    	end;
   elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
   	   	  p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
   elseif(not p.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
   	  p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
   	  p.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
   end;
end;
function p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie)
	local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
	local parametry_modul=require("Module:Parametry");
	if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then 
		local parametry_modul=require("Module:Parametry");
		local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
		local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
		local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
		local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
		if(not (p.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then 
			p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
		end;
		tablica_zmiennych.sprawdzenie_dokonane_linku=true;
	end;
	KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
    table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieInnychStron(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
	if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
		and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"[|<>{}%[%]]")))or(nazwa_przestrzeni_ksiazki=="")))
			and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]")))
				and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
	)then
        local parametry_modul=require("Module:Parametry");
		if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
			local tablica_zmiennych={};
			tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={}
    		local tabela_listy_danych_analizy_ksiazki0=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych);
    		if(tabela_listy_danych_analizy_ksiazki0)then 
        			if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
        			p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
        			local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
        			local ile_razy=0;
            		if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then                                 
            			for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
                			if(parametry_obiektu[1]==uchwyt_obiektu)then
                    			ile_razy=ile_razy+1;
                    			if(ile_razy>1)then break;end;
                			end;                                      
            			end;
            		end
        			if(ile_razy~=1)then
            			if(not p.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu))then
            				p.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu);
            			end;
    				    p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
        			end;
    		else
    			if(not p.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
    				p.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
    			end;
    		end;
		else
    		p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
    	end;
    else
        if(not p.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
        	if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
        		     and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
        		         and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
        		              and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then 
  		    	p.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
  	    	else
  		        p.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
        	end;
        end;
    end;
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
	local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
		if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
		local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
   
		if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
		local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
   
		if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
		local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
   
		if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
		if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
   
		local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
		return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
	end;
	local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
		if(not czy_artykul_korzystany)then
   			if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
   				if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
	   	        	return 0; 
   				else
   	  				  if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
   	  	    			   self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
   	  				  end;
   				end;
   			else
   				return nil;
   			end;
		end;
		if(self.tabela_listy_danych_analizy_ksiazki)then
    		if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
      			local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
      			if(tabela_przestrzeni)then
      				local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
      				if(tabela_przestrzeni_ksiazki)then
      					local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
        				if(tabela_ksiazka)then
        					local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
        					if(lista_artykolow)then
         						local tabela_artykul=lista_artykolow[nazwa_artykulu];
         						if(tabela_artykul)then
         							return 0,tabela_artykul;
     	    					end;
         					end;
        				end;
      				end;
    			end;
    		else	
        		return nil; 
    		end;
		else 
    		return nil; 
		end;
		return true;
	end;
	local nazwy_modul=require("Module:Nazwy");
	local wartosc_wyniku,tabela_artykul=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
	local function StronaSubstFunkcja(tabela_artykul)
		if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
    	     local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
    	     local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
		     local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
	  	     tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nazwa_modulu,TakFun,NieFun,nil);
    	end;
	end;
	if((not wartosc_wyniku)or(wartosc_wyniku==0))then
		StronaSubstFunkcja(tabela_artykul);
		return wartosc_wyniku;
	end;
	----
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	if((nazwa_przestrzeni~=nazwy_np_modul.Main)
   	    and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
   	        and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
   	        	and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
   	 )then
        	p.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	 end;
	----
    local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
    local parametry_modul=require("Module:Parametry");
	local function InneInformacjePrzebneDoAnalizowanejKsiazki()
       	if(not (p.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
    		if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
    			local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.spis))and true or false;
        		if(not czy_ksiazka_istnieje_w_tablicy)then
        			local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
        			local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
     				local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
     						  local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
      						  if(tablica_przestrzeni_strona)then
      								local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
      								if(tablica_przestrzeni_ksiazki_strona)then
      									local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
        								if(tablica_ksiazki_strona)then
     					    				if(tablica_ksiazki_strona.spis)then
     					    					nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
     					    					tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
     	 										tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
     	 										tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
     	 										tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
     	 										tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
     	 										tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
     					    					tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
     					    					return 1;
     					    				end;
        								end;
 									end
     					    end;
     				end);
     				local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
     					if(czy_artykul_korzystany)then
     						tablica_ksiazki.spis=tabela_artykulow;
     	 					tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
     	 					tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
     	 					tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
     	 					tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
     	 					tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
      					else 
     						tablica_ksiazki.spis=tabela_artykulow;
     	 					tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
     	 					tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
     	 					tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
     	 					tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
    					end;
     				end;
     				if(tabela_artykulow==0)then 
     					if(czy_artykul_korzystany)then
	     					p.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
    	 				else
     						p.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
     					end;
     				elseif(tabela_artykulow)then
     						if(parametry_modul.TypeTable(tabela_artykulow))then
     							if(adres_ksiazki_glownego_spisu_tresci)then
     								__FUNKCJA_SPISU(tablica_ksiazki,true);
     								local tablica_ksiazki_stara=tablica_ksiazki;
     								local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
     								local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
	     							local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
    	 							local wartosc_wyniku,tabela_artykul=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
									if((not wartosc_wyniku)or(wartosc_wyniku==0))then
										StronaSubstFunkcja(tabela_artykul);
										return wartosc_wyniku,true;
									end;
     								local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni	,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
     								tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
     								__FUNKCJA_SPISU(tablica_ksiazki,false);
     							else
     								__FUNKCJA_SPISU(tablica_ksiazki,false);
     							end;
     						else
     							local wartosc_wyniku,tabela_artykul=__FUNKCJA(nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp,nazwa_artykulu);
								if((not wartosc_wyniku)or(wartosc_wyniku==0))then
									StronaSubstFunkcja(tabela_artykul);
									return wartosc_wyniku,true;
								end;
     						end;
    				else
    					if(czy_artykul_korzystany)then
     	 					if(not p.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then 
	     	 					  if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
	     	 		   						p.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
    	 	 		   			   end;
     		 				end;
    					else
                			p.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
    					end;
     				end;
				end;
    		end;
    	end;
	end;
	----
	local wartosc_wyniku,wynik_bledu=InneInformacjePrzebneDoAnalizowanejKsiazki();
	if(wynik_bledu)then return wartosc_wyniku;end;
	----
	--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
	--	tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
	--end;
	----
	local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
	if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)then
		----
		nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
		nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
		nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
		----
		tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
		----
		local techniczne_modul=require("Module:Techniczne");
		local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,};
		if(ile==0)then
			nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
		end;
	end;
	if(czy_artykul_korzystany)then
		self.nazwa_modulu_biezaca=nazwa_modulu;
	end;
	if(not czy_artykul_korzystany)then
		local techniczne_modul=require("Module:Techniczne");
		local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
		if(strona)then
			 if(strona~=nazwa_modulu)then
				----
				local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
        		----
				nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
				nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona);
				nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona));
				nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
				local wartosc_wyniku=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
				if((not wartosc_wyniku)or(wartosc_wyniku==0))then return wartosc_wyniku;end;
				local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
				nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
			else
				return 0;
			end;
		end;
	end;
	----
    if(czy_artykul_korzystany)then 
   		if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
   	  		self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
   	  		self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
   	    	self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
   	    	self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
   		end;
    end;
    local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
    
-- przydzielanie tablicy
   if(czy_artykul_korzystany)then
		artykul_analizowany.artykul_biezacy=true;
		tablica_ksiazki.ksiazka_analizowana=true;
   end;							
--koniec

    --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
    if(not tablica_zmiennych)then tablica_zmiennych={};end;
    if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
    	local wartosc=element_w_tablicy_obiekt[1];
    	tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={};
    	if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={};end;
    end;
    
    function StronaZbiorcza()
    	 if(czy_artykul_korzystany)then 
    	 	    local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
                local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
                local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
                artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
                return wynik;
    	 end;
    	 return nil;
    end;
    
    local parametry_modul=require("Module:Parametry");
    local strona_zbiorcza=StronaZbiorcza();
    
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local techniczne_modul=require("Module:Techniczne");
    local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
    
    local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");                               
    local szablonowe_modul=require("Module:Szablonowe");
    local parametry_modul=require("Module:Parametry");
    ----
    local tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
    		function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
				if(strona_zbiorcza)then
    	 			local techniczne_modul=require("Module:Techniczne");
    				if((tablica_ksiazki.spis_tresci)and(parametry_modul["CzySąElementyNazwaneTablicy"](tablica_ksiazki.spis_tresci)))then
    					for nazwa_spisu_tresci,tablica in pairs(tablica_ksiazki.spis_tresci)do
    						local adres_wzgledny_spisu_tresci=tablica.adres_wzgledny_spisu_tresci;
    						if(adres_wzgledny_spisu_tresci)then
    							local nazwa_artykulu_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")..adres_wzgledny_spisu_tresci;
    							local pelna_nazwa_szablonu_prawdziwa=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu);
  	    						if((pelna_nazwa_szablonu==nazwa_artykulu_spisu_tresci)or((pelna_nazwa_szablonu_prawdziwa)and(pelna_nazwa_szablonu_prawdziwa==nazwa_artykulu_spisu_tresci)))then
  	    							return tablica.tekst;
  	    						end;
  	    					end;
    					end;
    				end;
    			end;
    		end)
	----
 	if(not czy_artykul_korzystany)then
 		if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
 	end;
    
    if(czy_artykul_korzystany)then
 		if(not tekst_rozwiniety_calego_artykulu)then 
 			if(strona_zbiorcza)then
 				self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
 			end;
 			return nil;
 		end;
    end;
 
     if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
     	local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
     	local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
     	if(tekst)then
     		 local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
     		 for szablon,obiekt,kod in iterator do
     		 	if(obiekt=="SZABLON")then
     		 		local tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon);
     		 		if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
     		 			 self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
    					 self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
    					 break;
    				elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu_wywolania])then
        				self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
        				local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
        				local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
        				if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
        				    self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
        				end;
    					break;
    				end;
 		 		end;
     		 end;
     	end;
     end;
	 
    local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
    
    local analiza_stron_korzystanych_zbiorczych=nil;
    
    local stronastart=nil;
    ----
    local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
    local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
    local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
    local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
    local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
    local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
    local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
    ----
    local strona_start=stronicowyparser_obiekty_modul.strona_start;
    local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
    local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
    local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
    ----
    local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany);
    for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
    	local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
    		if(czy_artykul_korzystany)then
    			if(tabela_parametrow_szablonu)then
    				if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
    					if(strona_start[nazwa_szablonu_wywolania])then
        					self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
        				    stronastart=true;
        				    local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
        				    local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
        				    if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
        				    	 self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
        				    end;
        					return;
    					elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
    					   	self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
    					   	self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
    						stronastart=true;
    						return;
    					elseif(strona_start_inne[nazwa_szablonu_wywolania])then
    						self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
    						stronastart=true;
    						return;
						elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
    						analiza_stron_korzystanych_zbiorczych=true;
    						return;
    					end;
    				elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
    						analiza_stron_korzystanych_zbiorczych=true;
    						return;
    				end;
    			end;
    		end;
    		
    		local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
        	if(plik==nil)then
        		if(tabela_parametrow_szablonu)then
            		if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
            			local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
            			local czy_linkobiekt;
            			local czy_link;
            			local czy_wypowiedzenie_z_parametrami;
            			local czy_linkobiekt_z_parametrami;
            			if(czy_wypowiedzenie)then 
            				czy_linkobiekt=false;
            				czy_link=false;
            				czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
            			else
            				czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
            				if(czy_linkobiekt)then
            					czy_link=true;
            					czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
            				else
            					czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
            				end;
            			end;
              			if(not czy_link)then
              				local wartosc_elementu;local numer_uchwytu;
              				if(not czy_wypowiedzenie_z_parametrami)	then
              					tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
              					if(tab_wartosc_elementu)then
              						wartosc_elementu=tab_wartosc_elementu[1];
              						numer_uchwytu=tab_wartosc_elementu[2];
              					end;
              				else
              					local rodzaj=tabela_parametrow_szablonu["rodzaj"];
              					if(rodzaj)then
              						wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
              						if(wartosc_elementu)then
              							numer_uchwytu=tablica_obiekty[5];
              						end;
              					end;
              				end;
              				if(wartosc_elementu)then
              			    	local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
              			    		if(czy_artykul_korzystany)then
              						    if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
              						        if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
              						      	  	self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              						        end;
              						    end;			
              						end;
              			    	end;
              					p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
              					return;
              			    end;
              			elseif(czy_artykul_korzystany)then
              				if(czy_link)then
            					local wartosc_elementu;
            					if(not czy_linkobiekt_z_parametrami)then
            						wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
            					else
            						local typ=tabela_parametrow_szablonu["typ"];
            						if(typ)then
            							typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
            							if(typ)then
            								wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
            							end;
            						end;
            					end;
              					if(wartosc_elementu)then
              						local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
              							if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              									self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              							end;
              						end;
              						p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu, tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
          				    		    		return;
              					else
              						local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
              						if(wartosc_elementu)then
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              							local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
              								if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              									self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              								end;
              							end;
              							p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
              									
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
              							if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
              								self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
              								self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              							else
              								self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              							end;
              							return;
          				    		end;
              					end;
              				end;
              			end;
                		if(czy_wypowiedzenie)then
                			local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
                				if(czy_artykul_korzystany)then
              						if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              				    		self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              						end;			
          			    		end;
                			end;
		               		p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
               			elseif(czy_artykul_korzystany)then
               				if(czy_linkobiekt)then
               					local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
               						if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              			    			self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
       	        					end;
               					end;
               					p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt", tablica_obiektow_strony_dany_modul_uzyskany,KtorySzablonMaZwracacKategorie);
       	        			else
       	        				if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
       	        					self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
              					elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
              						self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
              						self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              						local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)	
              							if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              								local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
              								local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
              								self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
              							end;
              						end;
              						p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
              						self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
              						if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              						else
              							self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              						end;
              					elseif(stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])then
              						local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
              							if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              								local nazwy_modul=require("Module:Nazwy");
              								local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
              								local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
              								local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
              								local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
              								self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
              							end;
              						end;
              						if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
              							p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
              						else
              							p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
              						end;
                				end;
                			end;
                		end;
            		end;
        		end;
        	end; 
    	end;
    	stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
    end;
   local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
   tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
   
   if(czy_artykul_korzystany)then
   	   if(analiza_stron_korzystanych_zbiorczych)then
	   		local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
	   		tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany);
   	   end;	
   end;
   
   	local strona;
    if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
   
   local toc;
   if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
   	  or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
   	   	----
   	   	local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
   	   	----
 		tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony);
    	----
    	local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
           if(czy_artykul_korzystany)then
            	if(not p.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
             		p.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
             		if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
             			self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
             		end;
             	end;
             else
	             p.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
    	         if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
        	     	self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
            	 end;
	         end;
    	end;
	   local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
	   	   if(czy_artykul_korzystany)then
            	if(not p.CzyJestTakiProblemowyElement(self,"nagłówek tekście rozdziału w stronie korzystanej"))then
             		p.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
             		if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
             			self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
             		 end;
             	end;
            else
             	p.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
             	if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
             		self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
             	end;
             end;
	   end;
   	   local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
       local toc=p.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka], nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,});
    	tablica_danych_nazwy_artykulu.TOC=toc;
   end;
   StronaSubstFunkcja(tablica_danych_nazwy_artykulu);
   
   if(czy_artykul_korzystany)then
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
   end;
   return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzanieReferencji(self,tablica_zmiennych,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu)
    if((not p.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))or(nazwa_artykulu==""))then
    	for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
   			local czy_uchwyty_nie_sa_ponumerowane=true;
    		for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
            	if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
               		if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
               			czy_uchwyty_nie_sa_ponumerowane=false;
                		break;
                    end;
            	end;
    		end;
        	if(czy_uchwyty_nie_sa_ponumerowane)then
        		local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
        		if(czy_tylko_ze_znakami_odstepu_lub_puste)then
        	    	if(not p.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1)) then
                		p.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu1,1);
                	end;
                	return;
        		elseif(not p.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2))then
            		p.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu2);
                    return;
            	end;
        	end;
    	end;
    end;
end;
function p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
   for _,element_w_podtablicy_kategorii_bledow in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
   	    local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
		tabela_listy_danych_analizy_ksiazki=p.SprawdzanieOrazNumerowanieElementowychFormStrony(self,dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja);
   end;
end;
function p.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2)
	 local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	 local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	 local parametry_modul=require("Module:Parametry");
	 for nazwa_przestrzeni,tablica_nazw_przestrzeni_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)do
	 	for nazwa_przestrzeni_ksiazki, tablica_nazw_ksiazek in pairs(tablica_nazw_przestrzeni_ksiazek)do
			for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
				 local tablica_artykulow={};
				 local tab_ksiazki=tablica_nazw_artykulow.spis;
				 local czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
     			 if(tab_ksiazki)then
     				local i=1;
     				for _,tab_rozdzialu in pairs(tab_ksiazki)do
     					if(tab_rozdzialu[2])then
     						for _,tab_dane_nazwa_artykulu_spisu in ipairs(tab_rozdzialu[2])do
     							 local czy_tabelka_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_dane_nazwa_artykulu_spisu[1]);
     							 local tab_nazwa_artukulu_link=czy_tabelka_artykulu and tab_dane_nazwa_artykulu_spisu[1][1] or tab_dane_nazwa_artykulu_spisu[1];
     							 local artykul=stronicowyparser_potrzebne_modul.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_nazwa_artukulu_link);
     							 if(artykul)then
     							 	tablica_artykulow[artykul]=i;
     							 	i=i+1;
     							 end;
     						end;
     					end;
	     			end;	
	     			if(parametry_modul["CzySąElementyTablicy"](tablica_artykulow))then
						czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;
    				end;
 		   		end;
    			for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_podstron_woluminu) do
    		    	local biezacy_artykul=dane_artykulu.artykul_biezacy;
    				local numer_obiektu_w_ksiazce=tablica_artykulow[nazwa_artykulu] or 0;
     				local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
     					  p.DodawanieProblemowegoElementuDoTablicy(self,"błędy uchwytów dołączonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	     			end;
    	 			if((czy_da_sie_numerowac_obiekty_ze_spisem_tresci)and(nazwa_artykulu~=""))then
     					p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
    				else
            			p.PrzetwarzanieWszystkichSzablonowychElementowychFormParsowanejStrony(self,dane_artykulu,biezacy_artykul,0,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
	     	    	end;
	        	end;
			end;
		end;
	 end;
    for _,obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
     	local obiekt2=obiekt[1];
        p.SprawdzanieReferencji(self,tablica_zmiennych,tablica_zmiennych.linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2);
    end;
    return tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzanieOrazNumerowanieElementowychFormStrony(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
	local parametry_modul=require("Module:Parametry");
	if(not dane_artykulu.uchwyty_i_numeracje)then return;end;
	local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
	if(not tabela_obiektu)then return;end;

	if(stronicowyparser_obiekty_modul.nienumerowane_z_uchwytami_szablony_wprowadzenia_tekstu[nazwa_obiektu])then
		return tabela_listy_danych_analizy_ksiazki;
	end;
	
	for licznik,element_obiektu in pairs(tabela_obiektu)do
    	local czy_numerowac=true;
		for licznik2=1, licznik-1,1 do
   	    	if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
            	if(biezacy_artykul)then
            		if(not p.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu))then
                		p.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",nazwa_obiektu);
                	end;
            	else
					__Funkcja(nazwa_obiektu);
            	end;
            	tabela_obiektu[licznik2][1]=nil;
            	czy_numerowac=false;
        	end;
		end;
    	if(czy_numerowac)then
      		if(numer_artykulu_w_ksiazce>0)then
      			element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
      		elseif(numer_artykulu_w_ksiazce==0)then
      			element_obiektu[2]=licznik
    		elseif(not p.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
            	p.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
      		end;	
    	end;
	end;
   return tabela_listy_danych_analizy_ksiazki;
end;
return p;