Moduł:StronicowyParser/Rozdziały

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
 Dokumentacja modułu [stwórz] [odśwież]
local p={}
function p.PodajNapisPoziomWprowadzeniaTekstu(linia)
	if(mw.ustring.match(linia,"^%s*=*%s*$"))then
		return nil,0;
	end;
    local rowna_lewy=mw.ustring.match(linia,"^%s*(=+)");
    local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
    if((rowna_lewy)and(rowna_prawy))then
    	local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
    	local str_min_rowna=mw.ustring.rep("=",min_rowna);
    	local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]+)"..str_min_rowna.."%s*$");
    	if(not naglowek)then
    		return nil,0;
    	end;
    	local naglowek=mw.text.trim(naglowek);
    	return naglowek,min_rowna;
    else
        return nil,0;
    end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
	local liczba1,zawrtosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.*)</[Hh](%d+)>");
	if(liczba1==liczba2)then
		return zawartosc,liczba1;
	end;
	return nil;
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
	local czy_naglowek=mw.ustring.match(wiersz,"^(=+[^=]*=+)%s*$");
	if(czy_naglowek)then return true,true;end;
	czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
	return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
	local iter_h=mw.ustring.gmatch(tekst,"(<[Hh]%d+[^<>]*>.*</[Hh]%d+>)");
	local techniczne_modul=require("Module:techniczne");
	for wiersz_h in iter_h do
	 	local wiersz_h_start=wiersz_h;
	 	wiersz_h,_=mw.ustring.gsub(wiersz_h,"\n"," ");
	 	wiersz_h="\n"..wiersz_h.."\n";
	 	wiersz_h_start=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](wiersz_h_start);
	 	wiersz_h=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](wiersz_h);
	 	tekst,_=mw.ustring.gsub(tekst,wiersz_h_start,wiersz_h);
	end;
    return tekst;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni_nazw,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony)
	local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;
	local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
	local parametry_modul=require("Module:Parametry");
	local szablonowe_modul=require("Module:Szablonowe");
	local tab_dozwolone_szablonowe_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.tab_dozwolone_szablonowe_z_elementami_spisu_rzeczy_stron_woluminu;
	local szablony={};
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
	local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
	return function(linia,czy_w_spise_tresci,czy_nie_poczatek,tak_ce_spis_tresci)
		----
		if((czy_w_spise_tresci)and(not zawsze))then zawsze=true;end;
		----
		if(not zawsze)then
			function __FUNKCJA(parametry,nazwa_szablonu)
   	   			local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
   	   			return tab_kom[nazwa_szablonu];
			end;
			local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_dany_modul);
      		
      		for wywolanie,obiekt,kod in iter do
      			if((not tablica_analizy_dany_modul) or ((obiekt=="SZABLON")or(obiekt=="LINKW")))then
   	   				local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wywolanie,nazwa_przestrzeni_nazw,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,__FUNKCJA,nil,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony,kod);
   	   				if(not kom)then
   	   					local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
   	   					if((tab)and(mw.ustring.match(stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false),"^[Oo]kładka$")))then
   	   						zawsze=true;
   	   						return nil,nil,nil,nil;
   	   					end;
   	   				end;
   	   			end;
      		end;
      		if(czy_nie_poczatek)then
				if(not zacznij)then
					if(mw.ustring.match(linia,"^[^#:%*;%d%.].*[%.,:]%s*$"))then
						ostatnie=mw.ustring.match(linia,"%.%s*$")and(not mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKW")));
						wprowadzenie=true;
					elseif((wprowadzenie)and(mw.ustring.match(linia,"^%s*$")))then
						zacznij=true;
						wprowadzenie=false;
					end
				elseif(mw.ustring.match(linia,"^[^#:%*;%d%.].*[%.,:]%s*$"))then
					local roz=mw.ustring.match(linia,":%s*$");
					if((ostatnie)and(roz))then
						wprowadzenie=false;
						zawsze=true;
					else
						ostatnie=mw.ustring.match(linia,"%.%s*$")and(not mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKW")));
						zacznij=false;
						wprowadzenie=true;
					end;	
				end;
      		elseif((mw.ustring.match(linia,"^%s*(%a[%a%s,:%.]-:)%s*$"))or(mw.ustring.match(linia,"^%s*([#:%*;]+)%s*([%d%.]-)%s*(.-)%s*$")))then
				wprowadzenie=false;
			else
				--wprowadzenie=true;
			end;
		end;
		if((not wprowadzenie) or zawsze)then
			local poczatek,numeracja, rozdzial=mw.ustring.match(linia,"^%s*([#:%*;]+)%s*([%d%.]-)%s*(.-)%s*$");
			if(not poczatek and not numeracja and not rozdzial)then
				numeracja, rozdzial=mw.ustring.match(linia,"^%s*([%d%.]+)%s*(.-)%s*$");
				if(numeracja and rozdzial)then poczatek="";end;
			end;
			local ze_specialnymi_obiektami=false;local czy_centrowanie=false;local tekst;
			if(rozdzial)then tekst=rozdzial;else tekst=linia;poczatek=nil;rozdzial=nil;numeracja=nil;end;
			local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
				if(obiekt=="SZABLON")then 
					local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
					local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
					if(czy_ce)then
						ze_specialnymi_obiektami=true;
						czy_centrowanie=true;
						if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
						return nil;
					elseif(((mw.ustring.match(nazwa_szablonu,"^Link"))and(nazwa_szablonu~="LinkURL"))or(nazwa_szablonu=="Link wewnętrzny")or(nazwa_szablonu=="Sekcja referencyjna"))then
						ze_specialnymi_obiektami=true;
						if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
						return nil;
					end;
				elseif(obiekt=="LINKW")then
					if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
					ze_specialnymi_obiektami=true;
					return nil;
				elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
					if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
					ze_specialnymi_obiektami=true;
					return nil;
				elseif(obiekt=="ZNACZNIK")then
					local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon);
      				if(zawartosc)then
      					if(nazwa=="center")then
      						ze_specialnymi_obiektami=true;
      						czy_centrowanie=true;
      						if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
      						return nil;
      					end;
      				end;
				end;
				return szablon;
			end);
			for szablon,obiekt,kod in iter do end;
			if(not poczatek or not rozdzial)then
				if(not ze_specialnymi_obiektami)then
					linia=mw.ustring.gsub(linia,"<[^<>]+>","");
					rozdzial=mw.ustring.match(linia,"^%s*('*['%w%p%s]-:%s*'*)%s*$");
					if(rozdzial)then
						return rozdzial,0,nil,nil;
					else
						rozdzial=mw.ustring.match(linia,"^%s*('+%s*[%w%p]['%w%p%s]-%s*'*)%s*$");
						if(rozdzial)then
							if(not mw.ustring.match(rozdzial,"^.*!%s*'*%s*$"))then 
								return rozdzial,0,nil,nil;
							end;
						end;
					end;
				elseif(czy_centrowanie)then
					local rozdzial=nil;local numeracja=nil;
					if(tak_ce_spis_tresci)then
						local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
							 local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_dany_modul);
      						  for szablon,obiekt,kod in iterator do
      							 if(obiekt=="SZABLON")then
      								  local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
      						    	  if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
      						    			return nil;
      						    	  end;
      							  end;
      						   end;
  							  return true;
						end;
						local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
							local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
							if(czy_szablon)then
								 local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
							  	 local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
   	   							 if(czy_ce)then
   	   						    	local wartosc=tabela_parametrow_szablonu[czy_ce];
   	   						    	if(wartosc)then
   	   						    		if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
   	   						    		numeracja,rozdzial=mw.ustring.match(wartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
   	   						    		if(rozdzial)then
											local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
											if(not wynik)then
												numeracja=nil;rozdzial=nil;
												return nil;
											end;
										end;
   	   						    	end;
   	   						    	return nil;
   	   							end;
							elseif(czy_znacznik)then
      							  local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon);
      							  if(zawartosc)then
      									if(nazwa=="center")then
      										if(mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
      						    			numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
      						    			if(rozdzial)then
      						    				local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_dany_modul);
      						    				for szablon,obiekt,kod in iterator do
      						    					if(obiekt=="GALERIA")then
      						    						numeracja=nil;rozdzial=nil;
														return nil;
													end;
      						    				end;
												local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
												if(not wynik)then
													numeracja=nil;rozdzial=nil;
													return nil;
												end;
											end;
      									end;
      							end;
      							return nil;
							end;
						end);
						for szablon,obiekt,kod in iter do end;
						if((rozdzial)and(numeracja))then
							if((not parametry_modul["CzyTakCiąg"](numeracja))and(not parametry_modul["CzyTakCiąg"](rozdzial)))then
								return nil,nil,nil,nil;
							end;
							return rozdzial,2,nil,numeracja,true;
						end;
					end;
				end;
			else
				if((not parametry_modul["CzyTakCiąg"](numeracja))and(not parametry_modul["CzyTakCiąg"](rozdzial)))then
					return nil,nil,nil,nil;
				end;
				return rozdzial,(#poczatek*(-1)),poczatek,numeracja;
			end;
		end;
		return nil,nil,nil,nil;
	end,
	function()
		return ((not wprowadzenie) or zawsze);
	end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
	local strona=frame.args[1];
	local id_rozdzialu1=frame.args[2] or "";
	local id_rozdzialu2=frame.args[3] or "";
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
	return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
	local strona=frame.args[1];
	local id_rozdzialu=frame.args[2] or "";
	id_rozdzialu,_=mw.ustring.gsub(id_rozdzialu,"<[^<>]+>","");	 		
	id_rozdzialu,_=mw.ustring.gsub(id_rozdzialu,"'+","");
	id_rozdzialu,_=mw.ustring.gsub(id_rozdzialu,"^[%s_]+","");	 		
	id_rozdzialu,_=mw.ustring.gsub(id_rozdzialu,"[%s_]+$","");	 		 	
	id_rozdzialu,_=mw.ustring.gsub(id_rozdzialu,"[%s_]+","_");
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
    tekst,_=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
	tekst,_=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	
	tekst,_=mw.ustring.gsub(tekst,"\n\n","\n \n");
    tekst=p.WierszHNumer(tekst);
	
	local iter=mw.ustring.gmatch(tekst,"([^\n]+)");
	local tab_rozdzialy={};
	local specjalne_modul=require("Module:Specjalne");
	for wiersz in iter do
	 	local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
	 	if(czy_naglowek)then
	 		 local nazwa_rozdzialu,poziom_rozdzialu;
	 		 if(czy_naglowek_wiki)then
	 			nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomWprowadzeniaTekstu(wiersz);
	 		 else
	 		 	nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
	 		 end;
	 		 nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
	 		 local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
	 		 nazwa_rozdzialu=specjalne_modul["UsuńKomentarze"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńSzablonyStylów"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńZnaczniki"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńKategorie"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńWywołaniaPlików"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńInterwiki"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](nazwa_rozdzialu);
	 	     local c=1;
	 		 for i=1,#tab_rozdzialy,1 do
	 		 	if(tab_rozdzialy[i]==nazwa_rozdzialu)then
	 		 		c=c+1;
	 		 	end;
	 		 end;
	 		 if(c>1)then
	 		 	nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
	 		 end;
	 		 if(id_rozdzialu==nazwa_rozdzialu)then
	 		 	return frame:preprocess(nazwa_rozdzialu_aktualna);
	 		 end;
	 	end;
	end;
	return nil;
end;
function p.NumerSekcjiStrony(frame)
	local strona=frame.args[1];
	local id_rozdzialu=frame.args[2] or "";
	
	local specjalne_modul=require("Module:Specjalne");
	id_rozdzialu=specjalne_modul["UsuńKomentarze"](id_rozdzialu);
	id_rozdzialu=specjalne_modul["UsuńSzablonyStylów"](id_rozdzialu);
	id_rozdzialu=specjalne_modul["UsuńZnaczniki"](id_rozdzialu);
    id_rozdzialu=specjalne_modul["UsuńKategorie"](id_rozdzialu);
    id_rozdzialu=specjalne_modul["UsuńWywołaniaPlików"](id_rozdzialu);
    id_rozdzialu=specjalne_modul["UsuńInterwiki"](id_rozdzialu);
	id_rozdzialu=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](id_rozdzialu);
	id_rozdzialu=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](id_rozdzialu);
	
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
    tekst,_=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
	tekst,_=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	
	 tekst,_=mw.ustring.gsub(tekst,"\n\n","\n \n");
     tekst=p.WierszHNumer(tekst);
	
	local iter=mw.ustring.gmatch(tekst,"([^\n]+)");
	local tab_rozdzialy={};
	local ile=1;
	
	for wiersz in iter do
	 	local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
	 	if(czy_naglowek)then
	 		 local nazwa_rozdzialu,poziom_rozdzialu;
	 		 if(czy_naglowek_wiki)then
	 			nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomWprowadzeniaTekstu(wiersz);
	 		 else
	 		 	nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
	 		 end;
	 		 nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńKomentarze"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńSzablonyStylów"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńZnaczniki"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńKategorie"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńWywołaniaPlików"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńInterwiki"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](nazwa_rozdzialu);
	 	     local c=1;
	 		 for i=1,#tab_rozdzialy,1 do
	 		 	if(tab_rozdzialy[i]==nazwa_rozdzialu)then
	 		 		c=c+1;
	 		 	end;
	 		 end;
	 		 if(c>1)then
	 		 	nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
	 		 end;
	 		 table.insert(tab_rozdzialy,nazwa_rozdzialu);
	 		 if(id_rozdzialu==nazwa_rozdzialu)then
	 		 	return ile;
	 		 end;
	 		 ile=ile+1;
	 	end
	end;
    return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
	 local specjalne_modul=require("Module:Specjalne");
	
	 id_rozdzialu1=specjalne_modul["UsuńKomentarze"](id_rozdzialu1);
	 id_rozdzialu1=specjalne_modul["UsuńSzablonyStylów"](id_rozdzialu1);
	 id_rozdzialu1=specjalne_modul["UsuńZnaczniki"](id_rozdzialu1);
     id_rozdzialu1=specjalne_modul["UsuńKategorie"](id_rozdzialu1);
     id_rozdzialu1=specjalne_modul["UsuńWywołaniaPlików"](id_rozdzialu1);
     id_rozdzialu1=specjalne_modul["UsuńInterwiki"](id_rozdzialu1);
     id_rozdzialu1=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](id_rozdzialu1);
     id_rozdzialu1=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](id_rozdzialu1);		 
	 
	 id_rozdzialu2=specjalne_modul["UsuńKomentarze"](id_rozdzialu2);
	 id_rozdzialu2=specjalne_modul["UsuńSzablonyStylów"](id_rozdzialu2);
	 id_rozdzialu2=specjalne_modul["UsuńZnaczniki"](id_rozdzialu2);
     id_rozdzialu2=specjalne_modul["UsuńKategorie"](id_rozdzialu2);
     id_rozdzialu2=specjalne_modul["UsuńWywołaniaPlików"](id_rozdzialu2);
     id_rozdzialu2=specjalne_modul["UsuńInterwiki"](id_rozdzialu2);
     id_rozdzialu2=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](id_rozdzialu2);
	 id_rozdzialu2=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](id_rozdzialu2); 
	 
	 tekst,_=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
	 tekst,_=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
	 
	 tekst,_=mw.ustring.gsub(tekst,"\n\n","\n \n");
     tekst=p.WierszHNumer(tekst);
	 
	 local iter=mw.ustring.gmatch(tekst,"([^\n]+)");
	 local tab_rozdzialy={};
	 local str=""
	 local nazwa_rozdzialu_aktualna;
	 local poziom_rozdzialu_aktualny;
	 for wiersz in iter do
	 	local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
	 	if(czy_naglowek)then
	 		 local nazwa_rozdzialu,poziom_rozdzialu;
	 		 if(czy_naglowek_wiki)then
	 			nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomWprowadzeniaTekstu(wiersz);
	 		 else
	 		 	nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
	 		 end;
	 		 nazwa_rozdzialu=mw.getCurrentFrame():preprocess(nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńKomentarze"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńSzablonyStylów"](nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["UsuńZnaczniki"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńKategorie"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńWywołaniaPlików"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["UsuńInterwiki"](nazwa_rozdzialu);
             nazwa_rozdzialu=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](nazwa_rozdzialu);
	 		 
	 		 local c=1;
	 		 for i=1,#tab_rozdzialy,1 do
	 		 	if(tab_rozdzialy[i]==nazwa_rozdzialu)then
	 		 		c=c+1;
	 		 	end;
	 		 end;
	 		 if(c>1)then
	 		 	nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
	 		 end;
	 		 table.insert(tab_rozdzialy,nazwa_rozdzialu);
	 		 if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
	 		 	       and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
	 		 	return str;
	 		 end;
	 		 if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
	 		 	nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
	 		 	poziom_rozdzialu_aktualny=poziom_rozdzialu;
	 		 	str="";
	 		 elseif(id_rozdzialu1=="")then
	 		 	nazwa_rozdzialu_aktualna="";
	 		 	poziom_rozdzialu_aktualny=0;
	 		 	if(id_rozdzialu2=="")then
	 		 		return str;
	 		 	elseif(nazwa_rozdzialu==id_rozdzialu2)then
	 		 		return str;
	 		 	else
	 		 		str=(str~="")and (str.."\n"..wiersz) or wiersz;
	 		 	end;
	 		 else
	 			str=(str~="")and (str.."\n"..wiersz) or wiersz;
	 		 end;
	    else
	    	str=(str~="")and (str.."\n"..wiersz) or wiersz;
	 	end;
	 end;
	 if((id_rozdzialu1)and(id_rozdzialu1==""))then
	 		return str;
	 elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
	 		return str;
	 end;
	 return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu,tablica_parametrow_szablonu_strony,kod)
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local tab_dozwolone_szablonowe_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.tab_dozwolone_szablonowe_z_elementami_spisu_rzeczy_stron_woluminu;
	local szablonowe_modul=require("Module:Szablonowe");
	local nazwa_szablonu=nazwa_szablonu or szablonowe_modul["NazwaSzablonuWywołania"](szablon);
    for name,ktore in pairs(tab_dozwolone_szablonowe_z_elementami_spisu_rzeczy_stron_woluminu)do			
    	if(name==nazwa_szablonu)then
    		local tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,true,nil,nil,tablica_parametrow_szablonu_strony,kod);
    		local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
    		local wynik="";
    		for _,num in pairs(tab)do
    			local numer_parametru=tonumber(num) or num;
    			for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
    				if(parametr==numer_parametru)then
    					wynik=wynik..wartosc;
    				end;
    			end;
    		end;
    		return wynik;
    	end;
    end;
