Moduł:StronicowyParser/ZbieranieDanychStron

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.ZaczynajAnalizowacArtykulyKsiazek(self)
    self.tabela_listy_danych_analizy_ksiazki={};
    
    self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu={};
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    
    self.tabela_listy_danych_analizy_ksiazki.problemy={};
    
    self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron={};
    self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_doloczonych_stron={};
    self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu={};
    self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych={};
    for _,elementy_w_tablicy_obiekty in pairs(stronicowyparser_obiekty_modul.tablica_obiektow)do
    	local wartosc=elementy_w_tablicy_obiekty[1];
    	self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[wartosc]={};
    end;
    self.tabela_listy_danych_analizy_ksiazki.licencja={};
    
    local nazwy_modul=require("Module:Nazwy");
    local ksiazkowe_modul=require("Module:Książkowe");
    local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
    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="Szablon:Podręcznik/Ustawienia/"
                                      ..((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")
                                                ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")
                                                        ..nazwa_ksiazki;
                                                
    local techniczne_modul=require("Module:Techniczne");
    local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki.."/config",};
    if(ile>0)then
    	local frame=mw.getCurrentFrame();
    	local szablonowe_modul=require("Module:Szablonowe");
    	local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki);

        local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
        local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
        if(not mw.ustring.match(ksiazka,"^%s*$"))then
        	local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
        	local html_modul=require("Module:Html");
        	strona=html_modul.DecodeHtml(strona,true);
        	strona=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](strona);
        	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.zastepcza=parametry_modul.CzyTak(zastepcza);
    				    if(not self.tabela_listy_danych_analizy_ksiazki.zastepcza)then
    						self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true;
    					end;
    				end;
        		end;
        	end;
        end;
    end;
    
    local tabela_listy_danych_analizy_ksiazki2={};
    local linkobiekt={};
    local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tabela_listy_danych_analizy_ksiazki2,linkobiekt);
    local parametry_modul=require("Module:Parametry");
    if(parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
    		p:PrzetworzZebraneInformacje(tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
    end;
    return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.DodawanieElementowDoTablicy(self,element_tablicy,nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	local tabela_listy_danych_analizy_ksiazki=self.tabela_listy_danych_analizy_ksiazki.problemy;
	if(not tabela_listy_danych_analizy_ksiazki[element_tablicy])then 
		tabela_listy_danych_analizy_ksiazki[element_tablicy]={};
	end;
    tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[element_tablicy];
    
   	if(nazwa_obiektu)then
		if(not tabela_listy_danych_analizy_ksiazki[nazwa_obiektu])then
		      tabela_listy_danych_analizy_ksiazki[nazwa_obiektu]={};
		end;
		tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki[nazwa_obiektu];
	end;
	if(not tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni])then 
		tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni]={};
	end;
	
	tabela_listy_danych_analizy_ksiazki_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki[nazwa_przestrzeni];
	if(not tabela_listy_danych_analizy_ksiazki_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki])then 
		tabela_listy_danych_analizy_ksiazki_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki]={};
	end;
	tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki];
	tabela_listy_danych_analizy_ksiazki[nazwa_ksiazki]=true;
