Przejdź do zawartości

Moduł:StronicowyParser/AnalizaSpisuRzeczy

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    local tak=false;
    local techniczne_modul=require("Module:Techniczne");
    linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
    for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
    	tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
    	if(tak)then return true;end;
    end;
    return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do)
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local techniczne_modul=require("Module:Techniczne");
    while(true)do
    	local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,true);
    	if(liczba_start_rozdzial)then
    		rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial);
    		local czy_zerowy_spis_rzeczy;
    		for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do
    			czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor);
    			if(czy_zerowy_spis_rzeczy)then break;end;
    		end;
    		if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then
    			return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
    		else
    			liczba_od=liczba_start_rozdzial;
    		end;
    	else
    		return;
    	end;
    end;
	return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
	if(obiekt=="SZABLON")then
		return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
			local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
			if(not czy_ce)then return;end;
			local zawartosc=tabela_parametrow_szablonu[czy_ce];
			if(not zawartosc)then return;end;
			return true;
		end);
	elseif(obiekt=="ZNACZNIK")then
		local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
		if((nazwa)and(zawartosc))then
			if(nazwa=="center")then
				return true;
			end;
		end;
	end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
	local szablonowe_modul=require("Module:Szablonowe");
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	while(true)do
		local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
		if(liczba_start_rozdzial)then
			if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
				local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
				local szablon,obiekt,kod,poziom_iteracji=iterator();
				local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
				if(not wynik)then
					local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
					if((rozdzial)and(czy_standardowe_rozdzialy))then
						return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
					end;
				end;
			end;
			if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
		else
			return;
		end;
	end;
	return nil;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
   local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
   local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
   local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
	if(not kom)then
		local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
		if(tab)then
			if(numer_rodzaju_artykulu==1)then
				local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
				local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
				local function StronyWstepu(artykul)
					local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
					local tak=true;
					for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
						tak=tak and (not mw.ustring.match(artykul,wzor));
						if(not tak)then return tak;end;
					end;
					return tak;
				end;
				if((czy_glowny_spis_tresci)and(artykul==""))then
					return false,numer_rodzaju_artykulu,czy_podrecznik,false;
				else
					if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
						return true,numer_rodzaju_artykulu,czy_podrecznik,false;
					else
						return true,numer_rodzaju_artykulu,czy_podrecznik,true;
					end;
				end;
			else
				return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
			end;
		end;
	end;
	return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
	if(obiekt=="SZABLON")then
	  	local szablonowe_modul=require("Module:Szablonowe");
	  	local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   		----
 			if(nazwa_szablonu=="SpisTreści")then
 				return true,1;
 			else
 				local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
 				local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
 				if(tabela_spisu)then
 					local parametr_linku;
 					if(tabela_spisu[1]==true)then
 						local numer_link=tabela_spisu["numer_link"];
 						parametr_linku=tabela_parametrow_szablonu[numer_link];
 					else
 						local numer_link=tabela_spisu["link"];
 						parametr_linku=tabela_parametrow_szablonu[numer_link];
 					end;
 					if(parametr_linku)then
 						local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
 						for szablon,obiekt,kod in iterator do
 							if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
 								local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
 								if(czy_element_spisu)then
 									return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
 								end;
 							end;
 						end;
 					end;
 				end;
 			end;
	  	end);
 		if(czy_element_spisu)then
 			return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
 		end;
   end;
   return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
    local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
     if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
    	czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
    end;
    return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak)
    if(not czy_od_tylu)then
    	if((liczba)and(liczba2)and(liczba>liczba2))then return;end;
    	local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba);
    	if((a)and(b)and(a>b))then return;end;
    	if((not liczba2)or(b<=liczba2))then
    		return a,b,c,d,e,f,g,h,i,j,k,l;
    	end;
    	return nil;
    else
    	if((liczba)and(liczba2)and(liczba<liczba2))then return;end;
    	local liczba_start=liczba2 or 1;
    	local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil;
    	while(true)do
    		local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start);
    		if((a1)and(b1)and(a1>b1))then return;end;
    		if((not b1)or((b1)and(b1>liczba)))then 
    			return a,b,c,d,e,f,g,h,i,j,k,l;
    		elseif((b1)and(b1==liczba))then
    			return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
    		end;
    		a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1;
    		if(not jak)then
    			if(a1==b1)then
    				liczba_start=b1+1;
    			else
    				liczba_start=b1;
    			end;
    		else
    			liczba_start=b1+1;
    		end;
    	end;
    end;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
    local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
    local szablonowe_modul=require("Module:Szablonowe");
    local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
    while(true)do
    	local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
    	if(liczba_start_szablon)then
    		liczba_obiekt_start_od_tylu=liczba_start_szablon;
    		local obiekt="SZABLON";
    		local kod=kod_szablon and tonumber(kod_szablon) or nil;
    		local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    		----
    		local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
    			if(nazwa_szablonu=="Licencja")then
					return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
				end;
    		end);
    		if(liczba_koniec_szablon)then
    			return liczba_koniec_szablon,norma_wzoru;
    		end;
    	elseif(not liczba_start_szablon)then
    		return nil;
    	end;
    end;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local szablonowe_modul=require("Module:Szablonowe");
	local parametry_modul=require("Module:Parametry");
	local techniczne_modul=require("Module:Techniczne");
	local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
    
    local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
	
	local liczba_start_szablon;local liczba_koniec_szablon;
	local liczba_wys_szablon=liczba;
	local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
	local spis_naglowka_szablon;
	local spis_naglowka_szablon_stare;
	while(true)do
		local kod;
		liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu);
		if(liczba_start_szablon)then
			if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end;
			local obiekt="SZABLON";
			kod=kod and tonumber(kod) or nil;
			local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
			local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
				local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
				if(liczba_szablon_centrowany)then
					local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
					if(naglowek)then
						if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
							if(czy_spis_tresci)then
								spis_naglowka_szablon_stare=naglowek;
								spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
								spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
								if(czy_spis_tresci(spis_naglowka_szablon))then
									return false;
								end;
							else
								spis_naglowka_szablon=naglowek;
								return false;
							end;
						end;
					end;
				end;
				return true;
			end,nil,nil,nil,nil,nil,nil,nil,nil,
			function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
				return true;
			end);
			if(not wynik)then 
				break;
			end;
		else
			break;
		end;
	end;
	local liczba_start_znacznik;local liczba_koniec_znacznik;
	local liczba_wys_znacznik=liczba;
	local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
	local spis_naglowka_znacznik;
	local spis_naglowka_znacznik_stare;
	while(true)do
		local kod;
		liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu);
		if(liczba_start_znacznik)then
			if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end;
			local obiekt="ZNACZNIK";
			kod=kod and tonumber(kod) or nil;
			local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
			local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
			if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
				if(zawartosc)then
					if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
						if(czy_spis_tresci)then
							spis_naglowka_znacznik_stare=zawartosc;
							spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
							spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
							if(czy_spis_tresci(spis_naglowka_znacznik))then
								break;
							end;
						else
							spis_naglowka_znacznik=zawartosc;
							break;
						end;
					end;
				end;
			end;
		else
			break;
		end;
	end;
	local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
	local liczba_start_dodatni;local liczba_koniec_dodatni;
	local liczba_wys_dodatni=liczba;
	local spis_naglowka_dodatni;
	local spis_naglowka_dodatni_stare;
	local spis_naglowka_poziom;
	while(true)do
		local naglowek;
		liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu);
		if(not liczba_start_dodatni)then break;end;
		if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end;
		local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
		if(naglowek)then
			if(czy_spis_tresci)then
				spis_naglowka_dodatni_stare=naglowek;
				spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
				spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
				spis_naglowka_poziom=poziom_naglowka;
				if(czy_spis_tresci(spis_naglowka_dodatni))then
					break;
				end;
			else
				spis_naglowka_dodatni=naglowek;
				spis_naglowka_poziom=poziom_naglowka;
				break;
			end;
		end;
	end;
	if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
		local _max_min;
		if(czy_od_tylu)then
			_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
		else
			_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
		end;
		if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
			local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon;
			if((not czy_spis_tresci)and(spis_naglowka_szablon))then
				spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
				spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",};
			end;
			return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare;
		elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
			local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik;
			if((not czy_spis_tresci)and(spis_naglowka_znacznik))then
				spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
				spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",};
			end;
			return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare;
		elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
			local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni;
			if((not czy_spis_tresci)and(spis_naglowka_dodatni))then
				spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
				spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",};
			end;
			return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom;
		end;
	end;
	return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	local szablonowe_modul=require("Module:Szablonowe");
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
	local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;

	local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
	local linki=function(zawartosc)
		local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
		for szablon,obiekt,kod in iterator do
			if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
				local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
				return szablon,obiekt,kod,dalszy_tekst;
			elseif(obiekt=="SZABLON")then
				local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
					if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
						or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
					)then
						local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
						return szablon,obiekt,kod,dalszy_tekst;
					end;
					local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
					if(tab_szablon_link_intelignetny)then
						local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
						return szablon,obiekt,kod,dalszy_tekst;
					end;
				end);
				return szablon,obiekt,kod,dalszy_tekst;
			end;
			return nil;
		end;
	end;
	if(obiekt=="SZABLON")then
		local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
			local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
			if(not czy_ce)then return nil;end;
			local zawartosc=tabela_parametrow_szablonu[czy_ce];
			if(not zawartosc)then return nil;end;
			local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
			if((szablon)and(obiekt)and(kod))then
				return szablon,obiekt,kod,dalszy_tekst;
			end;
			return nil;
		end);
		return szablon,obiekt,kod;
	elseif(obiekt=="ZNACZNIK")then
		 local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
		 if(zawartosc)then
		 	if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
		 		local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
				if((szablon)and(obiekt)and(kod))then
					return szablon,obiekt,kod,dalszy_tekst;
				end;
				return nil;
		 	end;
		 end;
		 return nil;
	end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu)
    local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
    local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10;
    local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu;
    if(not czy_od_tylu)then
    	if((not liczba_start_tekst)or(liczba_start_tekst==1))then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
    	end;
    	if(not liczba_start_rozdzial)then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
    		if(not liczba_start_rozdzial)then
    			if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then
					liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
				end;
				if(not liczba_start_rozdzial)then
					if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then
						liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
					end;
				end;
    		end;
    	end;
    else
    	if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
    	end;
    	if(not liczba_start_rozdzial)then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
    		if(not liczba_start_rozdzial)then
    			if((not liczba2)or(liczba2==1))then
					liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
				end;
				if(not liczba_start_rozdzial)then
					if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then
						liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
					end;
				end;
    		end;
    	end;
    end;
    return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
    local tak=false;
    local szablonowe_modul=require("Module:Szablonowe");
	local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
	for szablon,obiekt,kod in iterator do
		--czy_w_petli=true;
	 	local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
		if((czy_element_spisu)and(not czy_okladka))then 
	 		return true;
		elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
 			tak=true;
		elseif(czy_okladka)then
 			tak=true;
 		end;
	end;
	return (not tak);
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
    return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
    	if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
    		local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
    		if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
    			or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
    				or(mw.ustring.match(str,"^[%s%p%w]*$")))
    		)then return nil;end;
    		local ile_punktowanych=0;
    		local szablonowe_modul=require("Module:Szablonowe");
    		local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
    			if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
    				ile_punktowanych=ile_punktowanych+1;
				else
    				local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
    				for szablon,obiekt,kod in iterator do    			
    					local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    					if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
    						ile_punktowanych=ile_punktowanych+1;
    						break;
    					end;
    				end;
    			end;
    		end);
    		if(ile_punktowanych>=ile)then
    			return nil;
    		end;
    		str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
    		if(not mw.ustring.match(str,"^%s*$"))then
    			if(czy_zeruj)then
    				tab_zmienne.liczba_nie_okladka_artykul=nil;
    				tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
    				tab_zmienne.czy_ten_rozdzial=nil;
    				--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
    			end;
    			return true;
    		end;
    	end;
    	return nil;
	end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
    local odtylu=liczba_obiekt_start_spac_par;
    local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
    local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
    local czy_fun=false;
    local czy_pierwszy=nil;
    local liczba_koniec_naglowek_poczt=nil;
    while(true)do
    	local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
    	if(czy_dodatni==1)then
			local _;
    		liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    	elseif(czy_dodatni==2)then
    		liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[%*#:;<>]+[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    	else
    		liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    	end;
    	if(not liczba_start_naglowek_nowe)then 
    		break;
    	else
    		poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
    		local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
    							
    		if(czy_tak_spisowe)then
    			if(not czy_pierwszy)then
    				liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
    				czy_pierwszy=true;
    			end;
    			if(liczba_start_naglowek)then
    				if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
						if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
	    					local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
		    					if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"))and((czy_dodatni==1)and(poziom_naglowka_nowe>=poziom_naglowka)or(czy_dodatni~=1)))then
	    						liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
								break;
	    					end;
						end;
    				elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
    					liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
						break;
    				end;
    			end;
    			if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
    				local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
    				if(not spis_tresci)then
    					--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
    					local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
    					if(czy_wynik)then return false;end;
    				end;
    				czy_fun=true;
    			end;
				liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
    		end;
		end;
		odtylu=liczba_start_naglowek_nowe;
    end;
    return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
    local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
    					----
    if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
    ----
    local str_spacja_lub_zerowy_naglowek=function(tekst)
    	local ile_znalezione_linie_wedlug_wzoru=0;
    	local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
    		if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
    			ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
    		end;
    		return nil;
	    end);
	    if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
	    return nil;
    end;
    if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
    	local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
    	local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    	if(not liczba_start_rozdzial)then
    		while(true)do
    			local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
    			if(liczba_start_naglowek_temp)then
    				local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
    				if(not str_spacja_lub_zerowy_naglowek(str))then
    					break;
    				end;
    				liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
    			end;
    			local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
    			if(liczba_start_naglowek_temp)then
    				local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
    				if(not str_spacja_lub_zerowy_naglowek(str))then
    					break;
    				end;
	    			liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
	    		end;
	    		if(not liczba_start_naglowek_temp)then break;end;
	    	end;
    	end;
    elseif(not liczba_start_naglowek)then
    	local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
    	local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    	if(liczba_start_naglowek_temp)then
    		local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
    		local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    		if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
    		----
    			local tak=false;
    			local czy_w_petli=false;
    			local szablonowe_modul=require("Module:Szablonowe");
    			local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
    			for szablon,obiekt,kod in iterator do
    				czy_w_petli=true;
    				if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
    					local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    					if((czy_element_spisu)and(not czy_okladka))then
    						if(numer_rodzaju_artykulu==1)then
    							tak=true;
    							break;
    						end;
    					end;
    				end;
    			end;
    			if((tak)or(not czy_w_petli))then
    				liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
    			end;
    		end;
		else
			local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
			if(liczba_start_naglowek_temp)then
				if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
					local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
					if(mw.ustring.match(str,"^%s*$"))then
						liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
						liczba_obiekt_start_kolei_par=liczba_start_naglowek;
					end;
				else
					liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
					liczba_obiekt_start_kolei_par=liczba_start_naglowek;
				end;
			end;
			local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
			if(liczba_start_naglowek_temp)then
				if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
					local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
					if(mw.ustring.match(str,"^%s*$"))then
						liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
					end;
				else
					liczba_start_naglowek,liczba_koniec_naglowek,naglowek=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp;
				end;
			end;
    	end;
    end;
    return liczba_start_naglowek,liczba_koniec_naglowek,naglowek;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
    local liczba_spac=0;
    if(liczba_start)then
    	local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
    	while(true)do
    		local liczba_start_tekst_stare=liczba_start_tekst;
    		linia=nil
    		local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
    		liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    		local czy_poczt;
    		if(not liczba_start_tekst)then
    			liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    			czy_poczt=true;
    		else 
    			czy_poczt=false;
    		end;
    		local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
    		if(rozdzial_dodatki)then
    			local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    			local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
    			if(naglowek)then
    				return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
    			end;
    		end;
    		local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
    		if(spacja)then
    			liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2);
    		elseif((not spacja)and(linia))then
    			local czy_spis=nil;
    			local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
    			local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
    			if(not spis_tresci)then
					liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1);
    				liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst);
    				czy_spis=liczba_start_rozdzial and true or nil;
    			else
    				liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
    				czy_spis=true;
    			end;
    			if(not liczba_start_rozdzial)then
    				if(not spis_tresci)then
    					local szablonowe_modul=require("Module:Szablonowe");
    					if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
    						local tak=false;
    						local czy_okladka=nil;
    						local szablonowe_modul=require("Module:Szablonowe");
    						local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
    						for szablon,obiekt,kod in iterator do
    							if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
    								local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    								if((czy_element_spisu)and(not czy_okladka))then
    									tak=true;
    									break;
    								end;
    							end;
    						end;
    						liczba_start=tak and liczba_start_tekst or liczba_start;
    					else
    						liczba_start=liczba_koniec_tekst;	
    					end;
    				else
    					liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
    				end;
				end;
    			return liczba_start,liczba_spac,czy_spis;	
    		elseif(not liczba_start_tekst)then
    			return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
    		end;
    	end;
    end;
    return liczba_start,liczba_spac,nil;
