Przejdź do zawartości

Moduł:StronicowyParser/Rozdziały

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.NapisWprowadzeniaTekstu(poziom,rozdzial)
  	local naglowek;
  	poziom=poziom or 1;
  	poziom=(poziom>0)and poziom or 1;
  	if(poziom<=6)then
  		naglowek="\n"..mw.ustring.rep("=",poziom)..rozdzial..mw.ustring.rep("=",poziom).."\n";
  	else
  		naglowek="\n<h6 class=\"mw-hnumber mw-hnumber-"+poziom+"\">"..rozdzial.."</h6>\n";
  	end;
  	return naglowek;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
	local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
	if(not naglowek)then return nil;end;
	if(poziom<=6)then
		return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
	else
		return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
	end;	
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
	if(mw.ustring.match(linia,"^%s*=*%s*$"))then
		return nil,0;
	end;
    local rowna_lewy=mw.ustring.match(linia,"^(=+)");
    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]*[^\n%=][^\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(not liczba1)then return nil;end;
	if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
		local liczba1=tonumber(liczba1);
		if(not liczba1)then return nil;end;
		if((liczba1<1)or(liczba1>6))then return nil;end;
		return zawartosc,liczba1;
	end;
	return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
	return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
   		or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
   			or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
   				or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
	return mw.ustring.match(zawartosc,"^[;%*:#]+")
			or mw.ustring.match(zawartosc,"\n[;%*:#]+");
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+>");
	local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
	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.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	-----
	local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	
    local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
    local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
	-----
	local szablonowe_modul=require("Module:Szablonowe");
	local techniczne_modul=require("Module:Techniczne");
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	-----
	local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
	for szablon,obiekt,kod in iter do
		if(obiekt=="SZABLON")then 
			local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
				if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
					return true;
				end;
			end);
			if(wynik)then return wynik;end;
		elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
			return true;
		--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
			--return true;
		end;
	end;
	return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
	local szablonowe_modul=require("Module:Szablonowe");
	-----
	local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
	for szablon,obiekt,kod in iter do
		if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
			return true;
		end;
	end;
	return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
	local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
	if(czy)then
		local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
		local tab=mw.text.split(num,"%.",false);
		if(#tab==1)then
			if(mw.ustring.match(num,"^%d+$"))then
				return rozdzial_z_numeracja,"";
			end;
		else
			if(tab[#tab]=="")then tab[#tab]=nil;end;
		end;
		local tak=true;
		for i=1,#tab,1 do
			tak=tak and mw.ustring.match(tab[i],"^%d+$");
			if(not tak)then break;end;
		end;
		if(tak)then
			local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
			local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
			return rozdzial_bez_numeracji,numeracja;
		end;
	end;
	return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
	 local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
   	 local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
   	 return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
	return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
	local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]*'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]*'*)[%s_]*$")));
	if(rozdzial)then
		return rozdzial,true;
	else
		local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
		local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
		if(spis_tresci)then
			return linia,true;
		else
			local rozdzial,main=nil,nil;
			if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
				rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
			end;
			if(rozdzial)then
				local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
				local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
				if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then 
					if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
						if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
							return rozdzial,true;
						end;
					end;	
				end;
			else
				local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
				if(czy_nie_rozdzial_zerowy)then return linia,false;end;
			end;
			return nil;
		end;
	end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,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 przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
	local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
	if(not czy_dwukropki)then return false;end;
	local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
	if(not czy_miedzy_cudzyslowami)then return false;end;
	if(not z_parametrami_linkowymi)then return true;end;
	local szablonowe_modul=require("Module:Szablonowe");
	local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
	if(not czy_sa_kody)then return true;end;
	local szablonowe_modul=require("Module:Szablonowe");
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	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 tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
			if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
				return false;
			end;
		end;
	end;
	return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
	local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
	local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
	local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
	if((atrybuty)and(numer_rozdzialu>=6))then
		local klasa=atrybuty["class"];
		if(klasa)then
			local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
											or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
											or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
											or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
			mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
			mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
			numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
		end;
	end;
	return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
	local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
	return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
	local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
	local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
	local parametry_modul=require("Module:Parametry");
	local szablonowe_modul=require("Module:Szablonowe");
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
	local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
	local techniczne_modul=require("Module:Techniczne");
	local specjalne_modul=require("Module:Specjalne");
	local strony_modul=require("Module:Strony");
	local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
	local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
	
    local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
    local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
    local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
	
	local maksymalny_rozmiar_rozdzialu_zerowego=70;
	
	return function(linia,tak_ce_spis_tresci)
		----
		local rozdzial=nil;local numeracja=nil;
		local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
		local rozdzial_z_numeracja_nie_przetworzone=nil;
		-----
		----
		if(not poczatek and not rozdzial_z_numeracja)then
			rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
			if(rozdzial_z_numeracja)then 
				poczatek="";
				rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
				rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
				rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
				rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
			else
				local function LiniaCydzyslow(linia)
					local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
					if(not linia_wew_cudz)then return false;end;
					return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
						         and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
				end;
				if(LiniaCydzyslow(linia))then
					rozdzial=linia;
					poczatek="";
					numeracja="";
				else
					local url_iter=mw.ustring.gmatch(linia,"(%S+)");
					local czy_rozdzial=false;
					for url in url_iter do
						czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
						if(czy_rozdzial)then
							break;
						end;
					end;
					if(czy_rozdzial)then
						poczatek="";
						numeracja="";
						rozdzial=linia;
					end;
				end;
			end;
		else
			rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
			rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
			rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
			rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
			rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
		end;
		local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
		local nazwa,zawartosc,atrybuty;
		if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
		----
		local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
			local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
      		for szablon,obiekt,kod in iterator do
      			if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
      				return nil;
      			elseif(obiekt=="SZABLON")then
      				local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
      					if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
      						return true;
      					end;
      				end);
      				if(wynik)then return nil;end;
      			end;
      		end;
  			return true;
		end;
		local FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu=function(wartosc)
			if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
   	   		if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
   	   		numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
   	   		if(rozdzial)then
				local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
				if(not wynik)then
					numeracja=nil;rozdzial=nil;
					return nil;
				end;
			end;
		end;
		local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
			local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
   	   		if(czy_ce)then
	   	   		local wartosc=tabela_parametrow_szablonu[czy_ce];
   		   		if(wartosc)then
   	   				return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(wartosc);
   	   			end;
   	   			return nil;
   	   		end;
		end;
      		
      	local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
      		if(zawartosc)then
      			if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
      				return FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu(zawartosc);
      			end;
      		end;
      		return nil;
      	end;
      	----
		local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
			if(obiekt=="SZABLON")then 
				local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   				---
					local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
					if(czy_ce)then
						ze_specialnymi_obiektami=true;
						czy_centrowanie=true;
						NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
						--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
						return true;
					elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
						ze_specialnymi_obiektami=true;
						if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
						return true;
					end;
				end);
				if(wynik)then return;end;
			elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))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
				nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
      			if(zawartosc)then
      				if(nazwa=="center")then
      					ze_specialnymi_obiektami=true;
      					czy_centrowanie=true;
      					NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
      					--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
      					return nil;
      				elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
      					ze_specialnymi_obiektami=true;
      					czy_znaczniki_hn=true;
      					NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
      					return nil;
      				end;
      			end;
			end;
			return szablon;
		end);
		for szablon,obiekt,kod in iter do end;
		rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
		poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
		numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
		if(not ze_specialnymi_obiektami)then
			local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
			if((rozdzial)and(czy_standardowe_rozdzialy))then
				if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
					if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
						return linia,rozdzial,0,nil,numeracja;
					else
						return nil;
					end;
				else
					local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
					local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
					if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
						return nil;
					elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then 
						return linia,rozdzial,0,nil,numeracja;
					else
						return nil;
					end;
				end;
			else
				return nil;
			end;
		elseif(czy_centrowanie)then
			if(tak_ce_spis_tresci)then
				if((rozdzial)and(numeracja))then
					if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
						return nil,nil,nil,nil;
					end;
					return linia,rozdzial,2,nil,numeracja,true;
				end;
			end;
			return nil;
		elseif(czy_znaczniki_hn)then
			if((rozdzial)and(numeracja))then
				if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
					return nil,nil,nil,nil;
				end;
				local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
				return linia,rozdzial,numer_rozdzialu,nil,numeracja;
			end;
		elseif(rozdzial)then
			local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
			local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
			if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
				return nil;
			end;
			if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
				local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,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;
				if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
					if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
						return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
					else
						return nil;
					end;
				else
					return nil;
				end;
			else
				local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
				if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
					return nil;
				else
					local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,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;
					if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
						if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
							return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
						else
							return nil;
						end;
					else
						return nil;
					end;
				end;
			end;
		else
			return nil;
		end;
		return nil;
	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 "";
	strona=frame:preprocess(strona);
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
	if(not tekst)then return nil;end;
	return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
	tekst=mw.ustring.gsub(tekst,"^[%s_]+","");	 		
	tekst=mw.ustring.gsub(tekst,"[%s_]+$","");	 		 	
	tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
	return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
	local strona=frame.args[1];
	local id_rozdzialu=frame.args[2] or "";
	
	strona=frame:preprocess(strona);
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
	if(not tekst)then return nil;end;
	
	id_rozdzialu=frame:preprocess(id_rozdzialu);
	local specjalne_modul=require("Module:Specjalne");
	id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
	id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
	local html_modul=require("Module:Html");
	id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
	
    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 parametry_modul=require("Module:Parametry");
	local iter=parametry_modul.IteratorLiniiTekstu(tekst);
	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.PodajNapisPoziomuWprowadzeniaTekstu(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["WydzielZwykłyTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
			 nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(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 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 "";
	
	strona=frame:preprocess(strona);
	local title=mw.title.makeTitle('',strona);
	if((not title)or(not title.exists))then
		return nil;
	end;
	local tekst=title:getContent();
	if(not tekst)then return nil;end;
	
	id_rozdzialu=frame:preprocess(id_rozdzialu);
	local specjalne_modul=require("Module:Specjalne");
	id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
	id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
	local html_modul=require("Module:Html");
	id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
	
    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 parametry_modul=require("Module:Parametry");
	local iter=parametry_modul.IteratorLiniiTekstu(tekst);
	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.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
	 		 else
	 		 	nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
	 		 end;
	 		 nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
			 nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(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 frame=mw.getCurrentFrame();
	 local specjalne_modul=require("Module:Specjalne");
	
	 local html_modul=require("Module:Html");
	 id_rozdzialu1=frame:preprocess(id_rozdzialu1);
	 id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
     id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
     id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
	 
	 id_rozdzialu2=frame:preprocess(id_rozdzialu2);
	 id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
	 id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
	 id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(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 parametry_modul=require("Module:Parametry");
	 local iter=parametry_modul.IteratorLiniiTekstu(tekst);
	 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.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
	 		 else
	 		 	nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
	 		 end;
	 		 nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
	 		 nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
			 nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
	 		 nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(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,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
		if(tablica_danych_parametrow_szablonu_strony_numer)then
			local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
			if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
				return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
			end;
		end;
	end;
	local szablonowe_modul=require("Module:Szablonowe");
   	----
   	local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
		local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
		if(not ktore)then return;end;
    	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 or "")..wartosc;
    			end;
    		end;
    	end;
    	return wynik;
    end);
    if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
		if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
		if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
		tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
	end;
    return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
	if((tablica_danych_parametrow_szablonu_strony)and(kod))then
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
		if(tablica_danych_parametrow_szablonu_strony_numer)then
			local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
			if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
				return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
			end;
		end;
	end;

	local szablonowe_modul=require("Module:Szablonowe");
   	local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   		local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
   		local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
   		local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
   		if(dodatek)then
   			for name,value in pairs(tabela_parametrow_szablonu)do
   				local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
   				local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
   				dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
   			end;
   			return dodatek;
   		end;
   	end);
    if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
		if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
		if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
		local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
		tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
	end;
   return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
	local szablonowe_modul=require("Module:Szablonowe");
	local techniczne_modul=require("Module:Techniczne");
	tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
		return "\n\n ";
	end,nil,nil,
	function(szablon,obiekt,kod,poziom_iteracji)
		if(poziom_iteracji==0)then
			if(obiekt=="ZNACZNIK")then
				local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
				if((nazwa=="br")or(nazwa=="hr"))then
					return true;
				end;
			elseif(obiekt=="SZABLON")then
				local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   					----
					if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
						return true;
					end;
				end);
				if(wynik)then return wynik;end;
			end;
		end;
		return nil;
	end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
	return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
	local CzySpecjalnaLinia=function(linia)
		local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
		if(not czy_specjalna_linia)then
			if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
				return true;
			end;
		end;
		return czy_specjalna_linia;
	end;
	----
	local szablonowe_modul=require("Module:Szablonowe");
	local techniczne_modul=require("Module:Techniczne");
	local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
		local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
		local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
		local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
		for szablon,obiekt,kod in iterator do
			if(obiekt=="SZABLON")then
				local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
					if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
						return true;
					end;
				end);
				if(wynik)then return wynik;end;
			end;
		end;
		return nil;
	end;
	----
	--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
	----
	local tab_linie_tekstu=mw.text.split(tekst,"\n");
	if(#tab_linie_tekstu==0)then return "";end;
	local tekst_nowy=tab_linie_tekstu[1];
	local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
	if(not czy_linia_poprz)then
		tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
	end;
	for i=2,#tab_linie_tekstu,1 do
		local linia=tab_linie_tekstu[i];
		local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
		if(not aktualna_specjalna_linia)then
			linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
		end;
		if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
			--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
			local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
			tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
		else
			tekst_nowy=tekst_nowy.."\n"..linia;
		end;
		czy_linia_poprz=aktualna_specjalna_linia;
	end;
	return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
   	local nazwy_modul=require("Module:Nazwy");
   	
    tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
    tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
    
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
    local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
    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 znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_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 pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
	
	local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
   	local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
   		local tab_obiekt=tab_analiza[obiekt];
   		if(not tab_obiekt)then return;end;
		for _,wartosc in pairs(tab_obiekt)do
			local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
			if(element_wartosc)then
				element_wartosc[kod]=nil;
			end;
		end;
   	end;
   	local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
   		tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
   	end;
	
	--local tab_nazwa_spisow_przekierowaniowych={};
	if(czy_dalej_rozwazac_zakodowane)then
		----
		local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
		local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
		local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
		local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
		local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
		----
		local function UsuwanieNowychLiniiZnacznikowe(szablon)
			local tak=nil;
   			szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
 				if(obiekt=="SZABLON")then
					local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
 						-----
 						if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
 							if(poziom_iteracji==0)then tak=true;end;
 							return " ";
 						end;
					end);
 					if(wynik)then return wynik,nil,true;end;
 				elseif(obiekt=="ZNACZNIK")then
 					local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
 					if((nazwa=="br")or(nazwa=="hr"))then
 						if(poziom_iteracji==0)then tak=true;end;
 						return " ",nil,true;
 					end;
 				end;
 				return nil,true;
   			end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
 			return szablon,tak;
		end;
   		local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
   			local czy_tak=false;
   			local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
   				if(obiekt=="SZABLON")then
   					local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   						local czy_ce=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
   	   							czy_tak=czy_tak or true;
   	   							return szablon_spis_tresci_zawartosc;
   	   						end;
   	   					end;
   	   					return nil;
   					end);
   					if(wynik)then return wynik,nil,true;end;
   					return nil,true;
   				elseif(obiekt=="ZNACZNIK")then
   					 local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
      				 if(zawartosc)then
      					if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
      						czy_tak=czy_tak or true;
      						return zawartosc,nil,true;
      					end;
      				end;
   				end;
   				return nil,true;
   			end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
   			return szablon,czy_tak;
   		end;
   		local Modyfikacja=function(szablon,obiekt,kod)
			local czy_tak=false;
   			local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
   			czy_tak=czy_tak or czy_tak1;
   			local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
   			czy_tak=czy_tak or czy_tak2;
   			local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
   			czy_tak=czy_tak or (ile>0);
   			return szablon,czy_tak;
		end;
		local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
			if(obiekt=="SZABLON")then
				local tabela_parametrow_szablonu=parametr1;
				local nazwa_szablonu=parametr2;
				local tabela_modyfikatorow=parametr3;
 				if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
 					local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
 					if(not czy_tak)then return nil,true;end;
 					return wynik,true;
 				end;
			elseif(obiekt=="ZNACZNIK")then
 				local nazwa=parametr1;
 				local zawartosc=parametr2;
 				local tab_atrybuty=parametr3;
   				if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
 					local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
 					if(not czy_tak)then return nil,true;end;
 					return wynik,true;
   				end;
			end;
		end;
		----
		local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
   		---
   		--local tab_nazwa_spisow_przekierowaniowych={};
   		---
   		local PrzetwarzanieZnacznikowe=function(komorka,trimowanie)
   			local spacja=" ";
   			local tab_spacja={
   				["nbsp"]=spacja,
   				["#32"]=spacja,
   			};
   			komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
   			local komorka_stara=komorka;
   			if(not trimowanie)then
   				komorka=mw.text.trim(komorka);
   			end;
   			if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
   			return ((not trimowanie)and ("\n\n"..komorka.."\n") or komorka);
   		end;
   		----
   		local function ZamienNaKody(zawartosc,czy_szablon)
   			local function Linie(wzor)
   				zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
   					return "&#"..mw.ustring.byte(a)..";"..(b or "");
   				end);
   			end;
   			Linie("^([=%*#:;])");
   			Linie("([=])([^%S\n]*)$");
   			return zawartosc;
   		end;
   		tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
   			   	if(obiekt=="SZABLON")then
 					local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   						-----
   						-----
 						local function AnalizaSzablonu(szablon)
							local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
							if(wynik)then return wynik;end;
							if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
							local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
							if(czy_szablony_bez_generowania_napisowego)then return "";end;
							if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
							--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
 						end;
 						local szablon2=AnalizaSzablonu(szablon);
 						if(szablon2)then return szablon2;end;
 						local czy_center;
 						szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
 						if(szablon)then 
 						    local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
 						    	local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
 								if(szablon_ce)then
 									local zawartosc=tabela_parametrow_szablonu[szablon_ce];
 									if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
   										return zawartosc,tabela_parametrow_szablonu;
 									end;
 								end;
   								return nil,tabela_parametrow_szablonu;
 						    end);
 						    if(not wynik)then
 								tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
 								local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
 								if(tablica_danych_parametrow_szablonu_strony_numer)then
 									local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
 									if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
 										tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
 									end;
 								end;
 							else
 								return wynik;
 							end;
 							return nil;
 						elseif(czy_center)then
 							local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
 							if(szablon_ce)then
 								local zawartosc=tabela_parametrow_szablonu[szablon_ce];
 								if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
   									return zawartosc;
   								else
   									return nil;
   								end;
   							else
 								return nil;
 							end;
 						end;
 						local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
 						if(znacznik_numer)then
 							local parametr=tabela_parametrow_szablonu[znacznik_numer];
 							if(parametr)then
 								return ZamienNaKody(parametr,true);
 							end;
 						end;
 					end);
   					if(wynik)then return wynik,nil,true;end;
   					return nil,true;
   				elseif(obiekt=="ZNACZNIK")then
   					local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
   					if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
   						if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
   							local fun=function()
   								if(nazwa~="div")then
   									return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
   								elseif((zawartosc)and(zawartosc~=""))then
   									local ile1;local ile2;
   									zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
   										if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
   										return "\n";
   									end);	
   									zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
   										if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
   										return "";
   									end);
   									
   									return ZamienNaKody(zawartosc,false);
   								else
	   								return "";
   								end;
   							end;
   							return fun,nil,true;
   						end;
   					else
   						if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
   							return zawartosc,nil,true;
   						end;
   						local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
 						if(szablon)then 
 							tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
 							local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
 							if(tablica_danych_parametrow_szablonu_strony_numer)then
 								tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
 							end;
 						end;
   					end;
   					return nil,true;
   				elseif(obiekt=="INNEPRE")then
   					if(mw.ustring.match(szablon,"^%s*$"))then
   						return "",nil,true;
   					end;
   					return nil,true;
   				elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
   					local tak=false;
   					szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
   						if(obiekt=="ZNACZNIK")then
   							 tak=true;
   							 local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
   							 return zawartosc or "",nil,true;
   						end;
   						return nil,true;
   					end);
   					if(tak)then
   						tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
   					end;
   					local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.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 return "",nil,true;end;
   				elseif(obiekt=="WIKITABELA")then
					szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
					szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
   					--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
   					szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
   						return PrzetwarzanieZnacznikowe(komorka);
   					end);
   					szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
   						return PrzetwarzanieZnacznikowe(komorka);
   					end);
   					szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
   					szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
   						return PrzetwarzanieZnacznikowe(komorka);
   					end)
   					szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
   						return PrzetwarzanieZnacznikowe(komorka);
   					end);
   					szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
   						return PrzetwarzanieZnacznikowe(komorka);
   					end);
   					return szablon,nil,true;
    			end;
    			return nil,true;
   		end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
   		
   		local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
			local iter_main=parametry_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
			local tekst="";
   			for linia in iter_main do
			    local linia_nie_nil=mw.ustring.match(linia,wzor);
				if(linia_nie_nil)then
	   				local tak=nil;
	   				local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
	   					if(obiekt=="SZABLON")then
	   						local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
	   							if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then 
	   								tak=true;
	   								return " ";
	   							end;
	   							local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
	   							if(szablon_ce)then
	   								local tekst=tabela_parametrow_szablonu[szablon_ce];
	   								if(tekst)then 
	   									tak=true;
	   									return tekst;
	   								end;
	   							end;
	   						end);
	   						if(wynik)then return wynik,nil,true;end;
	   					elseif(obiekt=="ZNACZNIK")then
	   						local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
							if((nazwa=="br")or(nazwa=="hr"))then 
						 		tak=true;
						 		return " ",nil,true;
							elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
								tak=true;
					 			return zawartosc or "",nil,true;
							end;
	   					elseif(obiekt=="PRE")then
							local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
							if(zawartosc)then
								zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
								if(czy_dodatni_rozdzial)then
									local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
									tak=true;
									return zawartosc,nil,true;
								else
									tak=true;
									return zawartosc,nil,true;
								end;
							else
								tak=true;
								return "",nil,true;
							end;
	   					elseif(obiekt=="ŹRÓDŁO")then
							local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
							if(zawartosc)then
								zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
								if(czy_dodatni_rozdzial)then
									local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
									tak=true;
									return zawartosc,nil,true;
								else
									tak=true;
									return zawartosc,nil,true;
								end;
							else
								tak=true;
								return "",nil,true;
							end;
	   					elseif(obiekt=="NOWIKI")then
							local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
							if(zawartosc)then
								zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
								local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
								tak=true;
								return zawartosc,nil,true;
							else
								tak=true;
								return "",nil,true;
							end;
	   					end;
	   					return nil,true;
	   				end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
	   				tekst=tekst..((tekst~="") and "\n" or "")..linia_tekst;
				else
					tekst=tekst..((tekst~="") and "\n" or "")..linia;
				end;
   			end;
			tekst_rozwiniety_calego_artykulu=tekst;
   		end;
   		-----
   		LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
   		LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);

   		tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,
   			function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
   				if(obiekt=="SZABLON")then
					return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   						if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
   							return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
   						else
   							local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
							if(numer_parametru)then
								local parametr=tabela_parametrow_szablonu[numer_parametru];
								if(parametr)then
									local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
									if(naglowek)then 
										local obiekt_hnumer="ZNACZNIK";
										local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
										return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
									end;
								end;
							end;
   						end;
					end);
   				elseif(obiekt=="ZNACZNIK")then
   					local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
   					if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
   						 return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
   					end;
   				elseif(obiekt=="INNEPRE")then
   					return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
   				elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
   					return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
   				end;
   			end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
   		-----
   	end;
   	tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
   	
   	local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
   	
   	tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
   		return tab_magiczne_derektywy[derektywy] and "" or nil;
   	end);
   	tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
   	tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
   	
   	--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
   	if(czy_dalej_rozwazac_zakodowane)then
   		----
   		tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
   		tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
   	end;
   	--mw.log(	tekst_rozwiniety_calego_artykulu)
   	--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
   	local iter_main=parametry_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
   	local naglowek_aktualnego_rozdzialu;
   	local linia_naglowka_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.tablica_nazw_wprowadzenia_tekstu_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=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
   	-----
   	local tak_ce_spis_tresci=nil;
   	local m=0;
   	
   	local function Wystepowanie(linia,funkcja1,funkcja2)
   	   	local czy_znaleziono_okladka=false;
   	   	local function RozwazajLinie(szablon,obiekt,kod)
	   	   	if(szablon)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,pelna_nazwa_spisu_tresci_szablonowa,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
	   	   		if(not kom)then
	   	   			local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
   		   			if(tab)then
   		   				local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
   		   				local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
   		   				if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
			   	   			return 1;
			   	   		elseif(czy_okladka)then
			   	   			czy_znaleziono_okladka=true;
			   	   		end;
   			   		end;
   	   			else
   	   				return 0;
   	   			end;
	   	   	end;
   	   end;
   	   local function RozwazajLinieZnacznikowe(zawartosc)
   		   local wartosc;
   		   local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
      			local function CenterZnacznikLinia(szablon,obiekt,kod)
      				wartosc=RozwazajLinie(szablon,obiekt,kod);
      				if(not wartosc)then return;end;
      				if(wartosc==1)then return nil;end;
      				return szablon,tekst;
      			end;
      			if(obiekt=="SZABLON")then
      				local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   	   				    local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
   	   				    return szablon,tekst;
      				end);
      				return szablon,tekst;
      			elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
      				local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
      				return szablon,tekst;
      			end;
   		   	end);
   	   		for szablon,obiekt,kod in iter do end;
  			return wartosc;
   		end;
   		local szablon_spis_tresci;
		local function spis_tresci(wystepowanie_linkow,hn_number)
   			 local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul);
   	   		for szablon,obiekt,kod in iter do
   	   			local function Spis(szablon,obiekt,kod)
   	   				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,p.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
	   	   			if(not kom)then
	   	   				local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
   		   				if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
	   	   					tak_ce_spis_tresci=hn_number;
   		   					szablon_spis_tresci=wystepowanie_linkow;
   	   						return 1;
   	   					end;
   	   				else
   	   					return 0;
   	   				end;
	   	   		end;
   	   			if(obiekt=="SZABLON")then
   	   				local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
   	   					local wynik=Spis(szablon,obiekt,kod);
   	   					if(wynik)then return wynik;end;
   	   				end);
      				if(wynik)then return wynik;end;
   	   			elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
   	   				local wynik=Spis(szablon,obiekt,kod);
   	   				if(wynik)then return wynik;end;
   	   			end;
   	   		end;
   	   		wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_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=hn_number;
   	   			szablon_spis_tresci=wystepowanie_linkow;
   	   			return 1;
   	   		end;
   		end;
		local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
    	local tak=nil;
   		if(czy_dalej_rozwazac_zakodowane)then
   			if(wystepowanie_linkow)then
   	   			local czy_rozdzial=nil;local wartosc=nil;
   	   			local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
   	   				local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
   	   				if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
   	   					local podrecznik=nil;
	   	   				if(czy_szablon)then
   		   					  local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
	   								-----
   		   							local czy_ce=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,true);
   	   								else
   	   						    		wartosc=RozwazajLinie(szablon,obiekt,kod);
	   	   							end;
   		   						else
   	   								wartosc=RozwazajLinie(szablon,obiekt,kod);
   	   								if(wartosc)then podrecznik=true;else podrecznik=false;end;
   	   							end;
      						end);
   	   					elseif(czy_znacznik)then
      						local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
      						if(zawartosc)then
      							if(nazwa=="center")then
      								szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
      								wartosc=spis_tresci(szablon_spis_tresci,true);
      							elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
      								szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
      								local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
      								wartosc=spis_tresci(szablon_spis_tresci,hn_number);
      							else
      								wartosc=RozwazajLinieZnacznikowe(zawartosc);
      							end;
      						end;
   	   					else
   	   						wartosc=RozwazajLinie(szablon,obiekt,kod);
   	   						if(wartosc)then podrecznik=true;else podrecznik=false;end;
   	   					end;
   	   					if(podrecznik==true)then
   	   						if(not czy_rozdzial)then
   	   							if(wartosc==1)then
   	   				    			local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
   	   				    						    				and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
   	   				    																and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
   	   								if(not wystepowanie_linku_lub_szablonu)then return nil;end;
   	   								czy_rozdzial=true;
   	   							elseif(wartosc==0)then
									local ile;
   	   								tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
   	   								return "", ((ile>0) and tekst or nil);
   	   							end;
   	   						end;
      					elseif(podrecznik==false)then
   	   						if(not wartosc)then
   	   							if(czy_znaleziono_okladka)then
   	   								local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
   	   								if(not czy_nie_uwzgledniac_linii)then
   	   									local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
   	   									return "", ((ile>0) and tekst or nil);
   	   								else
   	   									czy_znaleziono_okladka=false;
   	   								end;
   	   							else
   	   								local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
   	   								return "", ((ile>0) and tekst or nil);
   	   							end;
      						end;
   	   					end;
   	   					if(not wartosc)then return;end;
   	   					tak=tak or (wartosc==1);
   	   					if(tak)then return;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
   	   		funkcja1(szablon_spis_tresci);
   	   	else
   	   		funkcja2();
   	   	end;
   	end
   	
   	return function()
   	   	local tab_str={};
   	   	local linia;
   	   	local function IterMain()
        	for linia in iter_main do
   	   			local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
   				---------------------------------------
   	   	   	    nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
      			if(nazwa_rozdzialu) then
   	   				nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
      			end;
      			if(not nazwa_rozdzialu)then
   	   				if(czy_rozdzialy_analizowac)then
   	   					if(not czy_w_spisie_tresci)then
      						Wystepowanie(linia,function(szablon_spis_tresci)
      							if(not tak_ce_spis_tresci)then
   	   								nazwa_rozdzialu="Spis treści";
   	   								poziom_rozdzialu=nil;
   	   								table.insert(tab_str,linia);
   	   							else
   	   								if(szablon_spis_tresci)then
   	   									local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
   	   									if((numeracja)and(rozdzial))then
   	   										numeracja_rozdzialu=numeracja;
   	   										nazwa_rozdzialu=rozdzial;
   	   									else
   	   										nazwa_rozdzialu=szablon_spis_tresci;
   	   										numeracja_rozdzialu=nil;
   	   									end;
   	   								else
   	   									nazwa_rozdzialu="Spis treści";
   	   									numeracja_rozdzialu=nil;
   	   								end;
   	   								local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
   	   								poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
   	   								czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
   	   								poczatek_rozdzialu=nil;
   	   								--str="";
   	   							end;
      						end,function()
      							nazwa_rozdzialu=nil;
      						end);
   	   					end;
   	   					if(not nazwa_rozdzialu)then
   	   						local linia_temp;
   	   						linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
   	   					end;
   	   				else
   	   					nazwa_rozdzialu=nil;
   	   				end;
   	   			end;
   	   			if(nazwa_rozdzialu)then
   	   				czy_w_spisie_tresci=true;
 
   	   	   			if(not naglowek_aktualnego_rozdzialu)then
   	   	   	  			naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
   	   	   	  			linia_naglowka_aktualnego_rozdzialu=linia;
   	   	   	  			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 linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_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;
   	   	   	  			linia_naglowka_aktualnego_rozdzialu=linia;
   	   	   	  			poziom_aktualnego_rozdzialu=poziom_rozdzialu;
   	   	   	  			poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
   	   	   	  			numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
   	   	   	  			czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
   	   	   	  			
   	   	   	  			local str=table.concat(tab_str,"\n");
   	   	   	  			if(not __FUNKCJA2)then
   	   						naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu 
   	   		                                      and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
   	   		                                      	                   or naglowek_posredni_aktualnego_rozdzialu
   	   		                                      	   )
   	   		                                         or nil;
   	   	   					str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
   	   	   				elseif(czy_dalej_rozwazac_zakodowane)then
   	   	   					naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
   	   	   					str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
   	   	   				end;
   	   	   				--linia_poprz=nil;
   	   	   				m=m+1;
   	   	   	  			return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_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
   	   	   	  			table.insert(tab_str,linia);
   	   	   			end;
   	   	   			--linia_poprz=linia;
   	   			end;
   	   		end;
   	   		if(czy_koniec)then return nil;end;
   	   		czy_koniec=true;
   	   		---
   	   		local str=table.concat(tab_str,"\n");
   	   		--
   	   		if(not __FUNKCJA2)then
   	   			naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu 
   	   		                                      and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
   	   		                                      	                   or naglowek_aktualnego_rozdzialu
   	   		                                      	   )
   	   		                                         or nil;
   	   	   		str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
   	   		elseif(czy_dalej_rozwazac_zakodowane)then
   	   			naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
   	   	   		str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
   	   		end;
   	   		--linia_nast=nil;linia_poprz=nil;
   	   		m=m+1;
   	   		return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
   		end;
	    ----
	    local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
	    return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
   	 end,tekst_rozwiniety_calego_artykulu;
end;
return p;