end;
function  p.SpisTresciWstep(self,tekst_artykulu,nazwa_strony,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,czy_artukul_korzystany, tylko_naglowek)
	local nazwa_modulu_aktualna_czy_biezaca;
	if czy_artukul_korzystany then
		local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.zastepcza 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.zastepcza and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
   		local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.zastepcza and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
   		local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.zastepcza and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
   		nazwa_modulu_aktualna_czy_biezaca=((nazwa_przestrzeni_aktualna_czy_biezaca~="") and (nazwa_przestrzeni_aktualna_czy_biezaca..":") or "")
   		      ..((nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca~="") and (nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca.."/") or "")
   		          ..nazwa_ksiazki_aktualna_czy_biezaca..((nazwa_artykulu_aktualna_czy_biezaca~="") and ("/"..nazwa_artykulu_aktualna_czy_biezaca) or "");
   	else
   		nazwa_modulu_aktualna_czy_biezaca=nazwa_strony;
   	end;

    nazwa_strony=nazwa_strony and mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end) or nil;
    local tablica_spisu_tresci=nil;
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local szablonowe_modul=require("Module:Szablonowe");
    local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
    local uzyskany_w_wyniku_parsowania;    
    local tablica_powtarzajacych_sie_elementow={};
    local elementy_linku=nil;
    local frame=mw.getCurrentFrame();
    local parametry_modul=require("Module:Parametry");
    local techniczne_modul=require("Module:Techniczne");
    
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera;
    
    local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    
    local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);

    local numeracja;

    local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,powtorka)
        local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
        local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_naglowka[nazwa_szablonu];
        if(jest_naglowkuj_w_tekscie_rozdzialu)then
        	local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon);
        	local numeracja_aktualna=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
        	table.insert(numeracja,numeracja_aktualna);
        	if(powtorka>=1)then 
            	 if(self.tabela_listy_danych_analizy_ksiazki)then
             		if(czy_artukul_korzystany)then
             			   if(not self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej)then
             					 self.tabela_listy_danych_analizy_ksiazki.problemy.powtorka_naglowek_w_stronie_korzystanej=0;
             					 if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
             						 self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
             					end;
             				end;
             		else
	             		p:DodawanieElementowDoTablicy("powtorka_naglowek_w_stronie_doloczonej",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;
        	end;
        	powtorka=powtorka+1;
        end;
		return powtorka;
    end;
           
    local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)  
        local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
        local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_naglowka[nazwa_szablonu];
        if(jest_naglowkuj_w_tekscie_rozdzialu)then
            local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon);
            local numeracja=parametry_wywolania_szablonu_naglowek["uchwyt"] or parametry_wywolania_szablonu_naglowek[1];
            if(czy_artukul_korzystany)then
            	if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
             		 self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej=0;
             		 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 or "");
             		 end;
             	end;
             else
             	p:DodawanieElementowDoTablicy("naglowek_w_tekscie_rozdzialu_w_stronie_doloczonej",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 or "");
             	end;
             end;
        end;
    end;
    for naglowek,text_rozdzialu,poziom_rozdzialu in iterator do
    	numeracja={};
    	if(self)then
			local naglowek=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,nil,SzablonNaglowkujWTekscieRozdzialu);
    	end;
        local powtorka=0;
        local function SzablonyWywolywane(szablon,obiekt,kod)
        	  if(obiekt=="TEMPLATE")then
        			powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,powtorka);
            		local parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon);
            		if(tab_szablony[nazwa_szablonu_wywolania])then return "";end;
            		return szablon;
        	  end;
        	  return szablon;
        end;
        
        local function SzablonyWywolywaneOgolny(naglowek)
        	local naglowek=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,nil,SzablonyWywolywane);
        	return naglowek;
        end;
        
        naglowek=SzablonyWywolywaneOgolny(naglowek);
        --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny);
             
        naglowek=frame:preprocess(naglowek);
             
        local specjalne_modul=require("Module:Specjalne");
        naglowek=specjalne_modul["UsuńKomentarze"](naglowek);
        naglowek=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](naglowek);
		naglowek=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](naglowek);
		naglowek=specjalne_modul["UsuńInterwiki"](naglowek);
		naglowek=specjalne_modul["UsuńKategorie"](naglowek);
		naglowek=specjalne_modul["UsuńWywołaniaPlików"](naglowek);
		
        naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
        
        local nazwa_rozdzialu_w_artykule=specjalne_modul["UsuńSzablonyStylów"](naglowek);
		nazwa_rozdzialu_w_artykule=specjalne_modul["UsuńZnaczniki"](nazwa_rozdzialu_w_artykule);
		
        nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[<>]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";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,"_"," ");
        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={((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or "").."#"..nazwa_rozdzialu_w_artykule,naglowek};
        else
            elementy_linku={((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or "").."#"..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,{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={};end;
        	tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
        end;
    end;
    if(self)then
    	if(czy_artukul_korzystany)then
			if(not self.tabela_listy_danych_analizy_ksiazki.problemy.naglowek_tekscie_rozdzialu_w_stronie_korzystanej)then
				local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
	 			if((linia_poczatkowa)and(mw.ustring.match(linia_poczatkowa,"^=+.+=+%s*")))then
	 				return tablica_spisu_tresci;
	 			end;
	 			local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=+[^=]+=+") or tekst_artykulu;
	 			SzablonNaglowkujWTekscieRozdzialu(tekst_zerowy);
	 		end;
		end;
	end;
    return tablica_spisu_tresci;
end;
function p.ObslugaSzczegolnaElementu(self,kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany)
    local lista_dwuelementowa={};
    lista_dwuelementowa[1]=kod_uchwytu;
    local parametry_modul=require("Module:Parametry");
    if((not tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then 
        if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then 
       			p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
		end;
       	tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_obiektu=true;
    end;
    table.insert(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
function p.ObsluzSzablonWzor(self,tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
	local kod_uchwytu=nil;
	if(tabela_parametrow_szablonu["uchwyt"])then 
		local parametry_modul=require("Module:Parametry");
        kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu["uchwyt"]);
    elseif(tabela_parametrow_szablonu[numer_numeracji])then
        local parametry_modul=require("Module:Parametry");
		kod_uchwytu=parametry_modul["Odstępy"](tabela_parametrow_szablonu[numer_numeracji]);
	end;
	if(kod_uchwytu and not mw.ustring.match(kod_uchwytu,"^%s*$"))then 
		p:ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany);
	end;
end;
function p.Czy_jest_taki_element_w_tabeli_wynikow(self,element, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	local parametry_modul=require("Module:Parametry");
  	local tabela_problemow=self.tabela_listy_danych_analizy_ksiazki.problemy[element];
  	return (parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow,nazwa_przestrzeni)
  		        and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni],nazwa_przestrzeni_ksiazki)
  	    		      and parametry_modul.CzyJestTakiKluczTabeli(tabela_problemow[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki],nazwa_ksiazki));
end;
function p.SprawdzCzyJestDostepnySpisTresci(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_artykulu;
		if(tablica_przestrzeni_wszystkiego)then
			local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
			if(tabela_przestrzeni_ksiazek)then
				local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
				if(tabela_ksiazek)then
					local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
					if(tab_ksiazki)then
						if(tab_ksiazki.spis)then
							czy_lista_niepusta=true;
				    		for _,tab_value1 in ipairs(tab_ksiazki.spis)do
				    			if(tab_value1[2])then
				    				for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
  										if(nazwa_artykulu1[1]==nazwa_artykulu)then
  	                						czy_element_wystepuje_w_tablicy=true;
  	                						break;
  	                					end;
  	    							end;
				    			end;
				    			if(czy_element_wystepuje_w_tablicy)then break;end;
				    		end;
				    	end;
				    end;
                  end;
  	    	end;
		end;
    	if(not czy_element_wystepuje_w_tablicy)then 
        	if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
        			 or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki)
        			       or(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki~=nazwa_ksiazki)
        			            or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=nazwa_artykulu))then
        		if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
	            	p:DodawanieElementowDoTablicy("brak_spisy_tresci_do_doloczanych_stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	            end;
        	elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron)then
       			if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
            			self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisu_tresci_do_korzystanych_stron=0;
        		end;
    		end;
    	end;
    end;
end;
function p.PusteParametryLinkow(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
  local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and mw.ustring.match(nazwa_ksiazki,"^%s*$") or nil;
  local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and mw.ustring.match(nazwa_artykulu,"^%s*$") or nil;
  local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and mw.ustring.match(uchwyt_obiektu,"^%s*$") or nil;
  if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
  		if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1])then
	 		self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][1]=0;
		end;
  end;
  if(czy_artykul_z_tylko_odstepami_lub_pusty)then 
		if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2])then
	 			self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][2]=0;
 		end;
  end;
  if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
		if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3])then
			self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu][3]=0;
		end;
  end;