end;
function p.IntegrowanieLiniiTekstu(tekst)
	local tab_linie_tekstu=mw.text.split(tekst,"\n");
	--repeat
	local CzySpecjalnaLinia=function(linia)
		local czy_specjalne_linie=p.PodajNapisPoziomWprowadzeniaTekstu(linia) or mw.ustring.match(linia,"^[%*,;:#]+");
		return czy_specjalne_linie;
	end;
	local czy_linia_poprz=nil;
	for i=#tab_linie_tekstu-1,1,-1 do
		local linia1=tab_linie_tekstu[i];
		local linia2=tab_linie_tekstu[i+1];
		local czy_sp_1=CzySpecjalnaLinia(linia1);
		local czy_sp_2=czy_linia_poprz or CzySpecjalnaLinia(linia2);
		czy_linia_poprz=czy_sp_1;
		if((not czy_sp_1)and(not czy_sp_2))then
			local czy_kropka=mw.ustring.match(linia1,"[%w,:%(%)][^%S\n]$"); --or mw.ustring.match(linia1,"[^<>{}][^%S\n]$");
			if(czy_kropka)then
				local linia=linia1..linia2;
				tab_linie_tekstu[i]=linia;
				table.remove(tab_linie_tekstu,i+1);
			end;
		end;
	end;
	tekst=table.concat(tab_linie_tekstu,"\n")
	return tekst;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_zakodowac,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony,__FUNKCJA,__FUNKCJA2)
   	local tekst=tekst_rozwiniety_calego_artykulu;
   	local nazwy_modul=require("Module:Nazwy");
   	
    local tablica_analizy_dany_modul=tablica_analizy_dany_modul or {};
    
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    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 html_modul=require("Module:Html");
    
    local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
    
    local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
    local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci) 
                                             and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci) 
                                                   or nil;
	local dwukropek=(nazwa_przestrzeni==""); 
	if(czy_zakodowac)then
		----
		tablica_parametrow_szablonu_strony=tablica_parametrow_szablonu_strony or {};
		----
   		tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_dany_modul,nil,function(szablon,obiekt,kod)
   			if(obiekt=="SZABLON")then
 				local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
 				if(szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
   					nazwa_szablonu=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_szablonu,[2]=(dwukropek and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej,} or nazwa_szablonu;
					local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu,tablica_parametrow_szablonu_strony,kod);
					if(wynik)then return wynik;end;
					if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
					if(__FUNKCJA)then
						local pelna_nazwa_szablonu=szablonowe_modul["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu);
						local wynik=__FUNKCJA(pelna_nazwa_szablonu,tabela_modyfikatorow);
						if(wynik)then return wynik;end;
					end;
				end;
   			elseif(obiekt=="ZNACZNIK")then
   				local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon);
   				if((nazwa~="center")and(nazwa~="ref"))then
   					return zawartosc or "";
   				end;
    		end;
   		end);
   		tekst=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst,nil,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony);
   		-----
   		tekst=p.IntegrowanieLiniiTekstu(tekst);
   		-----
   	end;
   	tekst,_=mw.ustring.gsub(tekst,"\n\n","\n \n");
   	tekst,_=mw.ustring.gsub(tekst,"<!%-%-.-%-%->","");
   	local iter=mw.ustring.gmatch(tekst,"([^\n]+)");
   	local naglowek_aktualnego_rozdzialu;
   	local poziom_aktualnego_rozdzialu;
   	local poczatek_aktualnego_rozdzialu;
   	local numeracja_aktualnego_rozdzialu;
   	local czy_rozdzial_aktualny_centrowany;
   	local czy_koniec=false;
   	----
   	local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tab_nazw_generalnego_spisu_rzeczy_woluminu;
	local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
	setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
	local czy_ce_spis_tresci=nil;
	----
   	local czy_w_spisie_tresci=((not czy_rozdzialy_analizowac)and true or nil);
   	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
   	local parser,zmienne_spisu=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony);
   	local iter2=nil;
   	local czy_tak=nil;
   	local czy_nie_poczatek=nil;
   	local tak_ce_spis_tresci=nil;
   	return function()
   	   	local str="";
   	   	local linia;
   	   	local function IterMain()
        	for linia in iter do
   	   			local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
   	   			local function Wystepowanie(linia)
   	   				local function __FUNKCJA(parametry,nazwa_szablonu)
   	   					local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
   	   					return tab_kom[nazwa_szablonu];
   	   				end;
   	   				local function RozwazajLinie(wystepowanie_linkow)
	   	   				if(wystepowanie_linkow)then
   		   					local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wystepowanie_linkow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,__FUNKCJA,nil,tablica_analizy_dany_modul);
	   	   					if(not kom)then
	   	   						local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
   		   						if((tab)and(not mw.ustring.match(stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false),"^[Oo]kładka$")))then
		   	   						return 1;
   			   					end;
   	   						else
   	   							return 0;
   	   						end;
	   	   				end;
   		   			end;
   	   				local szablon_spis_tresci;
	   	   			local function spis_tresci(wystepowanie_linkow)
   		   				local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_dany_modul);
   	   					for szablon,obiekt,kod in iter do
   	   						if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
   	   							local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,__FUNKCJA,nil,tablica_analizy_dany_modul,tablica_parametrow_szablonu_strony,kod);
	   	   						if(not kom)then
	   	   							local tab=((tab_2 and tab_2[1]) and tab_2 or nil)
   		   							if((tab)and(mw.ustring.match(stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false),"^Spis treści$")))then
   	   									tak_ce_spis_tresci=true;
   	   									szablon_spis_tresci=wystepowanie_linkow;
   	   									return 1;
   	   								end;
   	   							else
   	   								return 0;
	   	   						end;
   		   					end;
   	   					end;
   	   					wystepowanie_linkow=czy_zakodowac and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_dany_modul) or wystepowanie_linkow;
   	   					wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
   	   					local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
   	   					if(czy_ce)then 
   	   						tak_ce_spis_tresci=true;
   	   						szablon_spis_tresci=wystepowanie_linkow;
   	   						return 1;
   	   					end;
   	   				end;
	   	   			local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.]*%s*(.+)$");
   		   			local tak=nil;
   	   				if(czy_zakodowac)then
   	   					if(wystepowanie_linkow)then
   	   						local czy_rozdzial=nil;local wartosc=nil;
   	   						local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
   	   								local czy_linkw=(obiekt=="LINKW");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
   	   								if(czy_linkw or czy_szablon or czy_znacznik)then
   	   				    				if(not czy_rozdzial)then
   	   				    					local wystepowanie_linku_lub_szablonu=mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
   	   						    			if(not wystepowanie_linku_lub_szablonu)then return nil;end;
   	   						    			czy_rozdzial=true;
   	   				    				end;
   	   				    				if(czy_szablon)then
   	   				    					local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_parametrow_szablonu_strony,kod);
   	   										local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
   	   										if(czy_ce)then
   	   						    				local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
   	   						    				if(szablon_spis_tresci_zawartosc)then
   	   						    					szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
   	   						    					wartosc=spis_tresci(szablon_spis_tresci_zawartosc);
   	   						    				else
   	   						    					wartosc=RozwazajLinie(szablon);
   	   						    				end;
   	   						    			else
   	   						    				wartosc=RozwazajLinie(szablon);
   	   						    			end;
   	   									elseif(czy_znacznik)then
      						    			local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon);
      						    			if(zawartosc)then
      						    				if(nazwa=="center")then
      						    					szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
      						    					wartosc=spis_tresci(szablon_spis_tresci);
      						    				else
      						    					wartosc=RozwazajLinie(zawartosc);
      						    				end;
      						    			end;
   	   					    			else
   	   						    			wartosc=RozwazajLinie(szablon);
   	   									end;
   	   									if(not wartosc)then return;end;
   	   									tak=tak or (wartosc==1);
   	   									if(tak)then return nil; end;
   	   									return szablon,tekst;
   	   				    			else
      									local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
   	   									return "", ((ile>0) and tekst or nil);
   	   								end;
		   	   				end);
   	   						for szablon,obiekt,kod in iter do end;
   	   					end;
   	   				end;
   	   				if(tak)then
   	   					if(not tak_ce_spis_tresci)then
   	   						nazwa_rozdzialu="Spis treści";
   	   						poziom_rozdzialu=nil;
   	   						str=((str~="")and (str.."\n"..linia) or linia);
   	   					else
   	   						nazwa_rozdzialu=szablon_spis_tresci or "Spis treści";
   	   						poziom_rozdzialu=1;
   	   						czy_rozdzial_centrowany=true;
   	   						poczatek_rozdzialu=nil;
   	   						numeracja_rozdzialu=nil;
   	   						str="";
   	   					end;
   	   					czy_w_spisie_tresci=true;
   	   				else
   	   					nazwa_rozdzialu=nil;
   	   				end;
   	   			end;
   				---------------------------------------
   	   			if(czy_rozdzialy_analizowac)then
   	   				local function CzyNiePoczatek()
   	   				   	local function WhiteSpace(linia)
   	   						linia=mw.ustring.gsub(linia,"&nbsp;","");
   	   						linia=mw.ustring.gsub(linia,"&#32;","");
   	   						return mw.ustring.match(linia,"^%s*$");
   	   					end;
   	   					czy_nie_poczatek=czy_nie_poczatek or ((not czy_w_spisie_tresci)and (not WhiteSpace(linia)) or nil);
   	   				end;	
   	   				if((not czy_w_spisie_tresci)and(zmienne_spisu()))then
      					Wystepowanie(linia);
   	   				end;
   	   				if(not nazwa_rozdzialu)then
   	   					nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,czy_w_spisie_tresci,czy_nie_poczatek,tak_ce_spis_tresci);
   	   				end;
   	   				CzyNiePoczatek();
   	   			else
   	   				nazwa_rozdzialu=nil;
   	   			end;
      			if(not nazwa_rozdzialu)then
   	   	   	    	nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]+=)%s*$");
      				if(not nazwa_rozdzialu) then
   	   					--if(not czy_w_spisie_tresci)then
      					--	Wystepowanie(linia);
   	   					--end;
   	   				else
   	   					nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomWprowadzeniaTekstu(nazwa_rozdzialu);
   	   					--nazwa_rozdzialu=mw.ustring.match(nazwa_rozdzialu,"^'*(.-)'*$") or nazwa_rozdzialu;
   	   					czy_w_spisie_tresci=true;
   	   					czy_nie_poczatek=true;
   	   					tak_ce_spis_tresci=true;
      				end;
      			else
   	   				czy_w_spisie_tresci=true;    
   	   				czy_nie_poczatek=true;
   	   				tak_ce_spis_tresci=true;
      			end;
   	   			if(nazwa_rozdzialu)then
   	   	   			if(not naglowek_aktualnego_rozdzialu)then
   	   	   	  			naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
   	   	   	  			poziom_aktualnego_rozdzialu=poziom_rozdzialu;
   	   	   	  			poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
   	   	   	  			numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
   	   	   	  			czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
   	   	   			else
   	   	   				----------------------------------------------
   	   	   				local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
   	   	   				local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
   	   	   				local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
   	   	   				local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
   	   	   				local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
   	   	   				----------------------------------------------
   	   	   	  			naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
   	   	   	  			poziom_aktualnego_rozdzialu=poziom_rozdzialu;
   	   	   	  			poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
   	   	   	  			if(not __FUNKCJA2)then
   	   						naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu 
   	   		                                      and (czy_zakodowac and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_dany_modul)
   	   		                                      	                   or naglowek_posredni_aktualnego_rozdzialu
   	   		                                      	   )
   	   		                                         or nil;
   	   	   					str=str and (czy_zakodowac and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_dany_modul) or str) or nil;
   	   	   				elseif(czy_zakodowac)then
   	   	   					naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_dany_modul,true) or nil;
   	   	   					str=str and __FUNKCJA2(str,nil,tablica_analizy_dany_modul,false) or nil;
   	   	   				end;
   	   	   	  			return naglowek_posredni_aktualnego_rozdzialu,str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
   	   	   			end;
   	   			else
   	   	   			if(naglowek_aktualnego_rozdzialu)then
   	   	   	  			str=((not czy_tak) and ((str~="")and (str.."\n"..linia) or linia) or str);
   	   	   			end;
   	   			end;
   	   		end;
   	   		if(czy_koniec)then return nil;end;
   	   		czy_koniec=true;
   	   		if(not __FUNKCJA2)then
   	   			naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu 
   	   		                                      and (czy_zakodowac and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_dany_modul)
   	   		                                      	                   or naglowek_aktualnego_rozdzialu
   	   		                                      	   )
   	   		                                         or nil;
   	   	   		str=str and (czy_zakodowac and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_dany_modul) or str) or nil;
   	   		elseif(czy_zakodowac)then
   	   			naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_dany_modul,true) or nil;
   	   	   		str=str and __FUNKCJA2(str,nil,tablica_analizy_dany_modul,false) or nil;
   	   		end;
   	   		return naglowek_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
   		end;
	    ----
	    local naglowek_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
	    return naglowek_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
   	 end;
end;
return p;