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;
    for _,tab_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,tab_wzor[1])));
    	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");
    while(true)do
    	for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do
    		local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzablonTekst(tekst_rozwiniety_calego_artykulu,"("..tab_wzor[2]..")",liczba_od,liczba_do,true);
    		if(liczba_start_rozdzial)then
    			if(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;
    end;
	return nil;
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");
	while(true)do
		local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzablonTekst(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 rozdzial=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniuaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
				if(rozdzial)then
					return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
				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)
   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);
		local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
		if(tab)then
			local artykul=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(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 stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
			local function StronyWstepu(artykul)
				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_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;
	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)
	  if(obiekt=="SZABLON")then
	  		local szablonowe_modul=require("Module:Szablonowe");
			local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
 			if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
 				-----
 				local techniczne_modul=require("Module:Techniczne");
 				nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
   				nazwa_szablonu=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);	
   				----
 				local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
 				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 szablonowe_modul=require("Module:Szablonowe");
 							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"))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)
 									if(czy_element_spisu)then
 										return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
 									end;
 								end;
 							end;
 						end;
 					end;
 				end;
 			end;
	 end;
	return false;
end;
function p.find(str,wzor,liczba,liczba2,czy_od_tylu,jak)
    if(not czy_od_tylu)then
    	local a,b,c,d,e,f,g=mw.ustring.find(str,wzor,liczba);
    	if((not liczba2)or(b<=liczba2))then
    		return a,b,c,d,e,f,g;
    	end;
    	return nil;
    else
    	local liczba_start=liczba2 or 1;
    	local a,b,c,d,e,f,g=nil,nil,nil,nil,nil,nil,nil;
    	while(true)do
    		local a1,b1,c1,d1,e1,f1,g1=mw.ustring.find(str,wzor,liczba_start);
    		if((not b1)or((b1)and(b1>liczba)))then 
    			return a,b,c,d,e,f,g;
    		elseif((b1)and(b1==liczba))then
    			return a1,b1,c1,d1,e1,f1,g1;
    		end;
    		a,b,c,d,e,f,g=a1,b1,c1,d1,e1,f1,g1;
    		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,szablon_normy_kodowania_szablonu,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 techniczne_modul=require("Module:techniczne");
    while(true)do
    	local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.find(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 tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
			if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then      	
                nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
				nazwa_szablonu=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
				if(nazwa_szablonu=="Licencja")then
					return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
				end;
			end;
    	elseif(not liczba_start_szablon)then
    		return nil;
    	end;
    end;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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_obiekt_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 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.find(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 tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
			if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then      	
            	    nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
					nazwa_szablonu=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
					local liczba_szablon_centrowany=stronicowyparser_obiekt_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
										break;
									end;
								else
									spis_naglowka_szablon=naglowek;
									break;
								end;
							end;
						end;
					end;
			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.find(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_danych_parametrow_szablonu_strony,kod);
			if(nazwa=="center")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;
	while(true)do
		if(not czy_od_tylu)then
			liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"^(=+[^\n]+=+)[^%S\n]*\n",liczba_wys_dodatni,liczba2,false);
			if(not liczba_start_dodatni)then
				if(not liczba_start_dodatni)then
					liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"\n(=+[^\n]+=+)[^%S\n]*\n",liczba_wys_dodatni,liczba2,false);
					if(not liczba_start_dodatni)then
						liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"\n(=+[^\n]+=+)[^%S\n]*$",liczba_wys_dodatni,liczba2,false);
						if(not liczba_start_dodatni)then
							liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"^(=+[^\n]+=+)[^%S\n]*$",liczba_wys_dodatni,liczba2,false);
						end;
					end;		
				end;
			end;
		else
			liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"\n(=+[^\n]+=+)[^%S\n]*$",liczba_wys_dodatni,liczba2,true);
			if(not liczba_start_dodatni)then
				if(not liczba_start_dodatni)then
					liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"\n(=+[^\n]+=+)[^%S\n]*\n",liczba_wys_dodatni,liczba2,true);
					if(not liczba_start_dodatni)then
						liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"^(=+[^\n]+=+)[^%S\n]*\n",liczba_wys_dodatni,liczba2,true);
						if(not liczba_start_dodatni)then
							liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.find(tekst_rozwiniety_calego_artykulu,"^(=+[^\n]+=+)[^%S\n]*$",liczba_wys_dodatni,liczba2,true);
						end;
					end;		
				end;
			end;
		end;
		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=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",};
				if(czy_spis_tresci(spis_naglowka_dodatni))then
					break;
				end;
			else
				spis_naglowka_dodatni=naglowek;
				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;
		end;
	end;
	return nil;