end;
function p.ZbieranieInformacjiArtykolowKsiazek(self,tabela_parametrow_szablonu)
   local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1];
   local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2];
  
   local parametry_modul=require("Module:Parametry");
   local html_modul=require("Module:Html");
   if(nazwa_artykulu)then
   		nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
		nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
   	    nazwa_artykulu=parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
   	    local techniczne_modul=require("Module:Techniczne");
		nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
   end;
   if(pelna_nazwa_ksiazki)then
   		pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
		pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
   	    pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
   	    local techniczne_modul=require("Module:Techniczne");
		pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=self.nazwa_modulu_biezaca,};
   end;
   
   
   local ksiazkowe_modul=require("Module:Książkowe");
   pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
   nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
  
   local strona=pelna_nazwa_ksiazki..(parametry_modul.CzyTak(nazwa_artykulu) and ("/"..nazwa_artykulu) or "");
   
   local nazwy_modul=require("Module:Nazwy");
   local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
   local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona);
   local nazwa_ksiazki=nazwy_modul["SUBNAZWAKSIĄŻKI"](strona);
   local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
   local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.ZbieranieInformacjiPudelek(self,tabela_parametrow_szablonu)
	local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
	local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
	if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
	
	local parametry_modul=require("Module:Parametry");
	if(nazwa_jednostki and not parametry_modul["CzyTakCiąg"](nazwa_jednostki))then return;end;
	
	
	local szablonowe_modul=require("Module:Szablonowe");
	if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.OgolnyWzor()))
		 or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.OgolnyWzor()))
	)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);
		nazwa_jednostki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_jednostki);
   	    nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",};
	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);
		nazwa_przestrzeni=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_przestrzeni);
   	    nazwa_przestrzeni=parametry_modul["Odstępy"]{[1]=nazwa_przestrzeni,[2]="tak",};
	end;
	local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"]();
	
	local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
	local techniczne_modul=require("Module:Techniczne");
    strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
	
	strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona);
	
    local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
    local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona);
    local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona);
    local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
    
	local tabela_listy_danych_analizy_ksiazki=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
function p.LinkowanieOgolnie(self,tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,nazwa_obiektu, linkobiekt)
   local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
   local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
   local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
   local parametry_modul=require("Module:Parametry");
   uchwyt_obiektu=(uchwyt_obiektu)and parametry_modul["Odstępy"](uchwyt_obiektu) or nil;
   local nazwy_modul=require("Module:Nazwy");
   local html_modul=require("Module:Html");
   if(nazwa_artykulu)then 
   	    nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
   	    nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
   	    nazwa_artykulu=parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
   	    
   	    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);
       pelna_nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](pelna_nazwa_ksiazki);
       pelna_nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=pelna_nazwa_ksiazki,[2]="tak",};
       
       local techniczne_modul=require("Module:Techniczne");
       pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=self.nazwa_modulu_biezaca,};
       ----
   	   local ksiazkowe_modul=require("Module:Książkowe");
   	   pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki);
   	   
   	   nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki);
   	   nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki);
   	   nazwa_ksiazki=nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki);
   end;
   if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
    	if(nazwa_artykulu)then
    		if(nazwa_artykulu~="")then
        		if(not nazwa_ksiazki)then
        			nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
        			nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
        			nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
        		elseif(nazwa_ksiazki=="")then
        		   p:PusteParametryLinkow(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:PusteParametryLinkow(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_ksiazki;
        		nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
        	end;
        	if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
        		   or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki)
        		        or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)
        		             or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
        		p:LinkowanieNastepne(nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
        	else	
        		p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt);
        		p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); 
        	end;
    	else 
    		p:LinkowanieDalszePrace(tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt) 
    		p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); 
    	end;
   elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
   	   	  p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
   elseif(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu])then
   	  p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
   	  self.tabela_listy_danych_analizy_ksiazki.problemy.brak_uchwytu[nazwa_obiektu]=0;
   end;