end;
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
   local liczba_spisu=liczba_spisowa;
   local szablonowe_modul=require("Module:Szablonowe");
   local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
   while(true)do
    	local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    						---
    	if((liczba_linki_nierozdzialowe_szablonu)
    		and(
    				(przed_tekst=="")
    				or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
    		)
    						         		
    	)then
    		liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
    		if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
    			local obiekt=obiekt_szablon;
    			local kod=kod_szablon;
    			kod=tonumber(kod) or nil;
    			----
    			local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    			local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    			----
    			----
    			if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then      
    				return liczba_linki_nierozdzialowe_szablonu,true;
    			else
    				local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
    				local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
    				for szablon,obiekt,kod in iterator do
    					local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
    					if(czy_znajdz)then
    						local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
							if(czy_tekst)then
    							if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
    								local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    								if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then      
    									return liczba_linki_nierozdzialowe_szablonu,true;
    								end;
    							end;
    						else
    							return liczba_spisowa,false;
    						end;
    						szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
    					end;
    				end;
    				return liczba_spisowa,false;
    			end;
    		end;
    	else
    		return liczba_spisowa,false;
    	end;
	end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
	local tak=nil;
	local techniczne_modul=require("Module:Techniczne");
	local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
		naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
		if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
			return true;
		end;
	end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
	if(not liczba_rozdzial_start)then
		liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
		if(liczba_rozdzial_start)then tak=true;end;
	end;
	if(liczba_rozdzial_start)then
		local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
		if(not tak)then
			liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
		else
			local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
			local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
				----
			if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
				if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
					liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
				else
					liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
				end;
			elseif(liczba_rozdzial_start3)then
				liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
			elseif(liczba_rozdzial_start4)then
				liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
			else 
				liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
			end;
		end;
		-----
		local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
		if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
		local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
		local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
		-----
		local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
		local szablonowe_modul=require("Module:Szablonowe");
		local techniczne_modul=require("Module:Techniczne");
		str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
			local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
			if((obiekt)and(kod)and(dalszy_tekst))then
				kod=tonumber(kod) or nil;
				local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
				local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    			if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
    				return linia;
    			end;
			end;
	  		linia=dalszy_tekst or linia;
			local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
    		for szablon,obiekt,kod in iterator do    			
    			if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
    				local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    				if(czy_element_spisu)then
    					return linia;
    				elseif(obiekt=="SZABLON")then
    					local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
   								if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
   									return linia;
   								else
   									return "";
   								end;
    					    end,nil,nil,nil,nil,nil,nil,nil,nil,
   							function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
   								return "";
   							end);
   						return wynik;
   					end;
    		  	end;
    		end;
			return "";
		end);
		tekst=tekst1..str_bibliografia..tekst2;
	end;
	return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
	local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
	local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
	if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
	----
    local liczba_start=nil;local liczba_koniec=nil;
    ----
    local szablonowe_modul=require("Module:Szablonowe");
    local parametry_modul=require("Module:Parametry");
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    -----
    local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
    ----
    local liczba_obiekt_koniec=1;
    local liczba_pierwszy_rozdzialowy_artykul=nil;
    local liczba_nie_okladka_artykul=nil;
    local tab_nazwa_spisow_przekierowaniowych={};
    local liczba_start_rozdzial=1;
    local liczba_obiekt_start_poprz=nil;
	local liczba_obiekt_koniec_poprz=nil;
    local liczba_nie_okladka_artykul_koniec=nil;
    
    local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
    while(true)do
    	local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
    	if(liczba_start_szablon)then
    		liczba_obiekt_koniec=liczba_koniec_szablon;
    		--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
			local czy_rozdzial_dodatni;
    		local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
    		local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))));
	    	czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
			
    		local szablon;
    		if(not czy_listy)then
    			local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
    			szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    			if(szablon)then czy_listy=true;end;
    		end;
    		if(czy_listy)then
    			local liczba_obiekt_start=liczba_start_szablon;
    			local obiekt=obiekt_szablon;
    			local kod=kod_szablon;
    			kod=tonumber(kod) or nil;
    			local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    			local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    			if((not czy_element_spisu)or(czy_okladka))then
    				local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
    				local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
    				local tak=false;
    				for obiekt,kod in iterator do
    					if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
    						kod=tonumber(kod) or nil;
    						local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    						czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
    						if((czy_element_spisu_temp)and(not czy_okladka_temp))then
    							if(numer_rodzaju_artykulu_temp==1)then 
    								tak=true;
    								break;
    							end;
    						end;
    					end;
    				end;
    				if(tak)then
    					czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
    				end;
    			end;
    			liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
    			liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
    			liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
    			----
    			if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
    				local czy_bez_naglowka=nil;
    				local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
    				local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
    				
    				local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil;
    				local czy_ten_rozdzial=true;
    				local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
    				local liczba_spis_tresci_start,liczba_spis_tresci_koniec=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
    							if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
    				end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
					local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
					liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
					local tab_zmienne={
						liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
						liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
						czy_ten_rozdzial=czy_ten_rozdzial,
					};
    				liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
    				
    				liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
    				if(not czy_ten_rozdzial)then
    					if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
    						liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
    						liczba_obiekt_start_nowe=liczba_obiekt_start;
    						czy_ten_rozdzial=true;
    						tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
    						liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
    						liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
    					end;
    				end;
    				-----
    				liczba_start_naglowek=liczba_spis_tresci_start or liczba_start_naglowek;
    				if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
    					----
    					czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
    					----
    					if(liczba_start_naglowek)then
    							local liczba_przed_rozdzialem;local czy_znajdz;
    							liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
    							
    							local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
								local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    							if(liczba_start_naglowek_przed)then
    								if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then
    									liczba_start=liczba_przed_rozdzialem;
    									local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
    									if(czy_spis)then
    										  liczba_start=liczba_start_sugerowane;
    										  break;
    									elseif(not czy_znajdz)then
    										 liczba_start=liczba_przed_rozdzialem;
    										 break;
    									end;
    									if(liczba_start_sugerowane<liczba_start-liczba_spac)then
    										if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
    											liczba_start=liczba_start_sugerowane;
    											local liczba_start_od_tylu=liczba_start;
    											local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
    											if(liczba_start_nowa)then
    												if(liczba_start_nowa>liczba_start_naglowek_przed)then
    													liczba_start=liczba_start_nowa;
    												end;
    											end;
    										end;
    									end;
    								else
    									liczba_start=liczba_spis_tresci;
    									local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
    									if(czy_spis)then
    										  liczba_start=liczba_start_sugerowane;
    										  break;
    									elseif(not czy_znajdz)then
    										 liczba_start=liczba_przed_rozdzialem;
    										 break;
    									end;
    									if(liczba_start_sugerowane<liczba_start-liczba_spac)then
    										if(liczba_start_sugerowane>liczba_start_naglowek_przed)then
    											liczba_start=liczba_start_sugerowane;
    											local liczba_start_od_tylu=liczba_start;
    											local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
    											if(liczba_start_nowa)then
    												if(liczba_start_nowa>liczba_start_naglowek_przed)then
    													liczba_start=liczba_start_nowa;
    												end;
    											end;
    										end;
    									end;
    								end;
    							else
    								liczba_start=liczba_przed_rozdzialem;
    								local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
    								if(czy_spis)then
    									liczba_start=liczba_start_sugerowane;
    									break;
    								elseif(not czy_znajdz)then
    									liczba_start=liczba_przed_rozdzialem;
    									break;
    								end;
    								if(liczba_start_sugerowane<liczba_start-liczba_spac)then
    									local liczba_start_od_tylu=liczba_start_sugerowane;
    									local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
    									liczba_start=liczba_start_nowa or liczba_start_sugerowane;
    								else
    									liczba_start=liczba_start_sugerowane;
    								end;
    							end;
    					else
    						local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
    							if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
    								local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
    								str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
    								if(not mw.ustring.match(str,"^%s*$"))then
    									return true;
    								end;
    							end;
    							return nil;
    						end);
    						if(liczba_start_naglowek)then 
    							liczba_obiekt_start_nowe=liczba_start_naglowek;
    						end;
    						--[[]]
    						local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
    						
    						liczba_start=liczba_przed_rozdzialem;
    						local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul);
    						if(czy_spis)then
    							liczba_start=liczba_start_sugerowane;
    							break;
    						elseif(not czy_znajdz)then
    							liczba_start=liczba_przed_rozdzialem;
    							break;
    						end;
    						if(liczba_start_sugerowane<liczba_start-liczba_spac)then
    							local liczba_start_od_tylu=liczba_start_sugerowane;
    							local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
    							liczba_start=liczba_start_nowa or liczba_start_sugerowane;
    						end;
    					end;
    					break;
    				else
    					 liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
    					 liczba_nie_okladka_artykul_koniec=nil;
    				end;
    				liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
    			else
    				liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
    			end;
			end;
    	else
    		break;
    	end;
    end;
    
    if(not liczba_start)then return "";end;
    local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
    while(true)do
    	local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true);
    	----
    	if(liczba_start_szablon)then
    		liczba_obiekt_start_od_tylu=liczba_start_szablon;
    		local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
    		local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
    		local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
    		local szablon;
    		if(not czy_listy)then
    			local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
    			szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    			if(szablon)then czy_listy=true;end;
    		end;
    		if(czy_listy)then
    			local liczba_obiekt_koniec=liczba_koniec_szablon;
    			local liczba_obiekt_start=liczba_start_szablon;
    			local obiekt=obiekt_szablon;
    			local kod=kod_szablon;
    			
    			kod=tonumber(kod) or nil;
    	
    			local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    		
    			local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil;
    			if(liczba_start<=liczba_obiekt_start)then
    				czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
    				if(not czy_element_spisu)then
    					local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
    					for obiekt,kod in iterator do
    						if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
    							kod=tonumber(kod) or nil;
    							local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    							--if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then
    								czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
    							---elseif((lista_szablon=="")and(przerwa_szablon==""))then
    								---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
								---end;
								if(czy_element_spisu)then break;end;
    						end;
    					end;
    				end;
    			end;
    			if(czy_element_spisu)then
    				local function IleKoniec()
    					while(true)do
    				    	local poczatek_nierozdzalowe=liczba_obiekt_koniec;
    		  				local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
    		  				if(liczba_start_nieszablon_nielink_nierozdzialowa)then
    			  				local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
    							if(rozdzial_dodatki)then
    								local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
    								if(naglowek)then
    									liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
    									return;
    								end;
    							end;
    		  					local czy_spacje=mw.ustring.match(linia,"^%s*$");
    		  					if(not czy_spacje)then
    		  						liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
	    		  					return;
    			  				elseif(czy_spacje)then
    			  					liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
    			  				--else
    		  					--	liczba_koniec=#tekst_rozwiniety_calego_artykulu;
    		  					--	return;
    		  					end;
    		  				else
    		  					liczba_koniec=#tekst_rozwiniety_calego_artykulu;
    		  					break;
    		  				end;
    					end;
		  			end;
    				IleKoniec();
    				break;
    			end;
    		end;
    	else
    		break;
		end;
    end;
    if(liczba_koniec)then
    	local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
    	while(true)do
    		local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
    		if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
    			koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
    			local start=1;
    			while(true)do
    				local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start);
    				local koniec_obiekt;local kod_obiekt;local obiekt=nil;
    				if(start_szablon)then
    					if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
    						--koniec_obiekt=koniec_szablon;
    						local kod=kod_szablon;
    						local obiekt=obiekt_szablon;
    						local kod=tonumber(kod) or nil;
    						local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
    						local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
    						if(czy_element)then 
    							liczba_koniec=liczba_rozdzial_koniec;
    							break;
    						end;
    					end;
    					start=koniec_szablon;
    				else
    					break;
    				end;
    			end;
    		else
    			break;
    		end;
    	end;
    end;
    if(not liczba_koniec)then return "";end;
    if(liczba_start>=liczba_koniec)then return "";end;
    --- Licencja ----
	local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
	if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
		liczba_koniec=licencja_koniec;
	end;
	-----
	local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
	-----
	for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
		tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
	end;
	--mw.log(tekst)
    --- Licencja ----
    --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
    --mw.log("TYTAN1",tekst,"TYTAN2")
    --return nil;
    --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
    return tekst;
end;
return p;