end;
function p.SzablonTekst(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu)
    local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
    if(not czy_od_tylu)then
    	liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
    	if(not liczba_start_rozdzial)then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false);
    		if(not liczba_start_rozdzial)then
				liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
				if(not liczba_start_rozdzial)then
					liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false);
				end;
    		end;
    	end;
    else
    	liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
    	if(not liczba_start_rozdzial)then
    		liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
    		if(not liczba_start_rozdzial)then
				liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true);
				if(not liczba_start_rozdzial)then
					liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.find(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true);
				end;
    		end;
    	end;
    end;
    return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
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)
	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;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 html_dane_modul=mw.loadData("Module:Html/dane");
    -----
    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_nie_okladka_artykul_koniec=nil;
    while(true)do
    	local liczba_start_szablon;local liczba_koniec_szablon; local przerwa_szablon;local obiekt_szablon;local kod_szablon;local dalszy_tekst;
    	if(liczba_obiekt_koniec==1)then
    		liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.find(tekst_rozwiniety_calego_artykulu,"^([%*:#;>]*)[^%S\n]*([^\n]-)".."[\'\"]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_koniec,nil,false);
    		if(not liczba_start_szablon)then
    			liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.find(tekst_rozwiniety_calego_artykulu,"\n([%*:#;>]*)[^%S\n]*([^\n]-)".."[\'\"]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_koniec,nil,false);
    		end;
    	else
    		liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.find(tekst_rozwiniety_calego_artykulu,"\n([%*:#;>]*)[^%S\n]*([^\n]-)".."[\'\"]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_koniec,nil,false);
    	end;
    	if(liczba_start_szablon)then
    		liczba_obiekt_koniec=liczba_koniec_szablon;
    		if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW"))and(((lista_szablon~="")and((przerwa_szablon=="")or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")))then
    			local liczba_obiekt_start=liczba_start_szablon;
    			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;local numer_rodzaju_artykulu;local czy_podrecznik;local czy_okladka;
    			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);
    			if(not czy_element_spisu)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);
    			end;
    			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 tak=false;
    				for obiekt,kod in iterator do
    					if((obiekt=="SZABLON")or(obiekt=="LINKW"))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.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);
    						if(not czy_element_spisu_temp)then
    							czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=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) or nil;
    						end;
    						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 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 liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
    			----
    			if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik))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 function NieRozdzialoweSzablonyLinki(liczba_spisowa)
    					local liczba_spisu=liczba_spisowa;
    					while(true)do
    						local liczba_linki_nierozdzialowe_szablonu,_,obiekt_szablon,kod_szablon,dalszy_tekst=p.find(tekst_rozwiniety_calego_artykulu,"\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)then
    							liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
    							if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW"))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.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)
    								----
    								----
    								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);
    									for szablon,obiekt,kod in iterator do
    										if((obiekt=="SZABLON")or(obiekt=="LINKW"))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);
    											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;
    									end;
    								end;
    							end;
    						else
    							return liczba_spisowa,false;
    						end;
    					end;
    				end;
    				function PrzedStart(liczba_start,czy_dalej_rozdzial)
    					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.find(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;%s][^\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.find(tekst_rozwiniety_calego_artykulu,"^([^%*#:;%s][^\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]+)=+)[^%S\n]*$") or nil;
    							if(rozdzial_dodatki)then
    								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
    										if(mw.ustring.match(linia,szablon_normy_kodowania_szablonu))then
    											local tak=false;
    											local czy_okladka=nil;
    											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"))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)
    													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 liczba_pierwszy_rozdzialowy_artykul or 1,liczba_spac,nil;
    							end;
    						end;
    					end;
    					return liczba_start,liczba_spac,nil;
    				end;
    				local function ZnajdzSpacjoweNaglowki(liczba_obiekt_start_spac_par,czy_dodatni,RozwazanieNaglowkowo)
    					local odtylu=liczba_obiekt_start_spac_par;
    					local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;
    					local liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_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;
    						if(czy_dodatni==1)then
    							liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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.SzablonTekst(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.SzablonTekst(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
    							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+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(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"))then
    										liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe;
											break;
    									end;
    								elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
    									liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe;
										break;
    								end;
								end;
    						end;
    						if(((czy_dodatni==1)or(czy_dodatni==2))and(RozwazanieNaglowkowo)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=RozwazanieNaglowkowo(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=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe;
							odtylu=liczba_start_naglowek_nowe;
    					end;
    					return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej;
    				end;
    				local function KolejneNaglowki(liczba_obiekt_start_kolei_par,RozwazanieNaglowkowo)
    					local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,liczba_start_naglowek_dalej=ZnajdzSpacjoweNaglowki(liczba_obiekt_start_kolei_par,1,RozwazanieNaglowkowo);
    					----
    					if((RozwazanieNaglowkowo)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"..html_dane_modul.znak_127.."]*$")))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.SzablonTekst(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=ZnajdzSpacjoweNaglowki(liczba_start_naglowek,2);
    								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=ZnajdzSpacjoweNaglowki(liczba_start_naglowek,3);
    								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.SzablonTekst(tekst_rozwiniety_calego_artykulu,"''+([^\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*$"))then
    					 			----
    					 			local tak=false;
    					 			local czy_w_petli=false;
    								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"))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);
    										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,liczba_start_naglowek_dalej_temp=ZnajdzSpacjoweNaglowki(liczba_obiekt_start_kolei_par,2);
								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,liczba_obiekt_start_kolei_par);
										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,liczba_start_naglowek_dalej_temp=ZnajdzSpacjoweNaglowki(liczba_obiekt_start_kolei_par,3);
								 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,liczba_obiekt_start_kolei_par);
										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;
    				local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil;
    				local czy_ten_rozdzial=true;
    				local function RozwazanieNaglowkowo(czy_zeruj)
    					return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
    						if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe))then
    							local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek,liczba_obiekt_start_nowe);
    							if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
    								or(mw.ustring.match(str,"^[%*#:;]+.*$"))
    							)then return nil;end;
    							local ile_punktowanych=0;
    							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    			
    										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);
    										if(not czy_element_spisu)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);
    										end;
    										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"..html_dane_modul.znak_127.."]*$"))then
    								if(czy_zeruj)then
    									liczba_nie_okladka_artykul=nil;
    									liczba_pierwszy_rozdzialowy_artykul=nil;
    									czy_ten_rozdzial=nil;
    								end;
    								return true;
    							end;
    						end;
    						return nil;
    					end;
    				end;
    				local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
    				local liczba_spis_tresci_start,liczba_spis_tresci_koniec=p.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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;
    				liczba_start_naglowek,liczba_koniec_naglowek,naglowek=KolejneNaglowki(liczba_obiekt_start_nowe,RozwazanieNaglowkowo(czy_zeruj));
    				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_stare=liczba_obiekt_start;
    						liczba_obiekt_start_nowe=liczba_obiekt_start;
    						czy_ten_rozdzial=true;
    						liczba_start_naglowek,liczba_koniec_naglowek,naglowek=KolejneNaglowki(liczba_obiekt_start,RozwazanieNaglowkowo(czy_zeruj));
    					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=NieRozdzialoweSzablonyLinki(liczba_start_naglowek);
    							local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
								local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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=PrzedStart(liczba_start,true);
    									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.SzablonTekst(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=PrzedStart(liczba_start,true);
    									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.SzablonTekst(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=PrzedStart(liczba_start,false);
    								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.SzablonTekst(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;
    						--end;
    					else
    						local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=ZnajdzSpacjoweNaglowki(liczba_obiekt_start_nowe,2,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
    							if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe))then
    								local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
    								str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
    								if(not mw.ustring.match(str,"^[%s"..html_dane_modul.znak_127.."]*$"))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=NieRozdzialoweSzablonyLinki(liczba_obiekt_start_nowe);
    						liczba_start=liczba_przed_rozdzialem;
    						local liczba_start_sugerowane,liczba_spac,czy_spis=PrzedStart(liczba_start,false);
    						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.SzablonTekst(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 artykul_poprz;
    			else
    				liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or artykul_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.find(tekst_rozwiniety_calego_artykulu,"\n([%*:#;>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true);
    	if(not liczba_start_szablon)then
    		liczba_start_szablon,liczba_koniec_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.find(tekst_rozwiniety_calego_artykulu,"^([%*:#;>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true);
    	end;
    	----
    	if(liczba_start_szablon)then
    		liczba_obiekt_start_od_tylu=liczba_start_szablon;
    		if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW"))and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")))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=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.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,true);
    				if(not czy_element_spisu)then
    					czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=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,true);
    				end;
    				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"))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.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,true);
    							elseif((lista_szablon=="")and(przerwa_szablon==""))then
    								czy_element_spisu,numer_rodzaju_artykulu=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,true);
    							end;
    							break;
    						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.find(tekst_rozwiniety_calego_artykulu,"\n([^%*:;#'\n]+[^\n]*)\n",poczatek_nierozdzalowe,nil,false)
    		  				if(not liczba_start_nieszablon_nielink_nierozdzialowa)then
    		  					liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.find(tekst_rozwiniety_calego_artykulu,"\n([^%*:;#'\n]+[^\n]*)$",poczatek_nierozdzalowe,nil,false);
	    		  			end;
    			  			local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]+)=+)[^%S\n]*$") or nil;
    						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=linia and mw.ustring.match(linia,"^%s*$") or nil;
    		  				if((liczba_start_nieszablon_nielink_nierozdzialowa)and(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;
    					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.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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.find(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"))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.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,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 szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
	local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,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);
	-----
	local function RozwazDaneUzupelniajace(tekst,tab_wzor)
		local tak=nil;
		local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(tekst,1,nil,false,function(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_rozwiniety_calego_artykulu,"("..tab_wzor[2]..")",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.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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.WprowadzenieTekstuCentrowaneZnacznikowoLubSzablonowoDodatnio(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_rozwiniety_calego_artykulu,"[^%*#;:\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 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 str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec,liczba_rozdzial_start2 or #tekst)
			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 iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
    			  for szablon,obiekt,kod in iterator do    			
    		  		if(((tab_wzor[3])and(obiekt=="LINKW"))or(obiekt=="SZABLON"))then
    		  			local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
    		  			if(tab_wzor[3])then
    						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);
    						if(not czy_element_spisu)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);
    						end;
    		  			end;
    					if((tab_wzor[3])and(czy_element_spisu))then
    						return linia;
    					elseif(obiekt=="SZABLON")then
							local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,true,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
 							if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
	 							-----
 								nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
   								nazwa_szablonu=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);	
   								if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
   									return linia;
   								else
   									return "";
   								end;
   							else
   								return "";
   							end;
    					end;
    		  		end;
					return "";
    			end;
				return "";
			end);
			tekst=tekst1..str_bibliografia..tekst2;
		end;
		return tekst;
	end;
	for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
		tekst=RozwazDaneUzupelniajace(tekst,tab_wzor);
	end;
    --- Licencja ----
    --.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;