end;
function p.LinkowanieDalszePrace(self,tabela_listy_danych_analizy_ksiazki2,nazwa_obiektu,uchwyt_obiektu,linkobiekt,Funkcja_sprawdzania_parametrow_linkow)
	local linkobiekttab=linkobiekt[nazwa_obiektu];
	local parametry_modul=require("Module:Parametry");
	if((not tabela_listy_danych_analizy_ksiazki2.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_ksiazki;
		local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
		local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
		if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then 
			p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
		end;
		tabela_listy_danych_analizy_ksiazki2.sprawdzenie_dokonane_linku=true;
	end;
    table.insert(linkobiekttab,uchwyt_obiektu);
end;
function p.LinkowanieNastepne(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu)
	if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not mw.ustring.match(nazwa_przestrzeni,"[|<>{}%[%]]")))or(nazwa_przestrzeni=="")))
		and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"[|<>{}%[%]]")))or(nazwa_przestrzeni_ksiazki=="")))
			and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]")))
				and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]")))or(nazwa_artykulu=="")))
	)then
        local parametry_modul=require("Module:Parametry");
		if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
			local tabela_listy_danych_analizy_ksiazki2={}
    		local tabela_listy_danych_analizy_ksiazki0=p:ZbieranieInformacji(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tabela_listy_danych_analizy_ksiazki2);
    		if(tabela_listy_danych_analizy_ksiazki0)then 
        			if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki0,})then return;end;
        			p:SprawdzCzyJestDostepnySpisTresci(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
        			local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
        			local ile_razy=0;
            		if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then                                 
            			for _, parametry_obiektu in pairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
                			if(parametry_obiektu[1]==uchwyt_obiektu)then
                    			ile_razy=ile_razy+1;
                    			if(ile_razy>1)then break;end;
                			end;                                      
            			end;
            		end
        			if(ile_razy~=1)then
            			if(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]==nil)then
            				self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron["Link"..nazwa_obiektu]=0;
            			end;
    				    p:PusteParametryLinkow(nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
        			end;
    		else
    			if(not self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera)then
    				self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
    			end;
    		end;
		else
    		p:PusteParametryLinkow(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
    	end;
    else
        if(self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron==nil)then
        	if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
        		     and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki)
        		         and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)
        		              and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then 
  		    	self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_korzystanych_stron=0;
  	    	else
  		        self.tabela_listy_danych_analizy_ksiazki.problemy.nieprawidlowe_nazwy_stron_doloczanych_do_stron=0;
        	end;
        end;
    end;
