Moduł:StronicowyParser/ZbieranieDanychStron

 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 pudelko_modul=require("Module:Pudełko");
        	local czy_strona_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](strona);
        	if(not czy_strona_niepoprawna)then
        		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;
    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
    	local stronicowyparser_numeracjaobiektowstron_modul=require("Module:StronicowyParser/NumeracjaObiektówStron");
    	stronicowyparser_numeracjaobiektowstron_modul.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
    end;
    return self.tabela_listy_danych_analizy_ksiazki;
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_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow)
	----
	local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_analizy_obiektow_strony_dany_modul));
	----
	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 stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    local szablonowe_modul=require("Module:Szablonowe");
    local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
    local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
    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 tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
    ----
    local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
    local tab_szablony_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.szablony_stron_zbiorczych;
    local tab_szablony_inne_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.inne_szablony_stron_zbiorczych;
    local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
    ----
    local tab_szablony_indeksowania=stronicowyparser_obiekty_modul.szablony_indeksowania;
    ---
    
    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_analizy_obiektow_strony_dany_modul,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]*=)[^%S\n]*\n");
        			if(rozdzial)then
        				local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(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_danych_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_analizy_obiektow_strony_dany_modul);
				numeracja_aktualna=frame:preprocess(numeracja_aktualna);
				numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true);
				if(numeracja_aktualna~="")then
        			table.insert(numeracja,numeracja_aktualna);
        		end;
        		----
        		if(powtorka>=1)then 
            		 if(self.tabela_listy_danych_analizy_ksiazki)then
            	 		KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania);
            		 end;
        		end;
    		elseif(powtorka>=1)then
    			KtorySzablonMaZwracacKategorieNaglowek(nil,nazwa_szablonu_wywolania);
        	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)  
       if(obiekt=="SZABLON")then
            local parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
            if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(modyfikatory_wywolania,nazwa_szablonu_wywolania,parametry_wywolania_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
   				nazwa_szablonu_wywolania=nazwa_modulu_aktualna_czy_biezaca_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu_wywolania,[2]=nazwa_modulu_aktualna_czy_biezaca_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu_wywolania;
   				nazwa_szablonu_wywolania=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu_wywolania,tablica_danych_parametrow_szablonu_strony,kod);
   				----
        		local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
        		if(jest_naglowkuj_w_tekscie_rozdzialu)then
            		local numeracja=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1];
            		if((numeracja)and(numeracja~=""))then
            			numeracja=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(numeracja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
            			numeracja=frame:preprocess(numeracja);
            			numeracja=html_modul.DecodeHtml(numeracja,true);
            		end;
            		KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu_wywolania);
            		return true;
        		end;
            end;
        end;
	    return false;
	end;
    
    local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or "");
    
    for naglowek_tab,text_rozdzialu,poziom_rozdzialu in iterator do
    	local naglowek=naglowek_tab[1];
    	numeracja={};
    	if((self)and(czy_kodowanie))then
			local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
			for szablon,obiekt,kod in iterator do
				local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod);
				if(wynik)then break;end;
			end;
    	end;
        local powtorka=0;
        
        local czy_szablony=nil;
        local czy_ideksowanie=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_danych_parametrow_szablonu_strony,kod);
            		if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(modyfikatory_wywolania,nazwa_szablonu_wywolania,parametry_wywolania_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
   						nazwa_szablonu_wywolania=nazwa_modulu_aktualna_czy_biezaca_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu_wywolania,[2]=nazwa_modulu_aktualna_czy_biezaca_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu_wywolania;
   						nazwa_szablonu_wywolania=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu_wywolania,tablica_danych_parametrow_szablonu_strony,kod);

            			powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania);
            			local czy_naglowek=tab_naglowki[nazwa_szablonu_wywolania];
            			local czy_tak_naglowki=((czy_naglowek)and(mw.ustring.match(nazwa_szablonu_wywolania,"^Link")and true or false) or ((not czy_naglowek)and nil));
            			if((czy_tak_naglowki~=nil)and(czy_tak_naglowki==false))then 
            				return "";
            			elseif((tab_szablony[nazwa_szablonu_wywolania])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu_wywolania])or	(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu_wywolania])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))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);
            			elseif((tab_szablony_strona_start[nazwa_szablonu_wywolania])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu_wywolania]))then
							return "";
            			elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu_wywolania])then
							local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
							if(wynik)then return wynik;end;
            			elseif((czy_ideksowanie)and(tab_szablony_indeksowania[nazwa_szablonu_wywolania]))then
							return nil,true;
            			end;
            		end;
            		return szablon;
        	  end;
        	  return szablon;
        end;
        
        local function SzablonyWywolywaneOgolny(naglowek)
        	local naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,SzablonyWywolywane);
        	return naglowek;
        end;
        if((self)and(czy_kodowanie))then
        	czy_ideksowanie=true;
        	naglowek=SzablonyWywolywaneOgolny(naglowek);
        end;
        --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny);
        
        --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>","");
        local specjalne_modul=require("Module:Specjalne");
        local function Korekta(naglowek)
        	naglowek=frame:preprocess(naglowek);
        	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);
			return naglowek;
        end;
		naglowek=Korekta(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);
        ---
        if((self)and(czy_kodowanie))then
        	naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
        		 local parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
            	if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(modyfikatory_wywolania,nazwa_szablonu_wywolania,parametry_wywolania_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
   					nazwa_szablonu_wywolania=nazwa_modulu_aktualna_czy_biezaca_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu_wywolania,[2]=nazwa_modulu_aktualna_czy_biezaca_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu_wywolania;
   					if(tab_szablony_indeksowania[nazwa_szablonu_wywolania])then return "";end;
   				end;
        	end);
        	czy_ideksowanie=false;
        	nazwa_rozdzialu_w_artykule=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_rozdzialu_w_artykule,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
	        	szablon=SzablonyWywolywaneOgolny(szablon);
    	    	szablon=Korekta(szablon);
        		szablon=specjalne_modul["UsuńSzablonyStylów"](szablon);
        		return szablon;
        	end);
        end;
        ---
		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,"[_%s]+"," ");
        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)and(czy_kodowanie))then
    	if(czy_artykul_korzystany)then
    		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
			if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
				local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
	 			if((linia_poczatkowa)and((mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n*"))
	 				                      or(mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$*")))
	 			)then
	 				return tablica_spisu_tresci;
	 			end;
	 			local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") 
	 			         or mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") 
	 			            or tekst_artykulu;
				local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zerowy,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
				for szablon,obiekt,kod in iterator do
					local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod);
					if(wynik)then break;end;
				end;
	 		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_analizy_obiektow_strony_dany_modul,KtorySzablonMaZwracacKategorie)
    local szablonowe_modul=require("Module:Szablonowe");
    kod_uchwytu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(kod_uchwytu,nil,tablica_analizy_obiektow_strony_dany_modul);
    local frame=mw.getCurrentFrame();
	kod_uchwytu=frame:preprocess(kod_uchwytu);
	local html_modul=require("Module:Html");
	kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
	if(kod_uchwytu~="")then
		KtorySzablonMaZwracacKategorie(kod_uchwytu);
		local lista_dwuelementowa={};
    	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
    		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
        	if(not (stronicowyparser_problemy_modul.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;
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_analizy_obiektow_strony_dany_modul,KtorySzablonMaZwracacKategorie)
	local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
	if(kod_uchwytu)then 
		p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,tablica_analizy_obiektow_strony_dany_modul,KtorySzablonMaZwracacKategorie);
	end;
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 
    		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
        	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 (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
	            	stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	            end;
        	elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
       			if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
            			stronicowyparser_problemy_modul.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 (nazwa_ksiazki=="") or nil;
  local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
  local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
  ----
  local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
  ----
  if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
  		if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
	 		stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
		end;
  end;
  if(czy_artykul_z_tylko_odstepami_lub_pusty)then 
		if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
	 			stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
 		end;
  end;
  if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
		if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
			stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
		end;
  end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie)
   local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true);
   
   --local ksiazkowe_modul=require("Module:Książkowe");
   --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
   --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
   
   if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
		local nazwy_modul=require("Module:Nazwy");
		local nazwa_przestrzeni=nazwa_przestrzeni or nazwy_modul["NazwaPrzestrzeni"]();
		local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or nazwy_modul["NazwaPrzestrzeniKsiążki"]();
		local nazwa_ksiazki=nazwa_ksiazki or nazwy_modul["NazwaTytułuKsiążki"]();
		local nazwa_artykulu=nazwa_artykulu or nazwy_modul["NazwaArtykułuKsiążki"]();
		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;
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 (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ŁNANAZWASTRONY"](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=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki)));
   	   --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
   end;
   return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
   local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
   local nazwy_modul=require("Module:Nazwy");
   if((nazwa_artykulu)and(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"]=nazwa_przestrzeni;
   		tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
   		p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   elseif((nazwa_artykulu)and(not 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["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
   	    ----
   		tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
   		tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
   	   	p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
   	   	local ksiazkowe_modul=require("Module:Książkowe");
   	   	local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
   	    local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
   	    local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
   	    ----
   		tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
   		tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
   	   	p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   else
   		p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu);
   end;
end;
function p.GeneralneLinkowanie(self,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu, tablica_analizy_obiektow_strony_dany_modul,KtorySzablonMaZwracacKategorie)
   local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
   local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=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_analizy_obiektow_strony_dany_modul);
		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;
   ----
   local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
   ----
   if(parametry_modul.CzyTak(uchwyt_obiektu))then
   	    nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
    	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_analizy_obiektow_strony_dany_modul);
        		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_analizy_obiektow_strony_dany_modul) 
    		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.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
   	   	  p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
   elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
   	  p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
      stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
   end;
   KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul)
	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;
		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
		if(not (stronicowyparser_problemy_modul.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;
    table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
	local pudelko_modul=require("Module:Pudełko");
	if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
		and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
			and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
				and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
	)then
		if(__FUNKCJA)then
			__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
		end;
	else
		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
		if(not stronicowyparser_problemy_modul.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 
  		    	stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
  	    	else
  		        stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
        	end;
        end;
	end;
end;
function p.LinkowanieInnychStron(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
	p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
        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
        			    local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
            			if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron","Link"..nazwa_obiektu))then
            				stronicowyparser_problemy_modul.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
    			local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
    			if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
    				stronicowyparser_problemy_modul.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;
    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");
	local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
	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
        	stronicowyparser_problemy_modul.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 tekst_rozwiniety_calego_artykulu_ref=nil;
    local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
    local tablica_danych_parametrow_szablonu_strony_ref=nil;
    ----
	local function InneInformacjePrzebneDoAnalizowanejKsiazki()
       	if(not (stronicowyparser_problemy_modul.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
    			if(czy_artykul_korzystany)then
    				if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
    			end;
    			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,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
     				----
     					if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
     						tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
     						tablica_analizy_obiektow_strony_dany_modul_ref=tablica_analizy_obiektow_strony_dany_modul_ref_spis;
     						tablica_danych_parametrow_szablonu_strony_ref=tablica_danych_parametrow_szablonu_strony_ref_spis;
     					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
	     					stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
    	 				else
     						stronicowyparser_problemy_modul.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 stronicowyparser_problemy_modul.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
	     	 		   						stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
    	 	 		   			   end;
     		 				end;
    					else
                			stronicowyparser_problemy_modul.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_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
    if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
    	tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_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),
    		nil)
    else
    	tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
    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_analizy_obiektow_strony_dany_modul);
    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 (uchwyt_obiektu~=""))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_analizy_obiektow_strony_dany_modul,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_analizy_obiektow_strony_dany_modul,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_analizy_obiektow_strony_dany_modul,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_analizy_obiektow_strony_dany_modul,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_analizy_obiektow_strony_dany_modul,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_danych_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_analizy_obiektow_strony_dany_modul);
   	   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_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
    	----
    	local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
           if(czy_artykul_korzystany)then
            	if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
             		stronicowyparser_problemy_modul.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
	             stronicowyparser_problemy_modul.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 stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
             		stronicowyparser_problemy_modul.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
             	stronicowyparser_problemy_modul.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_analizy_obiektow_strony_dany_modul,tablica_danych_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;
return p;