Przejdź do zawartości

Moduł:StronicowyParser/StronaSubst

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun,NieFun,FunRozdzial,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
	local nazwy_modul=require("Module:Nazwy");
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	if((pelnanazwastrony) or ((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu)))then
		local args_nowe;
		if(not pelnanazwastrony)then
			args_nowe={
				["nazwa przestrzeni nazw"]=nil,
				["nazwa jednostki"]=nil,
			};
		else
			args_nowe={
				["nazwa przestrzeni nazw"]="",
				["nazwa jednostki"]=pelnanazwastrony,
			};
		end;
	
		if((not tab_lista_artykulow_w_ksiazce_spis)or(pelnanazwastrony))then
			stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
			stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
			local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
			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:TabelaListyStronWoluminu({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);
			nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
			nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu_podana;
			nazwa_ksiazki=self_zmienna.nazwa_woluminu_podana;
			nazwa_artykulu=self_zmienna.nazwa_podstrony_woluminu_podana;
		else
			nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
			nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
			nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
			nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
		end;
	else
		local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
		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:TabelaListyStronWoluminu({args={}},tabela_listy_danych_analizy_ksiazki,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);

		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;
	end;
	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 artykul_w_bazie=artykul_w_bazie_element[1];
 									local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
 									artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
	 								local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
  									if(not tab_artykul[artykul_bez_naglowka_w_bazie])then
  										tab_artykul[artykul_bez_naglowka_w_bazie]=true;
  									end;
  								end;
							end;
						end;
						--local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");						  						
                        if(
                        	((nazwa_artykulu~="Wersja do druku")and(nazwa_ksiazki~=nazwa_artykulu))
                        		and(tab_artykul[nazwa_artykulu])
                        )then
                            return NieFun(nil);
                        end;
  						-----
  							
                        if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
                        		if((nazwa_ksiazki==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
                        			return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
                        		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(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
     	                                	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,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
                        		   	    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,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    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 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 WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)
		local szablonowe_modul=require("Module:Szablonowe");
  		local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony);
  		for szablon,obiekt,kod in iterator do
  			if(obiekt=="SZABLON")then
  				szablon=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
  					if(nazwa_szablonu=="StronaSubst")then return StronaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
  					if(nazwa_szablonu=="KsiążkaSubst")then return KsiazkaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
  			    end);
  			end;
  		end;
  	end;
	local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
		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.."/"..strona
		if(not czy_link)then
			str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(p,naglowek_strony);
		else
			local linki_modul=require("Module:Linki");
	        local str_link=linki_modul["Link wewnętrzny"]{
	            ["strona"]=adres,
	            ["nazwa"]=naglowek_strony,
	        };
			str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(p,str_link);
		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 ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(strona,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  		local nazwa_strony=strona[1];
  		local czy_table_strona=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(nazwa_strony);
  		local nazwa_strony_parametr=czy_table_strona and nazwa_strony[1] or nazwa_strony;
  		nazwa_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_strony_parametr,false);
  							-------
        if((nazwa_strony~="Wersja do druku")and(nazwa_ksiazki~=nazwa_strony))then
  			local nazwa_strony_z_naglowkiem=naglowki and stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_strony_parametr,true) or nazwa_strony;
  			local tab_naglowek_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_strony_parametr,true);
  			local naglowek;
  				
  			local parametry_modul=require("Module:Parametry");
  			if(parametry_modul.TypeTable(tab_naglowek_strony))then 
  				naglowek=parametry_modul["CzyTakCiąg"](tab_naglowek_strony[3]) and tab_naglowek_strony[3] or nil;
  			end;
  							
	  		if(not naglowki or not naglowek)then
	  			naglowek=mw.ustring.match(nazwa_strony_z_naglowkiem,"/([^/]*)$") or nazwa_strony_z_naglowkiem;
	  		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(nazwa_strony_z_naglowkiem,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  					        	
  			elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
  				local specjalne_modul=require("Module:Specjalne");
  				local function SpisTOC(toc,licznik, element_w_tablicy)
  				    local naglowek_rozdzialu=element_w_tablicy[1][2];
  				    local numer_link_naglowek=Powtarzane(naglowek_rozdzialu);
  			    	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);
  			        local id_naglowka,naglowek_rozdzialu=specjalne_modul["PrzetwórzNagłówek"](naglowek_rozdzialu,true,true);
					table.insert(toc_nowe,{{id_naglowka..((numer_link_naglowek>1) and ("_"..numer_link_naglowek) or ""), naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
						 
  			        wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,naglowek_rozdzialu,nil,poziom_rozdzialu_sekcji,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  			    end;
  				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(nazwa_strony,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  			    local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
  			        
  			    local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
    			local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
    				
  			    local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
  			    if(tekst_rozwiniety_calego_artykulu)then
  			        local szablonowe_modul=require("Module:Szablonowe");
  			        local tablica_obiektow_strony_dany_modul_uzyskany;
 					tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_rozwiniety_calego_artykulu);
 									 
 					local tablica_obiektow_strony_danych_kodow_specjalnych_modul;
 					tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
 						-----
	  			    local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,false,true,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);
  				    if(toc)then
  				        local nazwa_strony_naglowka=toc.nazwa_strony;
  				        for licznik, element_w_tablicy in ipairs(toc)do
  				        	SpisTOC(toc,licznik, element_w_tablicy);
  				        end;
  		        	end;
  			    end;
  			end;
        end;
  		return tablica_stron,wikikod,toc_nowe;
	end;
	local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy)
		local m=tab_lista[1][2][1] or 0;
     	local czy_centrowany=false;
     	local czy_srednikowy=false;
     	if(m>0)then 
     	    local czy_centrowany=tab_lista[1][2][4] or false;
     	    if(czy_centrowany)then
     	    	licznik_rozdzial_dodatni=0;
     	    	licznik_rozdzial_zerowy=0;
     	    	licznik_rozdzial_centrowany=2;
     	    	licznik_rozdzial_srednikowy=0;
     	    	czy_centrowany=true;
     	    else
     	    	licznik_rozdzial_dodatni=m;
     	    	licznik_rozdzial_zerowy=0;
     	    	licznik_rozdzial_srednikowy=0;
     	   end;
     	elseif(m==0)then 
     	    licznik_zerowy_rozdzial=1;
     	else
     	    local przedrostek_listy=tab_lista[1][2][2];
     	    if(przedrostek_listy)then
     	    	if(mw.ustring.match(przedrostek_listy,"^;+"))then
     	    	     licznik_rozdzial_srednikowy=math.abs(m);
     	    	     licznik_rozdzial_zerowy=0;
     	    	     czy_srednikowy=true;
     	    	end;
     	    end;
     	end;
 	    m=(((not czy_centrowany)and(not czy_srednikowy))and(math.abs(m)) or 0)+((m<=0) and (licznik_rozdzial_dodatni+licznik_rozdzial_srednikowy+licznik_rozdzial_zerowy) or 0)+licznik_rozdzial_centrowany;

 	    return m;	
	end;
	local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,strona,liczba_stron_zerowych,liczba_stron_srednikowych)
		local czy_srednikowy=false;
  		local roznica=(strona[2][1]>0)and strona[2][1] or 0;
  		if(roznica==0)then 
  			liczba_stron_zerowych=1;
  		elseif(roznica>0)then
  			local przedrostek_listy=strona[2][2];
  			if(przedrostek_listy)then
  				if(mw.ustring.match(przedrostek_listy,"^;+"))then
  					liczba_stron_zerowych=0;
  					liczba_stron_srednikowych=roznica;
  					czy_srednikowy=true;
  				end;
  			end;
  		end;
	  	local m_roznica=m+((not czy_srednikowy) and roznica or 0)+liczba_stron_zerowych+liczba_stron_srednikowych;
	  	return m_roznica;
	end;
	local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  		if(tab_lista[2])then
			local liczba_stron_zerowych=0;
			local liczba_stron_srednikowych=0;
  			for _,strona in ipairs(tab_lista[2])do
  				local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,strona,liczba_stron_zerowych,liczba_stron_srednikowych);
  				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");
							----
				tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(strona,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
							----
  			end;
  		end;
  		return tablica_stron,wikikod,toc_nowe;
	end;
  	local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  		local strona=tabela_parametrow_szablonu[1];
  		local link=tabela_parametrow_szablonu["link"];
  		local parametry_modul=require("Module:Parametry");
  		strona=parametry_modul["Odstępy"]{nazwa=strona,["wewnątrz"]="tak",};
	    local czy_link=parametry_modul.CzyTak(link);
	    
  		if(czy_artykul_aktualny)then
        	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;
        	if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")])then
        		return;
        	end;
     	else
     		if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"])then
     			glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"]={};
     		end;
     		local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"];
     		if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
     			tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
     		end;
     		local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
     		if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
     			tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
     		end;
     		local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
     		if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
     			tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
     		end;
     		local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
     		if(not tablica_nazwa_ksiazki[strona])then
     			tablica_nazwa_ksiazki[strona]={};
     		end;
     		if(tablica_nazwa_ksiazki[strona][(czy_link and "tak" or "")])then
     			return;
     		end;
     	end;
	  	local szablonowe_modul=require("Module:Szablonowe");

        local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
	    if((strona=="Wersja do druku")or(strona==nazwa_ksiazki))then return "";end;
	        
    	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,naglowek,link,nil,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
        
        if(czy_artykul_aktualny)then
        	glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
     	else
     		glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
     	end;
        return str;
  	end;
  	local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
	    if(czy_artykul_aktualny)then
  		 	if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
     			return;
     		end;
     	else
     		if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"])then
     			glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"]={};
     		end;
     		local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"];
     		if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
     			tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
     		end;
     		local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
     		if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
     			tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
     		end;
     		local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
     		if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
     			tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
     		end;
     		local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
     		if(tablica_nazwa_ksiazki[substrona])then
     			return;
     		end;
     	end;
		
		  		
	   local parametry_modul=require("Module:Parametry");
  	   local html_modul=require("Module:Html");
       local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  	   local tablica_stron={};
  	   local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
  	   local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
  	   local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
  	   local ktore=tonumber(tabela_parametrow_szablonu["które"]) or 1;
  	   local licznik_numer_tego_samego_rozdzialu=1;
  	   for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
			local rozdzial=tab_lista[1][1];
			if(substrona==rozdzial)then
				if(ktore==licznik_numer_tego_samego_rozdzialu)then
  	    			local wikikod="";
					local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
  	    			tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  	    		    if(czy_artykul_aktualny)then
     					glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
     				else
     					glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod;
     				end;
	  				return wikikod;
				end;
  				licznik_numer_tego_samego_rozdzialu=licznik_numer_tego_samego_rozdzialu+1;
			end;
  		end;
  		return "";
  	end;
  	local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  		mw.log(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  		 if(czy_artykul_aktualny)then
  		 	if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
     			return;
     		end;
     	else
     		if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"])then
     			glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"]={};
     		end;
     		local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"];
     		if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
     			tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
     		end;
     		local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
     		if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
     			tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
     		end;
     		local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
     		if(tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
     			return;
     		end;
     	end;
  	    local szablonowe_modul=require("Module:Szablonowe");
		local parametry_modul=require("Module:Parametry");
  	    local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
  	    local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
	  	local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
	  	    	
    	local wikikod="<div class=\"klasa_książki\">";
    	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	    local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
    	local tablica_stron={};
    	local licznik_rozdzial_dodatni=0;
    	local licznik_rozdzial_zerowy=0;
    	local licznik_rozdzial_centrowany=0;
    	local licznik_rozdzial_srednikowy=0;
	    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;
     	    local czy_centrowany=false;
     	    local czy_srednikowy=false;
     	    local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy);
     	    ----
			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 "")..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(m_uzyskane,rozdzial);
						 
				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;
			tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
	  		wikikod=wikikod.."</div>";
        end;
 	    wikikod=wikikod.."</div>";
 	    if(czy_artykul_aktualny)then
     		glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
     	else
     		glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod;
     	end;
      	return wikikod;
  	end;
	
  	local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
  		return function(parametr) return "";end;
  	end;
  	local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
  		return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
  			AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
  			return "tak";
  		end;
  	end;
  	local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
  		return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
  			AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
  			return "tak";
  		end;
  	end;
	----
	local szablonowe_modul=require("Module:Szablonowe");
	local ksiazkowe_modul=require("Module:Książkowe");
	WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
			local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
			local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
			local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
			local czy_artykul_aktualny;
			if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
				czy_artykul_aktualny=true;
				local tabela_listy_danych_analizy_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki;
				nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
				nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
				nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
				nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
			else
				local tabela_nazw={};
				local pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
				tabela_nazw={};
				nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](pelnanazwastrony,tabela_nazw);
				nazwa_przestrzeni_ksiazki=ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](pelnanazwastrony,tabela_nazw);
				nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and ksiazkowe_modul["NazwaTytułuKsiążki"](pelnanazwastrony,tabela_nazw) or ksiazkowe_modul["NazwaKsiążki"](pelnanazwastrony,tabela_nazw);
				nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelnanazwastrony,tabela_nazw);
			end;
			StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
		end,
		function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
			local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
			local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
			local spis_artykulow=nil;local pelnanazwastrony;local czy_artykul_aktualny;
			if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
				spis_artykulow=spis;
				czy_artykul_aktualny=true;
			else
				local tabela_nazw={};
				pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
			end;
			p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
		end);
	CzyStronaSubst();
	glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
	return tekst_rozwiniety_calego_artykulu;
end;
return p;