end;
function p.ZbieranieInformacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artukul_korzystany,tabela_listy_danych_analizy_ksiazki2,linkobiekt)
	local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
		if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
		local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[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_artykolow)then tablica_ksiazki.lista_artykolow={};end;
		if(not tablica_ksiazki.lista_artykolow[nazwa_artykulu])then tablica_ksiazki.lista_artykolow[nazwa_artykulu]={};end;
   
		local artykul_analizowany=tablica_ksiazki.lista_artykolow[nazwa_artykulu];
		return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
	end;
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
		if(not czy_artukul_korzystany)then
   			if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki and self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu)then
   				if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==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((nazwa_przestrzeni~=nazwy_np_modul.Main)
   	    	and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
   	        	and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
   	        		and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
   	        	)then
        		p:DodawanieElementowDoTablicy("strony_poza_zakresem_obslugiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
		end;
		if(self.tabela_listy_danych_analizy_ksiazki)then
    		if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)then
      			local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[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_artykolow;
        					if(lista_artykolow)then
         						local tabela_artykul=lista_artykolow[nazwa_artykulu];
         						if(tabela_artykul)then
         							return 0;
     	    					end;
         					end;
        				end;
      				end;
    			end;
    		else	
        		return nil; 
    		end;
		else 
    		return nil; 
		end;
		return true;
	end;
	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 nazwy_modul=require("Module:Nazwy");
	local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
	if(czy_artukul_korzystany)then
		self.nazwa_modulu_biezaca=nazwa_modulu;
	end;
	
	if(not czy_artukul_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;
				nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
			else
				return 0;
			end;
		end;
	end;
	----
    if(czy_artukul_korzystany)then 
   		if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu))then
   	  		self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
   	  		self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki;
   	    	self.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki=nazwa_ksiazki;
   	    	self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=nazwa_artykulu;
   		end;
    end;
    local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.zastepcza 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
   local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
   if(czy_artukul_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 tabela_listy_danych_analizy_ksiazki2)then 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_obiektow)do
    	local wartosc=element_w_tablicy_obiekt[1];
    	tabela_listy_danych_analizy_ksiazki2[wartosc]={};
    	if(czy_artukul_korzystany)then linkobiekt[wartosc]={};end;
    end;
    local function InneInformacjePrzebneDoAnalizowanejKsiazki()
       	if(not (p:Czy_jest_taki_element_w_tabeli_wynikow("strony_poza_zakresem_obslugiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
    		if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
    			local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.spis))and true or false;
        		if(not czy_ksiazka_istnieje_w_tablicy)then
        			local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");---
     				local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy=stronicowyparser_spistresci_modul.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artukul_korzystany);
     				if(tabela_artykulow==0)then 
     					if(czy_artukul_korzystany)then
	     					self.tabela_listy_danych_analizy_ksiazki.problemy.korzystane_strona_glowna_nie_istnieje=0;
    	 				else
     						p:DodawanieElementowDoTablicy("doloczone_strony_glowne_nie_istnieja",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
     					end;
     				else
     					if(tabela_artykulow)then 
     						if(czy_artukul_korzystany)then
     							tablica_ksiazki.spis=tabela_artykulow;
     	 					    tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
     	 					    tablica_ksiazki.nazwa_glownego_spisu=nazwa_glownego_spisu;
     	 					    tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
     	 					    tablica_ksiazki.dodatkowe_artykuly=dodatkowe_artykuly;
      						else 
     							tablica_ksiazki.spis=tabela_artykulow;
     	 					    tablica_ksiazki.nazwa_glownego_spisu=nazwa_glownego_spisu;
     	 					    tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
     	 					    tablica_ksiazki.dodatkowe_artykuly=dodatkowe_artykuly;
    						end;
    					else
    						if(czy_artukul_korzystany)then
     	 						if(not self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych)then 
	     	 					    if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu~=""))then
	     	 		   							self.tabela_listy_danych_analizy_ksiazki.problemy.brak_spisow_tresci_do_korzystanych_ksiazek_na_ich_stronach_glownych=0;
    	 	 		   				end;
     		 					end;
    						else
                				p:DodawanieElementowDoTablicy("brak_spisow_tresci_do_doloczonych_ksiazek_na_ich_stronach_glownych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
    						end;
    					end;
     				end;
				end;
    		end;
    	end;
    end;
    
    function StronaZbiorcza()
    	 if(czy_artukul_korzystany)then 
    	 	    local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
                local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
                return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,nil);
    	 end;
    	 return nil;
    end;
    InneInformacjePrzebneDoAnalizowanejKsiazki();
    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=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,true,(((czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),function(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,dokumentacja,czy_niezakodowana)
 				if(not tekst_rozwiniety_calego_artykulu)then return;end;
 				local __self=szablonowe_modul:TablicaModuluSzablonowe();
 				if((__self)and(tablica_obiektow_strony_dany_modul)and(not czy_niezakodowana))then
 					if(not __self.tablica_obiektow_strony_dany_modul)then __self.tablica_obiektow_strony_dany_modul={};end;
 					__self.tablica_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]=tablica_obiektow_strony_dany_modul;
 				end;
 				tekst_rozwiniety_calego_artykulu=tekst_rozwiniety_calego_artykulu and szablonowe_modul[czy_niezakodowana and "RozwinNiezakodowanySzablon" or "RozwinZakodowanySzablon"](__self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
    	    		local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
    	    		if(czy_nie_brak_parametrow)then return true;end;
    			end,
				function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
    				local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_szablonu);
    				if(nazwa_artykulu=="")then
    					return true;
    				end;
				end,
				function(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow)
					if(strona_zbiorcza)then
    	 				local techniczne_modul=require("Module:Techniczne");
    					if((tablica_ksiazki.spis_tresci)and(parametry_modul["CzySąElementyNazwaneTablicy"](tablica_ksiazki.spis_tresci)))then
    						for nazwa_spisu_tresci,tablica in pairs(tablica_ksiazki.spis_tresci)do
    							local adres_wzgledny_spisu_tresci=tablica.adres_wzgledny_spisu_tresci;
    							if(adres_wzgledny_spisu_tresci)then
    								local nazwa_artykulu_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")..adres_wzgledny_spisu_tresci;
  	    							if(pelna_nazwa_szablonu==nazwa_artykulu_spisu_tresci)then
  	    								return tablica.tekst;
  	    							end;
  	    						end;
    						end;
    					end;
    				end;
				end) or nil;
				return tekst_rozwiniety_calego_artykulu;
 		end, function(tekst_artykulu_caly,nazwa_modulu,tablica_obiektow_strony_dany_modul)
 			return nil;
 	end);
 		
 	if(not czy_artukul_korzystany)then
 		if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
 	end;
    
    if(czy_artukul_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_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
     	local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.zastepcza 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:IteratorSzablonowTekstu(tekst,aktualna_nazwa_modulu);
     		 for szablon,obiekt,kod in iterator do
     		 	if(obiekt=="TEMPLATE")then
     		 		local tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon);
     		 		if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_tresci[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_modulu_szablonowe=szablonowe_modul:TablicaModuluSzablonowe();
    local tablica_szablonow;
    if(not tablica_modulu_szablonowe.tablica_szablonow)then 
    	tablica_modulu_szablonowe.tablica_szablonow={};
    	tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
    else
    	tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
    end;
    local tablica_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu_aktualna_czy_biezaca];
    
    --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
    local iterator=szablonowe_modul:IteratorSzablonowTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca);
    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_artukul_korzystany)then
    			if(tabela_parametrow_szablonu)then
    				if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
    					if(stronicowyparser_obiekty_modul.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(stronicowyparser_obiekty_modul.strona_start_ze_spisem_tresci[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(stronicowyparser_obiekty_modul.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(stronicowyparser_obiekty_modul.strona_zbiorcza[nazwa_szablonu_wywolania]))then
    						    analiza_stron_korzystanych_zbiorczych=true;
    						    return;
    					end;
    				elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(stronicowyparser_obiekty_modul.strona_zbiorcza[nazwa_szablonu_wywolania]))then
    						    analiza_stron_korzystanych_zbiorczych=true;
    						    return;
    				end;
    			end;
    		end;
    		
    		--local nazwa_szablonu,tabela_modyfikatorow,czy_z_parametrami=szablonowe_modul["NazwaSzablonuWywołania"](uzyskano_w_wyniku_parsowania_wywolanie_szablonu);--mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
    		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 linkobiekt2;
            			local link;
            			if(czy_wypowiedzenie)then 
            				linkobiekt2=false;
            				link=false;
            			else
            				linkobiekt2=(nazwa_szablonu_wywolania=="LinkObiekt");
            				if(linkobiekt2)then
            					link=true;
            				else
            					link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
            				end;
            			end;
            			local czy_obsluzone=true;
            			local funkcja_aliasow=function(nazwa_szablonu_wywolania,elementy_w_tablicy_obiekty)
            				--local wzor_nazwy_szablonu1=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
               	    		--local czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu1.."$");
               	    		local czy_aliasy=(nazwa_szablonu_wywolania==elementy_w_tablicy_obiekty[1]);
               	    		if(not czy_aliasy)then
               	    	    	if(elementy_w_tablicy_obiekty[2])then
               	    	    		if(type(elementy_w_tablicy_obiekty[2])=="table")then
               	    					for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
               	    	    				--local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
               	    	    				--czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu2.."$");
               	    	    				czy_aliasy=(alias==nazwa_szablonu_wywolania);
               	    	    				if(czy_aliasy)then
               	    	    					break;
               	    	    				end;
               	    					end;
               	    				else
               	    	    			--local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[2],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
               	    	    			--czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu2.."$");
               	    	    			czy_aliasy=(nazwa_szablonu_wywolania==elementy_w_tablicy_obiekty[2]);
           	        				end;
               	        		end;
               	        	end;
       	        	    	return czy_aliasy;
            			end;
            			for _,elementy_w_tablicy_obiekty in pairs(stronicowyparser_obiekty_modul.tablica_mozliwych_obiektow_bez_obiektu_nienazwanego)do
              				local wartosc_elementu=elementy_w_tablicy_obiekty[1];
              				if(not link)then
           	        			local czy_aliasy=czy_wypowiedzenie or funkcja_aliasow(nazwa_szablonu_wywolania,elementy_w_tablicy_obiekty);
              					if(czy_aliasy)then
              						if(not stronicowyparser_obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
              			    			if((not czy_wypowiedzenie)
              			    		    	or((czy_wypowiedzenie)and(
              			    		        	(tabela_parametrow_szablonu["rodzaj"]==wartosc_elementu)
              			    				    ))
              			    			)then
              								p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[5]);
              					    		czy_obsluzone=false;
              								if(czy_artukul_korzystany)then
              						    		if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              						      			local uchwyt_obiektu= tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
              						        		if(uchwyt_obiektu and not mw.ustring.match(uchwyt_obiektu,"^%s*$"))then
              						      	  			self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              						        		end;
              						    		end;			
              								end;
              								break;
              			    			end;
          							else
          								self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
          								break;
              			    		end;
              					end;
              				elseif(czy_artukul_korzystany)then
              					if(link)then
              						local funkcja_aliasow_2=function(zmienna)
              								if(wartosc_elementu~=zmienna)then return false;end;
            								local wzor_nazwy_szablonu1="Link"..wartosc_elementu;
               	    						--local czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu1.."$");
               	    						local czy_aliasy=(nazwa_szablonu_wywolania==wzor_nazwy_szablonu1);
               	    						local szablon;
               	    						if(not czy_aliasy)then
               	    	    					if(elementy_w_tablicy_obiekty[3])then
               	    	    						if(type(elementy_w_tablicy_obiekty[3])=="table")then
               	    									for _,alias in pairs(elementy_w_tablicy_obiekty[3])do
               	    	    								--local wzor_nazwy_szablonu2=mw.ustring.gsub(alias,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
               	    	    								--czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu2.."$");
               	    	    								czy_aliasy=(nazwa_szablonu_wywolania==alias);
               	    	    								if(czy_aliasy)then
               	    	    									szablon=alias
               	    	    									break;
               	    	    								end;
               	    									end;
               	    								else
               	    	    							--local wzor_nazwy_szablonu2=mw.ustring.gsub(elementy_w_tablicy_obiekty[3],"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
               	    	    							--czy_aliasy=mw.ustring.match(nazwa_szablonu_wywolania,"^"..wzor_nazwy_szablonu2.."$");
               	    	    							czy_aliasy=(nazwa_szablonu_wywolania==elementy_w_tablicy_obiekty[3]);
               	    	    							if(czy_aliasy)then szablon=elementy_w_tablicy_obiekty[3];end;
               	    	    						end;
       	        								end;
           	        						else
           	        							szablon="Link"..wartosc_elementu;
               	        					end;
       	        	    					return czy_aliasy,szablon;
            							end;
              							if(not stronicowyparser_obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[wartosc_elementu])then
              								local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
              								local alias,szablon=funkcja_aliasow_2(wartosc_elementu);
              								if((alias)or((linkobiekt2)and(tabela_parametrow_szablonu["typ"]==typ)))then
              									p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,wartosc_elementu, linkobiekt);
              									
              									if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              										local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
              										self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=((alias)and szablon or "LinkObiekt")..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              									end;
          				    		    		czy_obsluzone=false;
              									break;
              								end;
              							else
              								local tak=nil;
              								for naglowek,_ in pairs(stronicowyparser_obiekty_modul.szablony_naglowka)do
              									local alias,szablon=funkcja_aliasow_2(naglowek);
              									if(alias)then
              										tak=tak or true;
              										self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
              										self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
              									
              										p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,naglowek, linkobiekt);
              									
              										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;
              										czy_obsluzone=false;
              										if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              											local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[5]];
              											self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=szablon..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              										end;
          				    					end;
              								end;
              								if(tak)then break;end;
              							end;
              						end;
              					end;
            				end;
            				if(czy_obsluzone)then
                				if(czy_wypowiedzenie)then
		               				p:ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy_danych_analizy_ksiazki2,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artukul_korzystany,stronicowyparser_obiekty_modul.obiekty[5]);
		               				if(czy_artukul_korzystany)then
              							if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              				    			 local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[stronicowyparser_obiekty_modul.obiekty[5]];
              				    			self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt"..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
              							end;			
          			    			end;
               					elseif(czy_artukul_korzystany)then
               						if(linkobiekt2)then
               							p:LinkowanieOgolnie(tabela_listy_danych_analizy_ksiazki2,tabela_parametrow_szablonu,"Obiekt", linkobiekt);
               							if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then 
              								local uchwyt_obiektu=tabela_parametrow_szablonu[elementy_w_tablicy_obiekty[1]] or tabela_parametrow_szablonu["uchwyt"];
              			    				self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
       	        						end;
       	        					else
       	        						--for wartosc_elementu,_ in pairs(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_tresci)do
       	        							  --local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
       	        							  if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_tresci[nazwa_szablonu_wywolania])then
       	        							  		self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
       	        							  		--break;
       	        							  end;
       	        						--end;
       	        						--for wartosc_elementu,_ in pairs(stronicowyparser_obiekty_modul.bez_uchwytow_spis_tresci)do
              								--local wzor_artykolow_ksiazek=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
              								if(stronicowyparser_obiekty_modul.bez_uchwytow_spis_tresci[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;
              									p:ZbieranieInformacjiArtykolowKsiazek(tabela_parametrow_szablonu);
              									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;
              									
              									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="ArtykułKsiążki:"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
              									end;
              									--break;
              			    				end;
                						--end;
                					
                						--for wartosc_elementu,_ in pairs(stronicowyparser_obiekty_modul.szablony_pudelka)do
              								--local wzor_szablonu_pudelka=mw.ustring.gsub(wartosc_elementu,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end)
              								if(stronicowyparser_obiekty_modul.szablony_pudelka[nazwa_szablonu_wywolania])then
              									p:ZbieranieInformacjiPudelek(tabela_parametrow_szablonu);
              									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;
              									--break;
              			    				end;
                						--end;
                				end;
                			end;
                		end;
            		end;
        		end;
        	end; 
    	end;
    	stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
    end;
   tablica_ksiazki.lista_artykolow[nazwa_artykulu].uchwyty_i_numeracje=tabela_listy_danych_analizy_ksiazki2;
   
   if(czy_artukul_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);
   	   end;	
   end;
   
   	local strona;
    if(czy_artukul_korzystany)then strona="";else strona=nazwa_modulu;end;
   
   local toc;
   if(((czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
   	  or((not czy_artukul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
   	   	  for naglowek,dane_naglowka in pairs(stronicowyparser_obiekty_modul.szablony_naglowka)do
    		local toc=require("Module:"..dane_naglowka[1])[dane_naglowka[2]](self,tekst_rozwiniety_calego_artykulu,strona,tabela_listy_danych_analizy_ksiazki2[naglowek], nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu, czy_artukul_korzystany);
    		tablica_ksiazki.lista_artykolow[nazwa_artykulu].TOC=toc;
    	end;
   end;
   if(czy_artukul_korzystany)then
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu=tabela_listy_danych_analizy_ksiazki2;
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
   	   self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
   end;
   return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SprawdzLinki(self,tabela_listy_danych_analizy_ksiazki2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu)
    if((not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2])or(nazwa_artykulu==""))then
    	for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
   			local czy_uchwyty_nie_sa_ponumerowane=true;
    		for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu1]) do
            	if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
               		if(elementy_w_tablicy_obiekt_lub_wypowiedzenie2[2])then
               			czy_uchwyty_nie_sa_ponumerowane=false;
                		break;
                    end;
            	end;
    		end;
        	if(czy_uchwyty_nie_sa_ponumerowane)then
        		local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
        		if(czy_tylko_ze_znakami_odstepu_lub_puste)then
        	    	if(not self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]) then
                		self.tabela_listy_danych_analizy_ksiazki.problemy.puste_parametry_szablonow_stronicowych_linkujacych[nazwa_obiektu1][1]=0;
                	end;
                	return;
        		elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]==nil)then
            		self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu2]=0;
                    return;
            	end;
        	end;
    	end;
    end;
