Moduł:StronicowyParser/StronaSubst

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania
Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,pelnanazwastrony,TakFun,NieFun,FunRozdzial)
	local nazwy_modul=require("Module:Nazwy");
	local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
	local args_nowe;
	if(tabela_listy_danych_analizy_ksiazki)then
		args_nowe={
			["nazwa przestrzeni nazw"]=nil,
			["nazwa jednostki"]=nil,
		};
	else
		args_nowe={
			["nazwa przestrzeni nazw"]="",
			["nazwa jednostki"]=pelnanazwastrony,
		};
	end;
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
	local tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki({args=args_nowe},tabela_listy_danych_analizy_ksiazki,false);

	if(not tab_lista_artykulow_w_ksiazce_spis)then 
		--local blad_modul=require("Module:Błąd");
		--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
		return;
	end;
	local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(tabela_listy_danych_analizy_ksiazki);

	local nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
	local nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_ksiazki_podana;
	local nazwa_ksiazki=self_zmienna.nazwa_ksiazki_podana;
	local nazwa_artykulu=self_zmienna.nazwa_artykulu_podana;
	local parametry_modul=require("Module:Parametry");
	if(tab_lista_artykulow_w_ksiazce_spis)then
        local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
		if((nazwa_przestrzeni==nazwy_np_modul.Main)
  			or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
  				or((nazwa_przestrzeni==nazwy_np_modul.Wikibooks)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^Brudnopis/([^/]+)$")))
  					or((nazwa_przestrzeni==nazwy_np_modul.User)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))))then
  						-----
  						local tab_artykul={};
						for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
							if(tab_lista[2])then
  								for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
 									local czy_table=parametry_modul.TypeTable(artykul_w_bazie_element[1]);
								  	if(czy_table)then
  										artykul_w_bazie=artykul_w_bazie_element[1][1];
  									else
  										artykul_w_bazie=artykul_w_bazie_element[1];
  									end;
	 								local artykul_z_naglowkiem_w_bazie_match=mw.ustring.match(artykul_w_bazie,"^([^#]*)#.*$");
  									artykul_bez_naglowka_w_bazie=artykul_z_naglowkiem_w_bazie_match or artykul_w_bazie;
  									if(not tab_artykul[artykul_bez_naglowka_w_bazie])then
  										if(not naglowek)then
  											tab_artykul[artykul_bez_naglowka_w_bazie]=true;
  										end
  									end;
  								end;
							end;
  						end;
                        if(tab_artykul[nazwa_artykulu])then
                               	 return NieFun(nil);
                        end;
  						-----
  							
                        local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");
                        if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
                        		if((ksiazka==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
                        			return TakFun(tab_lista_artykulow_w_ksiazce_spis)
                        		else
                        			local function StronaRozdzial()
                        				for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce_spis)do
     	                                	local rozdzial=tab_lista[1][1];
     	                                	if(rozdzial==nazwa_artykulu)then
     	                                    	return TakFun(frame);
     	                                	end;
                        				end;
 	                            	    return;
                        			end;
                        			if(not FunRozdzial)then
                        		   		local val=StronaRozdzial();
                        		   		if(val)then return val;end;
                        			else
                        		   	    local val=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu);
                        		   	    if(not val)then return val;end;
                        			end;
                        		end;
                        end;
        end;
  	end
  	return NieFun(nil);
