Przejdź do zawartości

Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron

Z Wikibooks, biblioteki wolnych podręczników.
 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 tabela_nazw={};
    	local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony,tabela_nazw);
    	local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
    	local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
    	local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
    	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);
        		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 stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
    local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.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 stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
    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 szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
    
    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
    	local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
		local szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
    	local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
    	
    	local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)   
    	    if(czy_szablon)then
    			return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
    				local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
    				if(numer_parametru)then
    					local parametr=tabela_parametrow_szablonu[numer_parametru];
    					if(parametr)then
    						local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
    						if(naglowek)then
    							return funkcja1(parametr);
    						end;
    					end;
					else
						local numer_parametru=szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu[nazwa_szablonu];
						if(numer_parametru)then
							local function ParametrNR(numer)
								local indeks=numer_parametru[numer];
								local parametr=((indeks)and 
													(
														(indeks[2] and tabela_parametrow_szablonu[indeks[2]] or nil)
														or (indeks[1]and tabela_parametrow_szablonu[indeks[1]] or nil)
													)or nil
												);
								return parametr;
							end;
							local parametr=ParametrNR(1);
							if(parametr)then
								if(czy_liczyc)then
									local poziom=mw.ustring.rep("=",6);
									local adres_ksiazki=ParametrNR(2);
									local nazwa_modulu_aktualna_czy_biezaca_strony=adres_ksiazki and ParametrNR(2) or nazwa_modulu_aktualna_czy_biezaca;
									
									local adres=nazwa_modulu_aktualna_czy_biezaca_strony..((parametr~="")and ("/"..parametr)or "");
									adres,rezultat=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(adres,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or adres;
									if(not rezultat)then
										local modyfikatory;local tabela_modyfikatorow;
										adres,modyfikatory,tabela_modyfikatorow=szablonowe_modul.WydzielanieOpcjiModyfikatorowych(adres);
										adres=stronicowyparser_potrzebne_modul.RozwijanieZakodowanejNazwySzablonu(adres,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
									end;
										
									adres=stronicowyparser_potrzebne_modul.DekodowanieTekstu(adres,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
									
									parametr=ParametrNR(3) or parametr;
									local dodatek=ParametrNR(4);
									parametr=parametr..((dodatek) and (" "..dodatek) or "");
									local ile,_=techniczne_modul.PoliczZbiory{[1]=adres,};
									local ObiektKodNumer=function(szablon,obiekt)
										local tablica_analizy_obiektow_strony_dany_modul_numer=tablica_analizy_obiektow_strony_dany_modul[obiekt];
										local kod_numer=1;
										for name,_ in pairs(tablica_analizy_obiektow_strony_dany_modul_numer)do
											kod_numer=math.max(kod_numer,name);
										end;
										kod_numer=kod_numer+1;
										tablica_analizy_obiektow_strony_dany_modul_numer[kod_numer]=szablon;
										local kod_szablonowe=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod_numer);
										return kod_szablonowe;
									end;
									if(ile>0)then
										local parametr=poziom..parametr..poziom;
										return funkcja1(parametr);
									else
										local szablon="<span style=\"color:red;\">"..parametr.."</span>";
										local kod_parametr=ObiektKodNumer(szablon,"ZNACZNIK");
										local parametr=poziom..kod_parametr..poziom;
										return funkcja1(parametr);
									end;
								else
									return funkcja1(parametr);		
								end;
							end;
						end;
    				end;
    			end);
    		elseif(czy_znacznik)then
    			local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
    			if((zawartosc)and(nazwa))then
    				if(znaczniki_wprowadzenia_tekstu[nazwa])then
    					return funkcja2(nazwa,zawartosc,atrybuty);
    				end;
    			end;
    		end;
    	end;
    	tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,nil,
    	function(szablon,obiekt,kod)
    		local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");local czy_wikitabelka=(obiekt=="WIKITABELA");
    		if((czy_szablon)or(czy_znacznik)or(czy_wikitabelka))then
				local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,false,function()return true;end,function()return true;end);  
				if(wynik)then return true,nil,nil,true;end;
    			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,nil,nil,true;
        			end;
        		end;
			end;
    	end,
    	function(szablon,obiekt,kod)
    		local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
    		local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,true,
    			function(parametr)
    				parametr=mw.ustring.gsub(parametr,"\n"," ");
    				return "\n"..parametr.."\n ";
    			end,
    			function(nazwa,zawartosc,atrybuty)
    				if((zawartosc)and(nazwa))then
    					local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
    					zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
						local poziom_rowna=mw.ustring.rep("=",poziom);
    					return "\n"..poziom_rowna..zawartosc..poziom_rowna.."\n ";
    				end;
    			end);  
    		if(wynik)then return wynik;end;
    		return nil;
    	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 CzyJestTakiProblemJakoElementTablicy=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[3] 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=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or 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
       		return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
   				----
        		local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu];
        		if(jest_naglowkuj_w_tekscie_rozdzialu)then
            		local numeracja=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_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);
            		return true;
        		end;
        		return false;
       		end,
       		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
       			return false;
       		end,
       		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
       			return false;
       		end);
        end;
	    return false;
    end;
	local RefPrzypisowy=function(obiekt,kod)
        return "&#91;"..((obiekt~="") and (obiekt.." ") or "")..kod.."&#93;";
	end;
    
    local specjalne_modul=require("Module:Specjalne");
    
    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(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_indeksowanie=nil;
        local function SzablonyWywolywane(szablon,obiekt,kod)
       		return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)

            	powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
            	local czy_naglowek=tab_naglowki[nazwa_szablonu];
            	local czy_tak_naglowki=((czy_naglowek)and(mw.ustring.match(nazwa_szablonu,"^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])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])or	(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))then 
            		czy_szablony=true;
            		if(not czy_artykul_korzystany)then
            			tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
            			tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_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,"^Link"))then
            					stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
            				else
            					stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
            				end;
            			end;
            		end;
					return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
            	elseif((tab_szablony_strona_start[nazwa_szablonu])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu]))then
					return "";
            	elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])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_indeksowanie)and(tab_szablony_indeksowania[nazwa_szablonu]))then
					return nil,true;
            		end;
            	return szablon;
       		end,
        	function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
        		return szablon;
        	end,
        	function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
        		return szablon;
        	end);
        end;
        --naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny);
        
        --naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>","");
		--naglowek=Korekta(naglowek);
        ---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
		local nazwa_rozdzialu_w_artykule;
		if(not czy_kodowanie)then
			nazwa_rozdzialu_w_artykule,naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,true,false);			
		else
			local function SzablonyWywolywaneOgolny(naglowek)
	        	local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"](
	        		{
	        			tekst=naglowek,
	        			["nagłówek"]=true,
	        			nieklasycznie=true,
	        			kodowanie=false,
	        			["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul,
	        		},
	        		function(szablon,obiekt,kod)
	        			local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod);
	        			return szablon,wynik;
	        		end,
	        		function(szablon,obiekt,kod)
	        			return czy_indeksowanie;
	        		end);
	        	return naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne;
	        end;
        	czy_indeksowanie=true;
			local Znaczniki;local SzablonyStylowe;local ZnakiSpecjalne;
        	naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=SzablonyWywolywaneOgolny(naglowek);
	        nazwa_rozdzialu_w_artykule=naglowek;
			
        	naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
        		if(obiekt=="SZABLON")then
       				return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   						if(tab_szablony_indeksowania[nazwa_szablonu])then return "";end;
       				end);
   				end;
   			end);
        	czy_indeksowanie=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)
        		if(obiekt=="ATRYBUTY")then 
        			return nil,true;
        		elseif(obiekt=="SZABLON")then
	        		szablon=SzablonyWywolywaneOgolny(szablon);
	        		return szablon;
	        	end;
    	    	--szablon=Korekta(szablon);
    	    	--szablon=specjalne_modul["UsuńSzablonyStylów"](szablon);
    	    	--szablon=specjalne_modul["UsuńZnakiSpecjalne"](szablon);
        		return szablon;
        	end);
        	nazwa_rozdzialu_w_artykule=SzablonyStylowe(nazwa_rozdzialu_w_artykule);
    	    nazwa_rozdzialu_w_artykule=ZnakiSpecjalne(nazwa_rozdzialu_w_artykule);
			
			nazwa_rozdzialu_w_artykule=Znaczniki(nazwa_rozdzialu_w_artykule);		
			if(not czy_szablony)then
				nazwa_rozdzialu_w_artykule=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu_w_artykule);
	        	nazwa_rozdzialu_w_artykule=html_modul.EncodeSpecjalneZnakiHtml(nazwa_rozdzialu_w_artykule);
	        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*)","(%d+)"),function(obiekt,kod) 
        		return "<sup>"..RefPrzypisowy(obiekt,kod).."</sup>";
        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 RefPrzypisowy(obiekt,kod);
        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(czy_kodowanie)then
    	if(czy_artykul_korzystany)then
    		local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
			if(not CzyJestTakiProblemJakoElementTablicy())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;
return p;