end;
function p.PrzetworzMozliweWszystkieRodzajeObiektow(self, dane_artykulu,biezacy_artykul,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
   for _,element_w_podtablicy_kategorii_bledow in pairs(stronicowyparser_obiekty_modul.tablica_obiektow)do
   	    local element_obiekty=element_w_podtablicy_kategorii_bledow[1];
		tabela_listy_danych_analizy_ksiazki=p:Sprawdzanie_i_numerowanie(dane_artykulu,biezacy_artykul,element_obiekty,numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja);
   end;
end;
function p.PrzetworzZebraneInformacje(self,tabela_listy_danych_analizy_ksiazki2,linkobiekt,nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2)
	 local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	 local parametry_modul=require("Module:Parametry");
	 for nazwa_przestrzeni,tablica_nazw_przestrzeni_ksiazek in pairs(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu)do
	 	for nazwa_przestrzeni_ksiazki, tablica_nazw_ksiazek in pairs(tablica_nazw_przestrzeni_ksiazek)do
			for nazwa_ksiazki,tablica_nazw_artykulow in pairs(tablica_nazw_ksiazek)do
    			for nazwa_artykulu, dane_artykulu in pairs(tablica_nazw_artykulow.lista_artykolow) do
    		    	local biezacy_artykul=dane_artykulu.artykul_biezacy;
    				local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
    				if(nazwa_ksiazki)then
    					if(nazwa_artykulu=="")then 
    						czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
    					else
     						local tab_ksiazki=tablica_nazw_artykulow.spis;
     						if(tab_ksiazki)then
     							for _,tab_rozdzialu in pairs(tab_ksiazki)do
     								if(tab_rozdzialu[2])then
     							 		for _,nazwa_artykulu1 in ipairs(tab_rozdzialu[2])do
     										if((parametry_modul.TypeTable(nazwa_artykulu1[1])and nazwa_artykulu1[1][1] or nazwa_artykulu1[1])~=nazwa_artykulu)then 
	     										numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
	     									else 
    	 										czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
     										end;
     								 	end;
     								end;
 	   								if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then break;end;
	     						end;	
 		   					end;
    					end;
     					local function Problemy_z_doloczonymi_uchywtami(nazwa_obiektu)
     					    p:DodawanieElementowDoTablicy("bledy_uchwytow_doloczonych_stron",nazwa_obiektu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
	     				end;
    	 				if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
     						p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,numer_obiektu_w_ksiazce,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
    					elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
            				p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
	     	    		end;
    				else
        	    		p:PrzetworzMozliweWszystkieRodzajeObiektow(dane_artykulu,biezacy_artykul,0,stronicowyparser_obiekty_modul,Problemy_z_doloczonymi_uchywtami);
    				end;
	        	end;
			end;
		end;
	 end;
    for _,obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektow)do
     	local obiekt2=obiekt[1];
        p:SprawdzLinki(tabela_listy_danych_analizy_ksiazki2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,nazwa_artykulu2);
    end;
    return tabela_listy_danych_analizy_ksiazki;
end;
function p.Sprawdzanie_i_numerowanie(self, dane_artykulu, biezacy_artykul, nazwa_obiektu, numer_artykulu_w_ksiazce,stronicowyparser_obiekty_modul,__Funkcja)
	local parametry_modul=require("Module:Parametry");
	if(not dane_artykulu.uchwyty_i_numeracje)then return;end;
	local tabela_obiektu=dane_artykulu.uchwyty_i_numeracje[nazwa_obiektu];
	if(not tabela_obiektu)then return;end;
	
	if(stronicowyparser_obiekty_modul.nienumerowane_z_uchwytami_szablony_naglowka[nazwa_obiektu])then
		return tabela_listy_danych_analizy_ksiazki;
	end;
	
	for licznik,element_obiektu in pairs(tabela_obiektu)do
    	local czy_numerowac=true;
		for licznik2=1, licznik-1,1 do
   	    	if((tabela_obiektu[licznik2][1])and(element_obiektu[1]==tabela_obiektu[licznik2][1]))then
            	if(biezacy_artykul)then
            		if(not self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu])then
                		self.tabela_listy_danych_analizy_ksiazki.problemy.bledy_uchwytow_korzystanych_stron[nazwa_obiektu]=0;
                	end;
            	else
					__Funkcja(nazwa_obiektu);
            	end;
            	tabela_obiektu[licznik2][1]=nil;
            	czy_numerowac=false;
        	end;
		end;
    	if(czy_numerowac)then
      		if(numer_artykulu_w_ksiazce>0)then
      			element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
      		elseif(numer_artykulu_w_ksiazce==0)then
      			element_obiektu[2]=licznik
    		elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
            	self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0
      		end;	
    	end;
	end;
   return tabela_listy_danych_analizy_ksiazki;
end;
return p;