end;
p.LiczOperacjeStronZbiorczych=function(glowna_tablica,tekst_rozwiniety_calego_artykulu)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args={}};
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki({args={}},glowna_tablica.tabela_listy_danych_analizy_ksiazki);
	local spis,tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki({args={}},glowna_tablica.tabela_listy_danych_analizy_ksiazki,true);

	if(not spis)then 
		--local blad_modul=require("Module:Błąd");
		--return blad_modul.error{tab="span",tekst="Nie znalazłem takiej książki."};
		return;
	end;
	local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(glowna_tablica.tabela_listy_danych_analizy_ksiazki);

	local nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni;
	local nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_ksiazki;
	local nazwa_ksiazki=self_zmienna.nazwa_ksiazki;
	--local nazwa_artykulu=self_zmienna.nazwa_artykulu;
	
	
    local nazwy_modul=require("Module:Nazwy");
        		
    local toc_nowe={};
    local tab_powtarzane={};
    local function Powtarzane(rozdzial)
    	local b=1;
    	for i=1,#tab_powtarzane,1 do
    		if(tab_powtarzane[i]==rozdzial)then
    			b=b+1;
    		end;
    	end;
    	tab_powtarzane[#tab_powtarzane+1]=rozdzial;
    	return b;
    end;
    			
	local AnalizaStronZbiorczych=function()
		local function CzyStronaSubst()
  			if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
  				glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
  			end;
  		end;
		local function StronaSubstParametr(tab_strona,link,p,postep)
  	    	local strona;local id;
	  	    if(type(tab_strona)=="table")then strona=tab_strona[2];id=tab_strona[1];else strona=tab_strona;end;
  	    	local naglowek_strony;
  	    	local artykul;
  	    	local ile=0;
  	    	if(id)then
  	    		strona,_=mw.ustring.gsub(strona,"<[^<>]*>","");
  	    		--strona,_=mw.ustring.gsub(strona,"'+","");
  	    		naglowek_strony,ile=mw.ustring.gsub(id,"^([^#]*)#(.*)$","%2");
  	    		--artykul,_=id.gsub(id,"^([^#]*)#(.*)$","%1#"..strona);
  	    	else
  	    		naglowek_strony,ile=mw.ustring.gsub(strona,"^([^#]*)#(.*)$","%2");
  	    		--artykul=strona;
  	    	end;
			local str="<div style=\"display:block;\" class=\"rozdział_książki\">\n";
			local parametry_modul=require("Module:Parametry");
			local czy_link=parametry_modul.CzyTak(link);
				
			local adres=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":")  or "")..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..(id and id or strona);
			p=p or 1;
			p=(p<1)and 1 or p;
			p=(p<=6)and p or 6;
			if(not czy_link)then
				local kotwica="";
				if(id)then
					id,_=mw.ustring.gsub(id,"^[%s_]*","");
					id,_=mw.ustring.gsub(id,"[%s_]*$","");						
					id,_=mw.ustring.gsub(id,"[%s_]+","_");	
					kotwica="<span id=\""..id.."\"></span>";
				end;
				str=str..mw.ustring.rep("=",p)..kotwica..((ile==0) and mw.ustring.match(naglowek_strony,"/([^/]+)$") or naglowek_strony)..mw.ustring.rep("=",p).."\n";
			else
				local linki_modul=require("Module:Linki");
	        	local str_link=linki_modul["Link wewnętrzny"]{
	            	    ["strona"]=adres,
	            		["nazwa"]=((ile==0) and mw.ustring.match(naglowek_strony,"/([^/]+)$") or naglowek_strony),
	        	};
	        	local kotwica="";
	        	if(id)then
					id,_=mw.ustring.gsub(id,"^[%s_]*","");
					id,_=mw.ustring.gsub(id,"[%s_]*$","");						
					id,_=mw.ustring.gsub(id,"[%s_]+","_");	
					kotwica="<span id=\""..id.."\"></span>";
				end;
				str=str..mw.ustring.rep("=",p)..kotwica..str_link..mw.ustring.rep("=",p).."\n";
			end;
			if(postep)then
				str=str.."<div class=\"postęp_ładowania_artykułu\"><div class=\"pasek_postępu\"></div> <span style=\"color:blue\">Ładuję artykuł...</span></div>";
			end;
			str=str.."<div class=\"strona_subst\" style=\"display:"..((not postep)and "block" or "none")..";\">"..((not czy_link) and (adres) or "").."</div>\n";
			str=str.."</div>";
			return str;
		end;
  		local function StronaSubst(ciag)
	  		local szablonowe_modul=require("Module:Szablonowe");
			local parametry_modul=require("Module:Parametry");
			
    	    local parametry_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](ciag);
        	local postep=parametry_modul.CzyTak(parametry_szablonu["postęp"]);
	        local strona=parametry_szablonu[1];
    	    local link=parametry_szablonu["link"];
        	local parametry_modul=require("Module:Parametry");
	        local czy_link=parametry_modul.CzyTak(link);
    	    if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"] 
        	      and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]
	        	       and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]
    		)then 
        	   return glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")];
    		end;
    	
    		local naglowek=mw.ustring.match(strona,"/([^/]*)$") or strona;
	  								--end;
	  		local liczba_powtarzanego=Powtarzane(naglowek);
	  						
			table.insert(toc_nowe,{{"#"..mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
			
        	local str=StronaSubstParametr(strona,link,nil,postep);
        	if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"])then
            	   glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]={};
        	end;
        	if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona])then
            	    glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]={};
        	end;
        	glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
        	return str;
  		end;
  		function AnalizujArtykulyRozdzialu(tab_lista_artykulow_w_ksiazce,substrona)
	  	   local parametry_modul=require("Module:Parametry");
  		   local html_modul=require("Module:Html");
  		   local tablica_stron={};
  		   for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
				local rozdzial=tab_lista[1][1];
				if(substrona==rozdzial)then
					local function KsiazkaRozdzialSubst(ciag)
						local szablonowe_modul=require("Module:Szablonowe");
	  	    			local parametry_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](ciag);
  		    			if(nazwa_szablonu_wywolania~="KsiążkaSubst")then return ciag;end;
  	    				local naglowki=parametry_modul.CzyTak(parametry_szablonu["nagłówki"]);
  	    				local postep=parametry_modul.CzyTak(parametry_szablonu["postęp"]);
  	    					
						if(tab_lista[2])then
							local wikikod="";
  							for _,strona in ipairs(tab_lista[2])do
	  							local PobierzParametr=parametry_modul.PobierzParametr(strona[1]);
  								local nazwa_strony=PobierzParametr(1);
								nazwa_strony=html_modul["NazwaStronyAdresu"](nazwa_strony);
  								if(naglowki or not tablica_stron[nazwa_strony])then
  									if(not naglowki)then
  										  tablica_stron[nazwa_strony]=true;
  									end;
  							    
  							      	local naglowek;
	  								--if(mw.ustring.match(nazwa_strony,"^[^#]*#(.*)$"))then 
	  								--	naglowek=mw.ustring.gsub(nazwa_strony,"^[^#]*#(.*)$","%1");
	  								--else
	  									naglowek=mw.ustring.match(nazwa_strony,"/([^/]*)$") or nazwa_strony;
	  								--end;
	  								local liczba_powtarzanego=Powtarzane(naglowek);
	  						
									table.insert(toc_nowe,{{"#"..mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
  							    
  							    
  									wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(strona[1],nil,nil,postep);
	  							end;
  							end;
  							glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
  							return wikikod;
						end;
  						return "";
					end;
  					
  					local nazwa_przestrzeni=glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  					local nazwa_przestrzeni_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
					local nazwa_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
					local nazwa_artykulu=glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
  					local nazwa_modulu=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "");
  					local szablonowe_modul=require("Module:Szablonowe");
  					local iterator=szablonowe_modul:IteratorSzablonowTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu,nil);
  					for szablon,obiekt,kod in iterator do
  						if(obiekt=="TEMPLATE")then
  							szablon,_=mw.ustring.gsub(szablon,"({{%s*[Ss]tronaSubst%s*|[^{}]+}})",StronaSubst);
  							szablon,_=mw.ustring.gsub(szablon,"({{%s*[Kk]siążkaSubst%s*|[^{}]*}})",KsiazkaRozdzialSubst);
  			    			szablon,_=mw.ustring.gsub(szablon,"({{%s*[Kk]siążkaSubst%s*}})",KsiazkaRozdzialSubst);
  			    		end;
  					end;
  					
  					CzyStronaSubst();
                	break;       
  				end;
  			end;
  		end;
  		function AnalizujKsiazka(tab_lista_artykulow_w_ksiazce)
  			local function KsiazkaCalaSubst(ciag)
  	    		local szablonowe_modul=require("Module:Szablonowe");
				local parametry_modul=require("Module:Parametry");
	  	    	local parametry_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](ciag);
  		    	if(nazwa_szablonu_wywolania~="KsiążkaSubst")then return ciag;end;
  	    		local naglowki=parametry_modul.CzyTak(parametry_szablonu["nagłówki"]);
  	    		local sekcje=parametry_modul.CzyTak(parametry_szablonu["sekcje"]);
	  	    	local postep=parametry_modul.CzyTak(parametry_szablonu["postęp"]);
	  	    	
    			local wikikod="<div id=\"klasa_książki\">";
    			local delta_m=0;
    			local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	    		local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
    			local parametry_modul=require("Module:Parametry");
    			local tablica_stron={};
    			local naglowki_ostatnie=nil;
    			local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
    			local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	     	    for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
    	 	         local rozdzial=tab_lista[1][1];
     		         wikikod=wikikod.."<div class=\"klasa_naglowka klasa_nagłówka\">";
     	    	     local m=tab_lista[1][2][1] or 0;
					 if((m~=0)and(rozdzial)and(type(rozdzial)=="string")and(rozdzial~="")and(rozdzial~="Spis treści")and(rozdzial~="Bibliografia")and(rozdzial~="Zobacz też")and(rozdzial~="Inne")and(rozdzial~="Licencja")
					)then
     	        		 local m_uzyskane=HNumer(m);
						 wikikod=((wikikod~="")and (wikikod.."\n") or "").."\n"..mw.ustring.rep("=",m_uzyskane)..rozdzial..mw.ustring.rep("=",m_uzyskane).."\n";
						 
						 local liczba_powtarzanego=Powtarzane(rozdzial);
						 table.insert(toc_nowe,{{"#"..mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), rozdzial,},m_uzyskane,})
					end;
					if(tab_lista[2])then
  						for _,strona in ipairs(tab_lista[2])do
  							local roznica=(strona[2][1]>0)and strona[2][1] or 0;
	  						local m_roznica=m+roznica;
  							local m_uzyskane=HNumer(m_roznica);
  							local PobierzParametr=parametry_modul.PobierzParametr(strona[1]);
  							local nazwa_strony_parametr=PobierzParametr(1);
  							
  							local nazwa_strony,_=mw.ustring.gsub(nazwa_strony_parametr,"^([^#]*)(#.*)$","%1");
  							
  							local naglowek;
	  						if(mw.ustring.match(nazwa_strony_parametr,"^[^#]*#(.*)$"))then 
	  							naglowek=mw.ustring.gsub(nazwa_strony_parametr,"^[^#]*#(.*)$","%1");
	  						else
	  							naglowek=mw.ustring.match(nazwa_strony_parametr,"/([^/]*)$") or nazwa_strony_parametr;
	  						end;
	  						local liczba_powtarzanego=Powtarzane(naglowek);
  							
  							if((naglowki or (not tablica_stron[nazwa_strony]))and(not sekcje))then
  								if(not naglowki)then
  										tablica_stron[nazwa_strony]=true;
	  							end;
	  							
	  							table.insert(toc_nowe,{{"#"..mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
  					        	
  					        	wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(strona[1],nil,m_uzyskane,postep);
  					        	
  							elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
  								
  								table.insert(toc_nowe,{{"#"..mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
  								
  				        		tablica_stron[nazwa_strony]=true;
  			    	    		wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(strona[1],nil,m_uzyskane);
  			        			local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
  			        			local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu);
  			        			if(tekst_rozwiniety_calego_artykulu)then
	  			        			 local toc=stronicowyparser_zbieraniedanychstron_modul.SpisTresciWstep(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,nil,nil,nil,nil,nil,false,true);
  				        			 if(toc)then
  				        			      for licznik, element_w_tablicy in ipairs(toc)do
  				        			    		local naglowek_rozdzialu=element_w_tablicy[1][2];
  			    	    			      	   	local link=nazwa_strony..element_w_tablicy[1][1];
  			        				      	   	local poziom_rozdzialu=element_w_tablicy[2];
  			        				      	   	
  			        				      	   	local poziom_rozdzialu_sekcji=HNumer(poziom_rozdzialu+m_roznica);
  			        				      	    
												table.insert(toc_nowe,{{"#"..link, naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
						 
  			        				      	   	wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,nil,poziom_rozdzialu_sekcji,postep);
  			        				      end;
	  			        			 end;
  				        		end;
  					        end;
  						end;
					end;
	  				wikikod=wikikod.."</div>";
    	 	   end;
 	    	   wikikod=wikikod.."</div>";
     		   glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
      		   return wikikod;
  			end;
      	
  			local nazwa_przestrzeni=glowna_tablica.tabela_listy_danych_analizy_ksiazki.zastepcza and glowna_tablica.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  			local nazwa_przestrzeni_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki.zastepcza and glowna_tablica.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
			local nazwa_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki.zastepcza and glowna_tablica.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
			local nazwa_artykulu=glowna_tablica.tabela_listy_danych_analizy_ksiazki.zastepcza and glowna_tablica.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or glowna_tablica.tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
			
  			local nazwa_modulu=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "");
  			local szablonowe_modul=require("Module:Szablonowe");
  			local iterator=szablonowe_modul:IteratorSzablonowTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu,nil);
  			for szablon,obiekt,kod in iterator do
  				if(obiekt=="TEMPLATE")then
  					szablon,_=mw.ustring.gsub(szablon,"({{%s*[Ss]tronaSubst%s*|[^{}]+}})",StronaSubst);
  					szablon,_=mw.ustring.gsub(szablon,"({{%s*[Kk]siążkaSubst%s*|[^{}]*}})",KsiazkaCalaSubst);
  			    	szablon,_=mw.ustring.gsub(szablon,"({{%s*[Kk]siążkaSubst%s*}})",KsiazkaCalaSubst);
  			    end;
  			end;
  			CzyStronaSubst();
  		end;
	
  		local NieFun=function(parametr) return "";end;
  		local TakFun=function(tab_lista_artykulow_w_ksiazce)
  			AnalizujKsiazka(tab_lista_artykulow_w_ksiazce);
  			return "tak";
  		end;
  		local FunRozdzial=function(tab_lista_artykulow_w_ksiazce,substrona)
  			AnalizujArtykulyRozdzialu(tab_lista_artykulow_w_ksiazce,substrona);
  			return "tak";
  		end;
  		p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,nil,TakFun,NieFun,FunRozdzial);
  		return "tak";
	end;
	local val=AnalizaStronZbiorczych();
	glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
	return tekst_rozwiniety_calego_artykulu;
end;
return p;