Moduł:StronicowyParser/SpisTreści

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.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany)
   local parametry_modul=require("Module:Parametry");
   if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end;
   local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")
                         ..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")
                                 ..nazwa_ksiazki;
   local nazwa_modulu=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or "");
   local techniczne_modul=require("Module:Techniczne");
   local szablonowe_modul=require("Module:Szablonowe");
   local nazwy_modul=require("Module:Nazwy");
   local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
   if(strona)then
   		local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona);
   		if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end;
    	nazwa_modulu=nazwy_modul["PEŁNANAZWASTRONY"](strona);
    	nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
   end;
   local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
   local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
   if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
   
   ----
	local techniczne_modul=require("Module:Techniczne");
   ----
    local tabelalisty2=nil;
    local licencja_z_autorem=true;
    local tabela_artykulow=nil;
    local tabela_licencji_spisu_tresci=nil;
    local parametry_modul=require("Module:Parametry");
    local html_modul=require("Module:Html");
    
    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
    local elementy_spisu_tresci=stronicowyparser_obiekty_modul.elementy_spisu_tresci;
   
    local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
    
    local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "")
                                   ..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki)
                                          ..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")
                                                  .."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][Śś][Cc][Ii]))$";
	local tablica_obiektow_strony_dany_modul={};
    local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_obiektow_strony_dany_modul,function(pelna_nazwa_szablonu,tabela_modyfikatorow)
    	local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor);
    	if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then
    		local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,true);
			if(tekst)then
    			----
    			if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni]={};end;
				local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
   
            	if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
            	local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
               
				if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
				local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
				if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
				if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end
				local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci];
				tablica_spis_tresci.tekst=tekst;
				tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci;
    			----
    			return tekst;
    		end;
    	end;
    end,function(str,tablica_analizy_dany_modul,czy_naglowek)
    	    local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)
    			if(obiekt=="TEMPLATE")then
    				local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
    				if(not czy_szablon or not zawartosc)then return;end;
                	local nazwa_szablonu=szablonowe_modul["SzablonowaNazwaStrony"](czy_szablon);
    			
    				local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    				local wynik=stronicowyparser_rozdzialy_modul.ZawartoscSzablonowFormatowaniaTresci(szablon,nazwa_szablonu);
    				if(wynik)then return wynik;end;
    			
    				local czy_tak_szablon=elementy_spisu_tresci[nazwa_szablonu];
    				if(czy_tak_szablon)then return;end;
    				 
    				local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.OgolnyWzor());
    				if(bez_kodow)then return;end;
    				local bez_kodow_linkow_wewnetrznych=not mw.ustring.match(szablon,szablonowe_modul.OgolnyWzor("LINKW")) 
    			                                        	or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)")
    			                                        		or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)")
    				if(bez_kodow_linkow_wewnetrznych)then return;end;
    				return "";
    			end;
    			return;
    	    end;
			if(not czy_naglowek)then
				local iter=szablonowe_modul:IteratorSzablonowTekstu(str,nil,tablica_analizy_dany_modul)
				for szablon,obiekt,kod,poziom_iteracji in iter do
					local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod);
					if(wynik)then
						str=szablonowe_modul:PrzeksztalacanieBazyDanychKodowaniaTekstu(str,nil,tablica_analizy_dany_modul,wynik,obiekt,kod,poziom_iteracji);
					end;
				end;
				return str;
			end;
			return str;
    end );

    local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	
	local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tab_rozdzialow_pomijanych_w_rozwazaniach_na_stronach_glownych_ksiazek;
	local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy);
	
	local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
	local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
    
    setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_wartosci_tablicy_wedlug_malych_liter);
	setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_wartosci_tablicy_wedlug_malych_liter);

    
    local numer_rozdzialu_w_ksiazce=1;
    local parametry_modul=require("Module:Parametry");
    local html_modul=require("Module:Html");
    
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local szablonowe_modul=require("Module:Szablonowe");
    local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow;
    
    local kompletnosc_artykulow_ksiazek=stronicowyparser_obiekty_modul.kompletnosc_artykulow_ksiazek;
    
    local czy_jest_spis_tresci=nil;
    local poziom_spisu_tresci=nil;
    local dalej_nie_rozwazaj_spis_tresci=nil;
    local wliczaj_artykuly_tego_rozdzialu=nil;
    local specjalne_modul=require("Module:Specjalne");
    
    local function AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja)
    	rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
    	if((poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[rozdzial]))then
    		poziom_spisu_tresci=poziom_rozdzialu;
    		czy_jest_spis_tresci=true;
    	elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
    		if(poziom_spisu_tresci<poziom_rozdzialu)then
    			wliczaj_artykuly_tego_rozdzialu=true;
    		else
    			wliczaj_artykuly_tego_rozdzialu=nil;
    			dalej_nie_rozwazaj_spis_tresci=true;
    		end;
    	end;
        
        if(not tabela_artykulow)then tabela_artykulow={};end;
   	   	if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then 
   	   		tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
   	   		rozdzial_na_tekst=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(rozdzial,nil,tablica_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
   	   			local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon);
				rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst);
				rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
				rozdzial_na_tekst=mw.ustring.gsub(rozdzial_na_tekst,"{{[^{}|]*|([^{}|]*).*}}","%1");
				return rozdzial_na_tekst;
			end);

   	   		tabela_artykulow[numer_rozdzialu_w_ksiazce][1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,},};
   	   	end;
   	   	
        local function iteratorTekstuNaglowka()
        	local re="([#:*;]*)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)";
        	local iter=nil;
        	local tak=nil;
        	local czy_rozdzial=nil;
        	return function()
        		if(not czy_rozdzial)then
        			czy_rozdzial=true;
        			if((poziom_rozdzialu or 0)>0)then
        				return "","",rozdzial,true;
        			end;
        		end;
        		if(not tak)then
        			tak=true;
        			local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
        			if(przedrostek_listy and tekstowy_przedrostek and wyzyskane_wywolanie_szablonu_spis_tresci)then
        				return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
        			end;
        		end;
        		if(not iter)then
        			iter=mw.ustring.gmatch(text,"\n"..re);
        		end;
        		local przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci=iter();
        		return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
        	end;
        end;
        
        ----
         local function LiniaArtykolow(linia) 
        	 local iter=szablonowe_modul:IteratorSzablonowTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul);
        	 local szablon,obiekt,kod=iter();
        	 
        	 if((not szablon) or (not kod) or(not obiekt))then return {};end;
        	 
        	 function SzablonAnalizujKompletnosc(szablon)
        	 	local nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
        	 	return kompletnosc_artykulow_ksiazek[nazwa_szablonu];
        	 end;
          	 local tak_pierwsze=SzablonAnalizujKompletnosc(szablon);
             for szablon,obiekt,kod in iter do
             	if(obiekt=="TEMPLATE")then
              		local szablon=tablica_obiektow_strony_dany_modul[obiekt][kod];
              	   	   
               		local tak_drugie=SzablonAnalizujKompletnosc(szablon);
            		if(tak_pierwsze)then
            			if(tak_drugie)then
              		   		linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.OgolnyWzor()..")(%s*)("..szablonowe_modul.OgolnyWzor(obiekt,kod)..")","%1,%2%3");
              			end;
              		else
              			if(tak_drugie)then
              	   			linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.OgolnyWzor(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.OgolnyWzor()..")","%1,%2%3");
              			end;
          	   		end;
             	end;
            end;
            local tabela_linii_artykolow=mw.text.split(linia,"%s*,%s*",false);
            for i=1,#tabela_linii_artykolow,1 do
              	tabela_linii_artykolow[i],_=mw.ustring.gsub(tabela_linii_artykolow[i],"&#"..mw.ustring.byte(',')..";",",");
            end;
            
            return tabela_linii_artykolow;
        end;
    	local iterator=iteratorTekstuNaglowka();
    	
    	local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
    	
    	for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
    		local tab_linia=LiniaArtykolow(linia);
    	    for k=1,#tab_linia,1 do
    			local iterator2=szablonowe_modul:IteratorSzablonowTekstu(tab_linia[k],nazwa_modulu,tablica_obiektow_strony_dany_modul);
    			for szablon,obiekt,kod in iterator2 do
	    			if((obiekt=="TEMPLATE") or (obiekt=="LINKW"))then
		    			local wyzyskane_wywolanie_szablonu_spis_tresci=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
		    			wyzyskane_wywolanie_szablonu_spis_tresci=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_modulu,tablica_obiektow_strony_dany_modul);
			
						local pozycja_artykulu=nil;local nazwa=nil;
						local tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom;
						local link_szablon=nil;
						if(wliczaj_artykuly_tego_rozdzialu)then
							tab_pozycja_artykulu,tab_pozycja_artykulu_inne,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
   		    		--Rozdzialy początek
   		    				local znaki_niedozwolone;
   		    				if((tab_pozycja_artykulu)and(tab_pozycja_artykulu[1]))then
   	   							tab_pozycja_artykulu[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_artykulu[1],[2]="tak",}
   	   							tab_pozycja_artykulu[1]=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](tab_pozycja_artykulu[1]);
   	   	    					znaki_niedozwolone=mw.ustring.match(tab_pozycja_artykulu[1],"[|<>{}%[%]]");
   	   							if(znaki_niedozwolone)then
   	   								if(not self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci)then
        								self.tabela_listy_danych_analizy_ksiazki.problemy.niedozwolone_znaki_w_spisach_tresci=0;
        							end;
        						end;
   	   							tab_pozycja_artykulu[1]=html_modul["PoprawAdresNagłówkaStronyAdresu"](tab_pozycja_artykulu[1]);
            					if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][2])then tabela_artykulow[numer_rozdzialu_w_ksiazce][2]={};end;
            					local linia_artykokow=tab_linia[k];
            					linia_artykokow=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(linia_artykokow,nazwa_modulu,tablica_obiektow_strony_dany_modul);
            				
            				    local przekierowanie=pelna_nazwa_ksiazki..((tab_pozycja_artykulu[1]~="") and ("/"..tab_pozycja_artykulu[1]) or "");
            					local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
            					if(strona)then
            						tab_pozycja_artykulu[1]=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
            					end;
            				
            					local tab_stare={((tab_pozycja_artykulu[2] or strona) and ({tab_pozycja_artykulu[1],tab_pozycja_artykulu[2],strona and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) or nil,}) or tab_pozycja_artykulu[1]),{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,};
        						table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][2],tab_stare);
        					elseif((tab_pozycja_artykulu_inne)and(tab_pozycja_artykulu_inne[1]))then
        						local wiki_modul=require("Module:Wiki");
        					
        						if(not tabela_artykulow[numer_rozdzialu_w_ksiazce][3])then tabela_artykulow[numer_rozdzialu_w_ksiazce][3]={};end;
            					local linia_artykokow=tab_linia[k];
            					linia_artykokow=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(linia_artykokow,nazwa_modulu,tablica_obiektow_strony_dany_modul);
            				
            					local tab_stare={((tab_pozycja_artykulu_inne[1])and((tab_pozycja_artykulu_inne[2])or(tab_pozycja_artykulu_inne[3])or(tab_pozycja_artykulu_inne[4])))and({tab_pozycja_artykulu_inne[1],tab_pozycja_artykulu_inne[2],tab_pozycja_artykulu_inne[3],tab_pozycja_artykulu_inne[4],}) or tab_pozycja_artykulu_inne[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,#(tabela_artykulow[numer_rozdzialu_w_ksiazce][2] or {}),};
        						table.insert(tabela_artykulow[numer_rozdzialu_w_ksiazce][3],tab_stare);
        					else
        						link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})") or nil) or nil;
   	   						end;	
   	   					else
   	   						link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})") or nil) or nil;
						end;
    					if(((not tab_pozycja_artykulu)or(not tab_pozycja_artykulu[1])or(not tab_pozycja_artykulu_inne)or(not tab_pozycja_artykulu_inne[1]))and(link_szablon)and(czy_artykul_korzystany)and(licencja_z_autorem))then
       						local wywolanie_spisu_tresci=mw.ustring.match(szablon,"^{{%s*[Ll]icencja%s*|([^{}]-)}}$");
       						if(wywolanie_spisu_tresci)then
       							local tabela_parametrow,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon);
       							if(tabela_parametrow)then
       	    						local autor=tabela_parametrow["Autor"];
	       	    					local szkoly=tabela_parametrow["Ukończone szkoły"];
    	   	    					local email=tabela_parametrow["Email"];
       		    					local dotyczy=tabela_parametrow["Dotyczy"];
       	    						local licencjonowanie=tabela_parametrow["Licencjonowanie"];
       	    						local umowa_prawna=tabela_parametrow["Umowa prawna"];
       	    						local konsekwencje=tabela_parametrow["Konsekwencje"];
       	    						local frame=mw.getCurrentFrame();
       	    						if(autor~=nil)then
       	    							autor=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(autor,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
	       	    					end;	
    	   	    					if(szkoly~=nil)then
       		    						szkoly=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(szkoly,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
       	    						end; 
       	    						if(email~=nil)then
       	    							email=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(email,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
       	    						end;
       	    						if(dotyczy~=nil)then
       	    							dotyczy=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(dotyczy,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
	       	    					end;
    	  	    					if(licencjonowanie~=nil)then
       		    						licencjonowanie=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(licencjonowanie,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
       	    						end;
       	    						if(umowa_prawna~=nil)then
       	    							umowa_prawna=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(umowa_prawna,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
       	    						end;
       	    						if(konsekwencje~=nil)then
       	    							konsekwencje=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(konsekwencje,nazwa_modulu,tablica_obiektow_strony_dany_modul);}
	       	    					end;
    	   	    					if(autor~=nil)then 
       		  							tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
		      	  						licencja_z_autorem=false; 
    		   	    				end;
    		   	    				break;
       							elseif(self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera==nil)then
       	   							self.tabela_listy_danych_analizy_ksiazki.problemy.blad_wewnetrzny_modulu_lua_stronicowego_parsera=0;
       	   						end;
       						end
       					end;
    				end;
    			end;
    		end;
    	end;
    	numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
    end
    local parsuj_rozdzialami=nil;
    for rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja in iterator do
    	AnalizaRozdzialu(rozdzial,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja);
    	if(not parsuj_rozdzialami)then  parsuj_rozdzialami=true;end
    end;
    if(not parsuj_rozdzialami)then
    	AnalizaRozdzialu("Spis treści",tekst_rozwiniety_calego_artykulu,1,nil,nil);
    end;
    if(czy_artykul_korzystany)then return tabela_artykulow, tabela_licencji_spisu_tresci;else return tabela_artykulow;end;
end;
function p.ZbierajJakieSaArtykulyIInformacjeOLicencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany)
	local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":")or(""))..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/")or(""))..nazwa_ksiazki;
	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
	local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki;
	local module_techniczne_modul=require("Module:Techniczne");
	local tekst=module_techniczne_modul["WikikodStrony"]{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
	if(not tekst)then
		local tabela_artykulow,tabela_licencji_spisu_tresci=p.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany);
		return tabela_artykulow,tabela_licencji_spisu_tresci,"",nil,nil;
	end;
	local tablica_obiektow_strony_dany_modul={};
	local szablonowe_modul=require("Module:Szablonowe");
	local tekst_zakodowany=szablonowe_modul:KodujStroneTekstuObiektowa(tekst,adres_ustawien,tablica_obiektow_strony_dany_modul,nil,nil);
	local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
	local techniczne_modul=require("Module:Techniczne");
	local iterator=szablonowe_modul:IteratorSzablonowTekstu(tekst_zakodowany,adres_ustawien,tablica_obiektow_strony_dany_modul);
	local szablon_uklad_autonawigacji;
	for szablon,obiekt,kod in iterator do
		if(obiekt=="TEMPLATE")then
			local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
			if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then 
				szablon_uklad_autonawigacji=szablon;
				break;
			end;
		end;
	end;
	if(not szablon_uklad_autonawigacji)then
		local  tabela_artykulow,tabela_licencji_spisu_tresci=p.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany);
		return tabela_artykulow,tabela_licencji_spisu_tresci,"",nil,nil;
	end;
	local tabela_parametry_szablonu_uklad_autonawigacji,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](szablon_uklad_autonawigacji);
	if(not tabela_parametry_szablonu_uklad_autonawigacji)then
		local tabela_artykulow,tabela_licencji_spisu_tresci=p.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany);
		return tabela_artykulow,tabela_licencji_spisu_tresci,"",nil,nil;
	end;
	local frame=mw.getCurrentFrame();
	for name,value in pairs(tabela_parametry_szablonu_uklad_autonawigacji)do
		tabela_parametry_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:SkladajSzablonoweWywolaniaTekstu(value,adres_ustawien,tablica_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
				if(obiekt=="VAR")then
					szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}");
					szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}");
					return szablon;
				end;
			end),};
	end;
	local nazwy_modul=require("Module:Nazwy");
	local parametry_modul=require("Module:Parametry");
	local html_modul=require("Module:Html");
	local techniczne_modul=require("Module:Techniczne");
	local bez_spisu_tresci=tabela_parametry_szablonu_uklad_autonawigacji["bez spisów treści"];
	local czy_bez_spisu_tresci=(bez_spisu_tresci) and parametry_modul.CzyTak(bez_spisu_tresci) or nil;
	
	----
	local tab_inne_spisy;local nazwa_glownego_spisu;
	local tablista_artykolow;
	local licencja;
	local numer=1;
	----
	local tabela_artykolow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
	if(not czy_bez_spisu_tresci)then
		local spis_tresci_main=tabela_parametry_szablonu_uklad_autonawigacji["spis treści"];
	
		local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
		if(spis_tresci_main)then
			spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true);
			spis_tresci_main=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](spis_tresci_main);
   			spis_tresci_main=parametry_modul["Odstępy"]{[1]=spis_tresci_main,[2]="tak",};
   			---
   			local techniczne_modul=require("Module:Techniczne");
   			local nazwy_modul=require("Module:Nazwy");
    		spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=nazwa_modulu,};
		end;
	
	
		local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main) 
	                                                  and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main) 
	                                                      or pelna_nazwa_ksiazki;
		if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then
			return 0;
		end;
		nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main) 
	                                                  and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main) 
	                                                      or "";
		tabela_artykolow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika=p.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany);
		
		if((not tabela_artykolow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykolow_ksiazek_wedlug_strony_glownej_podrecznika==0))then
			return 0;
		end;

		local IteratorSpisTresci=function()
			liczba=1;
			return function()
				local spis_tresci=tabela_parametry_szablonu_uklad_autonawigacji["spis treści "..liczba];
				liczba=liczba+1;
				return spis_tresci;
			end;
		end;
		
		local iter=IteratorSpisTresci();
		local parametry_modul=require("Module:Parametry");
		local nazwy_modul=require("Module:Nazwy");
		
		tablista_artykolow=tabela_artykolow_ksiazek_wedlug_strony_glownej_podrecznika;
		licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
		
		function Spis(tablista_artykolow,spis_tresci)
			local dodaj=nil;
			if(tablista_artykolow[1][1][2][1]==nil)then dodaj=2;else dodaj=1;end;
			for _,value in ipairs(tablista_artykolow)do
				 local numer_rozdzialu=value[1][2][1];
				if(not numer_rozdzialu)then 
					value[1][2][1]=dodaj;
			    	value[1][1]=value[1][1].." "..szablonowe_modul.OgolnyKod("SPISTREŚCINILOWY",numer);
				elseif(numer_rozdzialu>0)then 
					value[1][2][1]=value[1][2][1]+dodaj; 
				end;
			end;
			local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci)),{1,nil,nil,},["spis"]={spis_tresci or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
			numer=numer+1;
			table.insert(tablista_artykolow,1,tab_element);
			if(spis_tresci)then
				if(not tab_inne_spisy)then tab_inne_spisy={};end;
				table.insert(tab_inne_spisy,spis_tresci);
				if(not tablista_artykolow[1][2])then tablista_artykolow[1][2]={};end;
				local tab_stare={spis_tresci,{1,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/"..spis_tresci.."]]",false,};
				table.insert(tablista_artykolow[1][2],1,tab_stare);
			end;
			return tablista_artykolow;
		end;
		if((not tablista_artykolow)or(tablista_artykolow==0))then tablista_artykolow={};end;
		tablista_artykolow=Spis(tablista_artykolow);
	
		for spis_tresci in iter do
			spis_tresci=html_modul.DecodeHtml(spis_tresci,true);
			spis_tresci=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](spis_tresci);
   			spis_tresci=parametry_modul["Odstępy"]{[1]=spis_tresci,[2]="tak",};
   			---
   			local techniczne_modul=require("Module:Techniczne");
    		spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",};
			---
			local tablista_artykolow_iter=p.ZbierajJakieSaArtykulyIInformacjeOLicencjiDanegoSpisuTresci(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false);
			----
			local tablista_artykolow_iter=Spis(tablista_artykolow_iter,spis_tresci);
			for _,value in ipairs(tablista_artykolow_iter)do
				table.insert(tablista_artykolow,value);
			end;
		end;
	end;
	----
	local IteratorFun=function()
		local liczba=1;
		local STRONA=function(liczba)return liczba*2-1;end;
		local NAZWA=function(liczba)return liczba*2;end;
		return function()
			local strona=tabela_parametry_szablonu_uklad_autonawigacji[STRONA(liczba)];
			local nazwa=tabela_parametry_szablonu_uklad_autonawigacji[NAZWA(liczba)];
			liczba=liczba+1;
			return strona,nazwa;
		end;
	end;
	local tablica_stron_ksiazki={};
	local tablica_stron_inne={};
	local iter=IteratorFun();
	local nazwy_modul=require("Module:Nazwy");
	local ksiazkawe_modul=require("Module:Książkowe");
	local html_modul=require("Module:Html");
	local pudelko_modul=require("Module:Pudełko");
	local wiki_modul=require("Module:Wiki");
	local techniczne_modul=require("Module:Techniczne");
	local dodatkowe_artykuly=nil;
	for strona,nazwa in iter do
		if(not dodatkowe_artykuly)then
			if(not tablista_artykolow)then tablista_artykolow={};end;
			table.insert(tablista_artykolow,{[1]={"Dodatkowe artykuły "..szablonowe_modul.OgolnyKod("DODATKOWEARTYKUŁY",numer),{1,nil,nil}},[2]=nil,});
		end;
		strona=html_modul.DecodeHtml(strona,true);
		strona=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](strona);
   		strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
   		---
   		local techniczne_modul=require("Module:Techniczne");
   		local nazwy_modul=require("Module:Nazwy");
    	strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=nazwa_modulu,};
    	
		local nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(strona,pudelko_modul["Kod języka tego projektu"](),pudelko_modul["Kod projektu tego projektu"]());
		local parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku);
        local naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku);
        nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,}
		local biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
		if(biezaca_wiki)then
			local pelna_nazwa_ksiazki_biezacej=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]{nazwa=nazwa_strony_linku,}
			if(pelna_nazwa_ksiazki_biezacej==pelna_nazwa_ksiazki)then
				local artykul=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](nazwa_strony_linku);
				local adres=artykul..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "")
				
				local przekierowanie=pelna_nazwa_ksiazki.."/"..artykul;
			
        		local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
        		if(strona)then artykul=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);end;

            	local nazwa_artykulu_przekierowania=strona and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie) or nil;
            	----
            	if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
            	table.insert(dodatkowe_artykuly,{((nazwa_artykulu_przekierowania) and ({adres,nazwa_artykulu_przekierowania,}) or adres),false,});
            	----
				local tab_stare={((nazwa or nazwa_artykulu_przekierowania) and ({nazwa_artykulu_przekierowania or artykul,nazwa,nazwa_artykulu_przekierowania and artykul or nil,}) or adres),{1,"*","",false,},"[[:"..adres..(nazwa and ("|"..adres) or "").."]]",false,};
				if(not tablista_artykolow[#tablista_artykolow][2])then tablista_artykolow[#tablista_artykolow][2]={};end;
				table.insert(tablista_artykolow[#tablista_artykolow][2],tab_stare);
			else
				local adres=nazwa_strony_linku..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "")
				
				if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
				table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy}) or adres),true,});
				----
				local tab_stare={((adres) and (nazwa) and({adres,nazwa,nil,nil}) or adres),{1,"*","",false,},"[[:"..adres..(nazwa and ("|"..nazwa) or "").."]]",false,#tablista_artykolow[#tablista_artykolow][2],};
			
				if(not tablista_artykolow[#tablista_artykolow][3])then tablista_artykolow[#tablista_artykolow][3]={};end;
				table.insert(tablista_artykolow[#tablista_artykolow][3],tab_stare);
			end;
		else
			local adres=nazwa_strony_linku..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "");
			
			if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
			table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy}) or adres),true,});
			----
			local tab_stare={((adres) and (nazwa or kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,nazwa,kod_jezyka_koncowy,kod_projektu_koncowy}) or adres),{1,"*","",false,},"[[:"..((kod_jezyka_koncowy)and(kod_jezyka_koncowy..":") or "")..((kod_projektu_koncowy)and(kod_projektu_koncowy..":") or "")..adres..(nazwa and ("|"..nazwa) or "").."]]",false,#tablista_artykolow[#tablista_artykolow][2],};
			
			if(not tablista_artykolow[#tablista_artykolow][3])then tablista_artykolow[#tablista_artykolow][3]={};end;
			table.insert(tablista_artykolow[#tablista_artykolow][3],tab_stare);
			
		end;
	end;
	----
	return tablista_artykolow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly;
end;
return p;