Moduł:StronicowyParser

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 NazwaStronyGlownej()
   local dane2=mw.loadData("Module:StronicowyParser/data2");
   local uchwyt_strony=mw.title.getCurrentTitle();
   local tabela_listy=mw.loadData("Moduł:StronicowyParser/data").start;
   local nazwa_modolu=tabela_listy.nazwa_modolu;
   if((uchwyt_strony.nsText==dane2.main)or(uchwyt_strony.nsText==dane2.wikijunior)or(uchwyt_strony.nsText==dane2.user))then
   	   return require("Module:Parametry").PelnaNazwaKsiazki(nazwa_modolu);
   else
   	    return nil;
   end;
end;
p["NastępnyArtykuł"]=function(frame)
  local nazwa_strony_glownej=NazwaStronyGlownej();
  if(not nazwa_strony_glownej)then return "(błąd)";end;
  local tabela_listy=mw.loadData("Moduł:StronicowyParser/data").start;
  local lista_artykulow_ksiazki=tabela_listy.lista_artykulow[nazwa_strony_glownej];
  if(not lista_artykulow_ksiazki)then
  	return "(błąd)";
  end;
  local liczba_artykulow_w_ksiazce=require("Module:Parametry").LiczbaElementowNumerowanychWTablicy(lista_artykulow_ksiazki);
  if(liczba_artykulow_w_ksiazce==0)then
  	return "(błąd)";
  end;
  local tabela_listy=mw.loadData("Moduł:StronicowyParser/data").start;
  local nazwa_modolu=tabela_listy.nazwa_modolu;
  for i=1,liczba_artykulow_w_ksiazce,1 do
  	if(nazwa_strony_glownej.."/"..lista_artykulow_ksiazki[i]==nazwa_modolu)then
  		if(i<liczba_artykulow_w_ksiazce)then 
  		    return lista_artykulow_ksiazki[i+1];
  		elseif(i==liczba_artykulow_w_ksiazce)then
  			return "";
  		end;
  	end;
  end;
  return "(błąd)";
end;
p["PoprzedniArtykuł"]=function(frame)
  local nazwa_strony_glownej=NazwaStronyGlownej();
  if(not nazwa_strony_glownej)then return "(błąd)";end;
  local tabela_listy=mw.loadData("Moduł:StronicowyParser/data").start;
  local lista_artykulow_ksiazki=tabela_listy.lista_artykulow[nazwa_strony_glownej];
  if(not lista_artykulow_ksiazki)then
  	  return "(błąd)";
  end;
  local liczba_artykulow_w_ksiazce=require("Module:Parametry").LiczbaElementowNumerowanychWTablicy(lista_artykulow_ksiazki);
  if(liczba_artykulow_w_ksiazce==0)then
  	return "(błąd)";
  end;
  local tabela_listy=mw.loadData("Moduł:StronicowyParser/data").start;
  local nazwa_modolu=tabela_listy.nazwa_modolu;
  for licznik=1,liczba_artykulow_w_ksiazce,1 do
  	if(nazwa_strony_glownej.."/"..lista_artykulow_ksiazki[licznik]==nazwa_modolu)then
  		if(licznik>1)then 
  			return lista_artykulow_ksiazki[licznik-1];
  		elseif(licznik==1)then
  			return "";
  		end;
  	end;
  end;
  return "(błąd)";
end;
p["AktualnaKsiążka"]=function(frame)
  local nazwa_strony_glownej=NazwaStronyGlownej();
  if(not nazwa_strony_glownej)then
  	  return "(błąd)";
  end;
  return nazwa_strony_glownej;
end;
function p.HLiczba(frame)
	local licznik=1;
	while true do
    	local naglowek=mw.ustring.match(frame.args[1],"^\n"..mw.ustring.rep("=",licznik).."%s*([^\n]+)%s*"..mw.ustring.rep("=",licznik).."%s*\n$");
    	if(mw.ustring.match(naglowek,"^=([^\n]+)=$")~=nil)then
    		licznik=licznik+1;
    	else
    		if(licznik>6)then 
       			return 6;
    		elseif(licznik<1)then
       			return nil;
    		else
       			return licznik;
    		end;
    	end;
	end;
end;
function p.NazwaRozdzialu(frame)
	local licznik=1;
	while true do
    	local rozdzial=mw.ustring.match(frame.args[1],"^\n"..mw.ustring.rep("=",licznik).."%s*([^\n]+)%s*"..mw.ustring.rep("=",licznik).."%s*\n$");
    	if(mw.ustring.match(rozdzial,"^=([^\n]+)=$")~=nil)then
    		licznik=licznik+1;
    	else
    		return rozdzial;
    	end;
	end;
end;
function p.TOC()
    local dane=mw.loadData('Moduł:StronicowyParser/data');
    local nazwa_modolu=dane.start.nazwa_modolu;
    if(nazwa_modolu~=nil)then
       local spis_tresci_artykulu=TOC(dane.start.TOC[nazwa_modolu]);
       return spis_tresci_artykulu;
    else 
    	return nil;
    end;
end;
function p.WykazModolow()
    local dane=mw.loadData('Moduł:StronicowyParser/data');
	local nazwa_modolu=dane.start.nazwa_modolu;
	if(nazwa_modolu==nil)then return nil;end;
	local uchwyt_strony=mw.title.makeTitle('',nazwa_modolu);
	local nazwa_ksiazka;
    local dane2=mw.loadData("Module:StronicowyParser/data2");
    if(uchwyt_strony.nsText==dane2.main)then
    	nazwa_ksiazka=uchwyt_strony.rootText;
    elseif(uchwyt_strony.nsText==dane2.wikijunior)then
    	nazwa_ksiazka=((uchwyt_strony.nsText~="")and mw.ustring.gsub(uchwyt_strony.nsText,"_+"," ")..":" or "")..uchwyt_strony.rootText;
   	elseif(uchwyt_strony.nsText==dane2.user)then 
    	nazwa_ksiazka=mw.ustring.match(nazwa_modolu,"^([^/:]+:[^/]+/[^/]*).-$");
    else return nil;
    end;
	nazwa_ksiazka=mw.ustring.gsub(nazwa_ksiazka,"_"," ");
	local lista_artykulow_w_ksiazce=dane.start.lista_artykulow[nazwa_ksiazka];
	if(lista_artykulow_w_ksiazce==nil)then return nil;end;
	local wykaz_modolow_w_liscie='<ol>';
	for numer_artykulu, nazwa_artykulu in pairs(lista_artykulow_w_ksiazce) do
		sformatowana_nazwa_artykulu=mw.ustring.gsub(nazwa_artykulu,"_"," ");
		wykaz_modolow_w_liscie=wykaz_modolow_w_liscie..'<li>[['..nazwa_ksiazka.."/"..nazwa_artykulu..'|'..sformatowana_nazwa_artykulu..']]</li>';
	end;
	wykaz_modolow_w_liscie=wykaz_modolow_w_liscie.."</ol>";
	wykaz_modolow_w_liscie='<div style="width:100%;max-height:400px;overflow:auto;">'..wykaz_modolow_w_liscie.."</div>";
	wykaz_modolow_w_liscie='{{Menu|StylMenu=width:100%|Tytuł=<div style="text-align:left;font-size:1.1em;">Wykaz modułów w książce</div>|Pozycje='..wykaz_modolow_w_liscie..'|Funkcja=UkrytaRamkowaListaMenu|Klasy=toc}}';
	local frame=mw.getCurrentFrame();
    local rozwiniety_wikikod=frame:preprocess(wykaz_modolow_w_liscie);
	return rozwiniety_wikikod;
end;
function p.NazwaModolu()
	local dane=mw.loadData('Moduł:StronicowyParser/data');
	local dane2=mw.loadData('Moduł:StronicowyParser/data2');
	local nazwa_modolu=dane.start.nazwa_modolu;
	if(nazwa_modolu==nil)then 
		 return "[["..dane2.category..": Nie można wygenerować nazwy strony]]";
     else
	    local nazwa_artykulu=mw.ustring.gsub(mw.ustring.match(nazwa_modolu,"[^/]*$"),"_"," ");
	    return nazwa_artykulu;
	end;
end;
function p.Wstep_do_licencji(frame)
	  local element_licencji_1='<strong>Autor:</strong> '..frame.args[1]..'<BR>';
	  local element_licencji_2;
	    if((frame.args[2]~='')and(frame.args[2]~=nil))then 
	    	element_licencji_2=frame.args[2]..'<BR>';
	  end;
	  local element_licencji_3; 
	  if((frame.args[3]~='')and(frame.args[3]~=nil))then 
	  	 element_licencji_3='<strong>Email:</strong> '..frame.args[3]..'<BR>';
	  end;
	  local element_licencji_4;
	  if((frame.args[4]~='')and(frame.args[4]~=nil))then 
	  	  element_licencji_4='<strong>Dotyczy:</strong> '..frame.args[4].."<BR>";
	  else
	  	 element_licencji_4='<strong>Dotyczy:</strong> książki, do której należy ta strona, oraz w niej zawartych stron i w nich podstron, a także w nich kolumn, wraz z zawartościami.<BR>';
	  end;
	   if((frame.args[5]~='')and(frame.args[5]~=nil))then 
	  	  element_licencji_5=frame.args[5].."<BR>";
	  else
	  	 element_licencji_5='Użytkownika książki, do której należy ta strona, oraz w niej zawartych stron i w nich podstron, a także w nich kolumn, wraz z zawartościami nie zwalnia z odpowiedzialności prawnoautorskiej nieprzeczytanie warunków licencjonowania.<BR>';
	  end;
	  local element_licencji_6;
	  if((frame.args[6]~='')and(frame.args[6]~=nil))then 
	  	   element_licencji_6='<strong>Umowa prawna:</strong> '..frame.args[6]..'<BR>'; 
	  else 
	  	   element_licencji_6='<strong>Umowa prawna:</strong> [http://creativecommons.org/licenses/by-sa/3.0/deed.pl Creative Commons: uznanie autorstwa oraz miejsca pochodzenia książki i jej jakikolwiek części, a także treści, teksty, tabele, wykresy, rysunki, wzory i inne elementy oraz ich części zawarte w książce, i tą książkę, nawet w postaci przerobionej nie można umieszczać w jakikolwiek formie na czasopismach naukowych, archiwach prac, itp.]<BR>';
	  end;	  
	  if((frame.args[7]~='')and(frame.args[7]~=nil))then 
	  	  element_licencji_7=frame.args[7].."<BR>";
	  else
	  	 element_licencji_7='Autor tej książki dołożył wszelką staranność, aby informacje zawarte w książce były poprawne i najwyższej jakości, jednakże nie udzielana jest żadna gwarancja, czy też rękojma. Autor nie jest odpowiedzialny za wykorzystanie informacji zawarte w książce nawet jeśli wywołaby jakąś szkodę, straty w zyskach, zastoju w prowadzeniu firmy, przedsiębiorstwa lub spółki bądź utraty informacji niezależnie, czy autor (a nawet [https://pl.wikibooks.org Wikibooks]) został powiadomiony o możliwości wystąpienie szkód. Informacje zawarte w książce mogą być wykorzystane tylko na własną odpowiedzialność.<BR>';
	  end;
	  local licencja=element_licencji_1..((element_licencji_2)and element_licencji_2 or "")..((element_licencji_3)and element_licencji_3 or "")
	                     ..element_licencji_4..element_licencji_5..element_licencji_6..element_licencji_7;
	  return licencja; 
end;
function p.Licencja()
  local dane=mw.loadData('Moduł:StronicowyParser/data');
  local menu_z_licencja;
  if(dane.start.licencja)then
	if(dane.start.licencja[1])then
		local frame={};
		frame.args={dane.start.licencja[1],dane.start.licencja[2],dane.start.licencja[3],dane.start.licencja[4],dane.start.licencja[5],dane.start.licencja[6],dane.start.licencja[7]};
		local ramka_z_licencja='<div style="margin-left:0px;padding:3px;">'..p.Wstep_do_licencji(frame)..'</div>';
	    menu_z_licencja='{{Menu|StylMenu=width:100%;|Tytuł=<div style="font-size:1.1em;text-align:left;">Licencja</div>|Pozycje='..ramka_z_licencja..'|Funkcja=StatycznaRamkowaListaMenu}}';
	else
		return nil;
	end; 
	local frame=mw.getCurrentFrame();
    local rozwiniety_wikikod=frame:preprocess(menu_z_licencja);
    return rozwiniety_wikikod;
  else
    return nil;
  end;
end;
function p.PierwszaStrona(frame)
	local prawe_menu="";
	if(frame.args[1]=="NAZWA MODUŁU")then 
		prawe_menu='<div style="margin-top:5px;font-size:1.9em;line-height:25px;text-align:left;">'..p.NazwaModolu()..'</div><hr/>';
    end;
	if(frame.args[2]=="LICENCJA")then 
		 local licencja=p.Licencja();
		 if(licencja~=nil)then
		 	prawe_menu=prawe_menu..licencja;
		 else
    		local dane2=mw.loadData("Module:StronicowyParser/data2");
  	    	local uchwyt_strony=mw.title.getCurrentTitle();
  	    	local element_zdania_kategorii=(uchwyt_strony.nsText==dane2.main)and "w artykułach głównych, książek" 
  	    	            or ((uchwyt_strony.nsText==dane2.wikijunior)and "w artykułach głównych, książek dla dzieci" 
  	    	            	 or ((uchwyt_strony.nsText==dane2.user)and "na stronach głównych, książek użytkowników" or "na stronach głównych, książek"));
    		local kategoria_braku_licencji= "[["..dane2.category..": Brak licencji, "..element_zdania_kategorii.."]]";
    		prawe_menu=prawe_menu..kategoria_braku_licencji;
	   end;
	end;
	if(frame.args[3]=="WYKAZ")then 
		 local wykaz_artykulow=p.WykazModolow();
		 if(wykaz_artykulow~=nil)then
		 	prawe_menu=prawe_menu.."<hr/>"..wykaz_artykulow;
	    end;
	end;
	if(frame.args[4]=="TOC")then 
		 local spis_tresci=p.TOC();
		 if(spis_tresci~=nil)then
		 	prawe_menu=prawe_menu.."<hr/>"..spis_tresci;
	    end;
	end;
	return prawe_menu;
end;
function TOC(lista_elementow_spisu_tresci)
        if(lista_elementow_spisu_tresci==nil)then return nil;end;
        local twor_listy="";
        local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
        for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
        	if(licznik==1)then
                   twor_listy='<ol><li>'.."[["..element_w_tablicy[1][1].."|"..element_w_tablicy[1][2].."]]";
                else
                  if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
                       twor_listy=twor_listy..'</li><li>'.."[["..element_w_tablicy[1][1].."|"..element_w_tablicy[1][2].."]]";
                  elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
                      twor_listy=twor_listy..'<ol><li>'.."[["..element_w_tablicy[1][1].."|"..element_w_tablicy[1][2].."]]";
                      liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
                  elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
                       twor_listy=twor_listy..mw.ustring.rep('</li></ol>',liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2])..'</li><li>'
                                             .."[["..element_w_tablicy[1][1].."|"..element_w_tablicy[1][2].."]]";
                       liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
                  end;
               end;	
        end;
        twor_listy=twor_listy..mw.ustring.rep('</li></ol>',liczba_ulozenia_w_menu_spisu_tresci);
        twor_listy='<div style="width:100%;max-height:700px;overflow:auto;padding-right:5px;">'..twor_listy.."</div>";
        local wikikod_menu='{{Menu|StylMenu=width:100%|Tytuł=<div style="text-align:left;font-size:1.1em;">Spis Treści</div>|Pozycje='..twor_listy..'|Funkcja=UkrytaRamkowaListaMenu|Klasy=toc}}';
	    local frame=mw.getCurrentFrame();
        local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
	    return rozwiniety_wikikod;
end;
function p.SpisTresci(frame)
    local args = frame.args;
    local brak=mw.ustring.match(args[1],"[|<>{}%[%]]");
    local uchwyt_strony=mw.title.getCurrentTitle();
    if(brak~=nil)then
    	local dane2=mw.loadData("Module:StronicowyParser/data2");
  	    local element_zdania_kategorii=(uchwyt_strony.nsText==dane2.main)and "artykułów," or ((uchwyt_strony.nsText==dane2.wikijunior)and "artykułów dla dzieci," 
  	    	        or ((uchwyt_strony.nsText==dane2.user)and "stron użytkowników," or "stron,"));
    	return "[["..dane2.category..":Nazwy "..element_zdania_kategorii.." w spisach treści, zawierają niedozwolone znaki]]";
    end;
    local parametry_modul=require("Module:Parametry");
    local nazwa_ksiazki=parametry_modul.PelnaNazwaKsiazki(uchwyt_strony.fullText,"tak");
    nazwa_ksiazki=parametry_modul.Transformacja(nazwa_ksiazki);
    local nazwa_artykulu=parametry_modul.Transformacja(args[1]);
    local uchwyt_strony2 = mw.title.makeTitle('', nazwa_ksiazki.."/"..nazwa_artykulu);
    local nazwa_strony_artykulu=mw.ustring.gsub(mw.ustring.match(nazwa_artykulu,"[^/]*$"),"_"," ");
    if((uchwyt_strony2==nil)or(not uchwyt_strony2.exists))then
    	if(nazwa_artykulu~="")then
	    	return mw.ustring.rep("=",6).."<span style=\"color:red\">[["..nazwa_ksiazki.."/"..nazwa_artykulu.."|"..nazwa_strony_artykulu.."]]</span>"..mw.ustring.rep("=",6);
	    else
	         return frame:getParent():preprocess("{{Błąd|Wywołano szablon z argumentem pierwszym pustym.}}");
	    end;
    else
       local tekst_artykulu = uchwyt_strony2:getContent();
       local ulozenia_w_menu_spisu_tresci=SpisTresciWstep(tekst_artykulu, nazwa_artykulu);	
       local twor_spisu_tresci="";
	   twor_spisu_tresci=mw.ustring.rep("=",6).."[["..nazwa_ksiazki.."/"..nazwa_artykulu.."|"..nazwa_strony_artykulu.."]]"..mw.ustring.rep("=",6);
	   if(ulozenia_w_menu_spisu_tresci~=nil)then
         for licznik=1, #ulozenia_w_menu_spisu_tresci do
 	        twor_spisu_tresci=twor_spisu_tresci.."\n"..mw.ustring.rep("#",ulozenia_w_menu_spisu_tresci[licznik][2])
 	              .."[["..nazwa_ksiazki.."/"..ulozenia_w_menu_spisu_tresci[licznik][1][1].."|"..ulozenia_w_menu_spisu_tresci[licznik][1][2].."]]";
         end;
       end;
       return twor_spisu_tresci;
    end;
end;
function  SpisTresciWstep(tekst_artykulu,nazwa_strony)
    nazwa_strony=mw.ustring.gsub(nazwa_strony,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
    local tablica_spisu_tresci=nil;
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[mM][aA][tT][hH]>.-</[mM][aA][tT][hH]>","");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[nN][oO][wW][iI][kK][iI]>.-</[nN][oO][wW][iI][kK][iI]>",""); 	
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(\n=+[^\n]+=+%s-\n)","\n%1\n");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"^(=+[^\n]+=+%s-\n)","\n%1\n");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(\n=+[^\n]+=+%s-)$","\n%1\n");
    local ulozenie=nil;
    local ostatnie=nil;
    local uzyskany_w_wyniku_parsowania;    
    local tablica_powtarzajacych_sie_elementow={};
    local iterator=mw.ustring.gmatch(tekst_artykulu, "\n=+%s*[^\n]+%s*=+%s-\n");
    local elementy_linku=nil;
    for uzyskany_w_wyniku_parsowania in iterator do
           local liczba_rowna_sie=1;
           local naglowek="";
           while true do
                   local przetwarzany_naglowek=mw.ustring.match(uzyskany_w_wyniku_parsowania,"^\n"..mw.ustring.rep("=",liczba_rowna_sie).."%s*([^\n]+)%s*"..mw.ustring.rep("=",liczba_rowna_sie).."%s*\n$");
                   if(mw.ustring.match(przetwarzany_naglowek,"^=([^\n]+)=$")~=nil)then
                     liczba_rowna_sie=liczba_rowna_sie+1;
                   else
                   	 naglowek=przetwarzany_naglowek;
                   	 break;
                   end;
          end;
             local nazwa_linku_naglowka=mw.ustring.match(naglowek,"%[%[[^{}|]+|([^{}|]+)%]%]");
             local wewnetrzny_tekst_wewnatrz_nawiasow_linku=mw.ustring.match(naglowek,"%[%[([^{}|]+|[^{}|]+)%]%]");
             if((nazwa_linku_naglowka~=nil)and(wewnetrzny_tekst_wewnatrz_nawiasow_linku~=nil))then 
             	   nazwa_linku_naglowka=mw.ustring.gsub(nazwa_linku_naglowka,"^:","");
             	   naglowek=mw.ustring.gsub(naglowek,"%[%["..na21.."%]%]",nazwa_linku_naglowka);
              end;
             local nazwa_linku_naglowka=mw.ustring.match(naglowek,"%[%[([^{}|]+)%]%]");
             if(nazwa_linku_naglowka~=nil)then 
             	  local nazwa_linku_naglowka2=mw.ustring.gsub(nazwa_linku_naglowka,"^:","");
             	  naglowek=mw.ustring.gsub(naglowek,"%[%["..nazwa_linku_naglowka.."%]%]",nazwa_linku_naglowka2);
             end;
             local nazwa_rozdzialu_w_artykule=mw.ustring.gsub(naglowek,"<.->","");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"_"," ");
             nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
             local numer_tego_samego_naglowka=1;
             local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
             for licznik=1,#tablica_powtarzajacych_sie_elementow do
             	  if(tablica_powtarzajacych_sie_elementow[licznik][2]==1)then
             	  	if(numer_tego_samego_naglowka==1)then
                       if(tablica_powtarzajacych_sie_elementow[licznik][1]==nazwa_rozdzialu_w_artykule_p)then numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;end;
                    else
                       if(tablica_powtarzajacych_sie_elementow[licznik][1]==nazwa_rozdzialu_w_artykule_p.." "..tostring(numer_tego_samego_naglowka))then 
                       	    numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
                       	end;
                    end;
                  else
                   if(numer_tego_samego_naglowka==1)then
                  	 if(tablica_powtarzajacych_sie_elementow[licznik][1].." "..tostring(tablica_powtarzajacych_sie_elementow[licznik][2])==nazwa_rozdzialu_w_artykule_p)then 
                  	 	    numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
                  	  end;
                    else
                  	 if(tablica_powtarzajacych_sie_elementow[licznik][1].." "..tostring(tablica_powtarzajacych_sie_elementow[licznik][2])
                  	 	    ==nazwa_rozdzialu_w_artykule_p.." "..tostring(numer_tego_samego_naglowka))then 
                  	 	 numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
                  	   end;
                   end;
                 end;
             end;
             for licznik=1, #tablica_powtarzajacych_sie_elementow do
                 if(numer_tego_samego_naglowka>1)then
                 	if(tablica_powtarzajacych_sie_elementow[licznik][2]==1)then
                  	    if(tablica_powtarzajacych_sie_elementow[licznik][1]==nazwa_rozdzialu_w_artykule_p.." "..tostring(numer_tego_samego_naglowka))then 
                  	    	numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
                  	    end;
                  	else
                  		if(tablica_powtarzajacych_sie_elementow[licznik][1].." "..tostring(tablica_powtarzajacych_sie_elementow[licznik][2])
                  			      ==nazwa_rozdzialu_w_artykule_p.." "..tostring(numer_tego_samego_naglowka))then 
                  			numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
                  		end;
                  	end;
                 end;
             end;
             if(numer_tego_samego_naglowka==1)then
                 elementy_linku={nazwa_strony.."#"..nazwa_rozdzialu_w_artykule,naglowek};
             else
                 elementy_linku={nazwa_strony.."#"..nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
             end;
             if((ulozenie==nil)or(ulozenie>=liczba_rowna_sie))then 
                  ulozenie=liczba_rowna_sie-1;
             elseif(ostatnie+1<liczba_rowna_sie-ulozenie)then
                  ulozenie=liczba_rowna_sie-ostatnie-1;
             end;
             ostatnie=liczba_rowna_sie-ulozenie;
             tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]={mw.ustring.lower(nazwa_rozdzialu_w_artykule),numer_tego_samego_naglowka};  
             if(tablica_spisu_tresci==nil)then tablica_spisu_tresci={};end;
             tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,liczba_rowna_sie-ulozenie};
     end;
     return tablica_spisu_tresci;
end;
function p.Zaczynaj()
    local uchwyt_strony=mw.title.getCurrentTitle();
    local nazwa_modulu_ze_spacjami=mw.ustring.gsub(uchwyt_strony.fullText,"_"," ");
    local tabela_listy={};
    tabela_listy.start={};
    local data2=mw.loadData("Module:StronicowyParser/data2");
    tabela_listy.ZbienneBledowKorzystane={};
    tabela_listy.ZbienneBledowDoloczone={};
    tabela_listy.brak_uchwytu={};
    tabela_listy.puste_parametry={};
    for _,elementy_w_tablicy_obiekty in pairs(data2.tablica_obiektow)do
    	wartosc,_=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"%d+$","");
    	tabela_listy.ZbienneBledowKorzystane[wartosc]=nil;
    	tabela_listy.ZbienneBledowKorzystane["Link"..wartosc]=nil;
    	tabela_listy.ZbienneBledowDoloczone[wartosc]=nil;
    	tabela_listy.ZbienneBledowDoloczone["Link"..wartosc]=nil;
    	
    	tabela_listy.puste_parametry[wartosc]={};
    	tabela_listy.puste_parametry[wartosc][1]=nil;
    	tabela_listy.puste_parametry[wartosc][2]=nil;
    	tabela_listy.brak_uchwytu[wartosc]=nil;
    end;
    tabela_listy.TOC={};
    tabela_listy.formatowanie=nil
    tabela_listy.lista_artykulow={};
    tabela_listy.strona_nie_istnieje=nil;
    tabela_listy.brak_spisu_tresci_do_korzystanych_modolow=nil;
    tabela_listy.brak_spisu_tresci_do_doloczanych_modolow=nil;
    tabela_listy.nieprawidlowe_nazwy_korzystanej_strony=nil;
    tabela_listy.nieprawidlowe_nazwy_strony_doloczanej_do_strony=nil;
    tabela_listy.blad_wewnetrzny=nil;
    tabela_listy.niedozwolone_znaki_spisie_tresci=nil;
    tabela_listy.doloczone_brak_spis=nil;
    tabela_listy.korzystane_brak_spis=nil;
    tabela_listy.kodkategorie=nil;
    tabela_listy.licencja={};
    local tabela_listy0=ZbieranieInformacji(tabela_listy,nazwa_modulu_ze_spacjami, true);
    if(tabela_listy0)then
       PrzetworzZebraneInformacje(tabela_listy);
    end;
    return tabela_listy;
end;
function ZbierajJakieSaArtykulyIInformacjeOLicencji(tabela_listy,nazwa_strony,czy_artykul_korzystany)
   local uchwyt_strony = mw.title.makeTitle('', nazwa_strony);
   if((uchwyt_strony==nil)or(not uchwyt_strony.exists))then 
      return nil;
   end;
   local tekst_strony = uchwyt_strony:getContent();
   local iterator=mw.ustring.gmatch(tekst_strony,"{{[^{}]-}}");
   local wyzyskane_wywolanie_szablonu_spis_tresci="";
   local tabelalisty2=nil;
   local licencja_z_autorem=true;
   local tabela_artykulow=nil;
   local tabela_spisu_tresci=nil;
   for wyzyskane_wywolanie_szablonu_spis_tresci in iterator do
   	   local pozycja_artykylu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ss]pisTreści|%s*([^{}]-)%s*}}$");
   	   if(pozycja_artykylu~=nil)then
   	   	 local parametry_modul=require("Module:Parametry");
   	   	 pozycja_artykylu=parametry_modul["OdstępyFun"](pozycja_artykylu,"tak")
   	   	 pozycja_artykylu=mw.getContentLanguage():ucfirst(pozycja_artykylu);
   	   	 pozycja_artykylu=require("Module:Parametry").TransformacjaKoduZnakuDoZnakuWLancuchu(pozycja_artykylu);
   	   	 local znaki_niedozwolone=mw.ustring.match(pozycja_artykylu,"[|<>{}%[%]]");
   	   	 if(not znaki_niedozwolone)then
        	if(not tabela_artykulow)then tabela_artykulow={};end;
        	tabela_artykulow[#tabela_artykulow+1]=pozycja_artykylu;
        else
        	if(not tabela_listy.niedozwolone_znaki_spisie_tresci)then
        		tabela_listy.niedozwolone_znaki_spisie_tresci=0;
        	end;
        end;
       elseif((czy_artykul_korzystany)and(licencja_z_autorem))then
       	 local wywolanie_spisu_tresci=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^{{[Ll]icencja|([^{}]-)}}$");
       	 if(wywolanie_spisu_tresci)then
       	   wyzyskane_wywolanie_szablonu_spis_tresci=mw.ustring.gsub(wyzyskane_wywolanie_szablonu_spis_tresci,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
       	   local tabela_parametrow=require("Module:Parametry").ParsujWywolanieSzablonu(wyzyskane_wywolanie_szablonu_spis_tresci);
       	   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 wyrazenie_regularne="%[%[([^%[%]|]-)&#"..tostring(mw.ustring.byte("|"))..";([^%[%]|]-)%]%]";
       	    if(autor~=nil)then
       	    	 autor=mw.ustring.gsub(autor,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(szkoly~=nil)then
       	    	  szkoly=mw.ustring.gsub(szkoly,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end; 
       	    if(email~=nil)then
       	    	  email=mw.ustring.gsub(email,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(dotyczy~=nil)then
       	    	  dotyczy=mw.ustring.gsub(dotyczy,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(licencjonowanie~=nil)then
       	    	  licencjonowanie=mw.ustring.gsub(licencjonowanie,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(umowa_prawna~=nil)then
       	    	  umowa_prawna=mw.ustring.gsub(umowa_prawna,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(konsekwencje~=nil)then
       	    	  konsekwencje=mw.ustring.gsub(konsekwencje,wyrazenie_regularne,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(autor~=nil)then 
       	  	   tabela_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
       	  	   licencja_z_autorem=false; 
       	    end;
       	   elseif(tabela_listy.blad_wewnetrzny==nil)then
       	   	tabela_listy.blad_wewnetrzny=0;
       	   end
       	  end;
       end;
    end;
    if(czy_artykul_korzystany)then tabelalisty2={tabela_artykulow, tabela_spisu_tresci};else tabelalisty2=tabela_artykulow;end;
    return tabelalisty2;
end;
function ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy2, tabela_listy, nazwa_modolu, nazwa_obiektu, czy_artykul_korzystany)
    local odstepy=mw.ustring.match(kod_uchwytu,"^%s*$");
    if(not odstepy)then
       local lista_dwuelementowa={};
       lista_dwuelementowa[1]=kod_uchwytu;
       if(#tabela_listy2[nazwa_obiektu]==0)then SprawdzCzyJestDostepnySpisTresci(tabela_listy, nazwa_modolu, kod_uchwytu);end;
       tabela_listy2[ nazwa_obiektu][#tabela_listy2[ nazwa_obiektu]+1]=lista_dwuelementowa;
       if(nazwa_modolu==tabela_listy.nazwa_modolu)then
          if(not tabela_listy.kodkategorie)then tabela_listy.kodkategorie= nazwa_obiektu..":"..kod_uchwytu;end;
       end;
 end;
end;
function ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy2, tabela_listy, nazwa_modolu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji)
	local kod_uchwytu=nil;
	if(tabela_parametrow_szablonu["numeracja"]~=nil)then 
		kod_uchwytu=tabela_parametrow_szablonu["numeracja"];
    elseif(tabela_parametrow_szablonu[numer_numeracji]~=nil)then
		kod_uchwytu=tabela_parametrow_szablonu[numer_numeracji];
end;
	if(kod_uchwytu)then ObslugaSzczegolnaElementu(kod_uchwytu,tabela_listy2, tabela_listy, nazwa_modolu, nazwa_obiektu, czy_artykul_korzystany);end;
end;
function SprawdzCzyJestDostepnySpisTresci(tabela_listy, nazwa_modolu, kodr)
	local uchwyt_strony=mw.title.makeTitle('',nazwa_modolu);
	local nazwa_strony;
	if(uchwyt_strony)then
    	local dane2=mw.loadData("Module:StronicowyParser/data2");
    	if((uchwyt_strony.nsText==dane2.main)or(uchwyt_strony.nsText==dane2.wikijunior)or(uchwyt_strony.nsText==dane2.user))then
		     nazwa_strony_glownej_ksiazki=require("Module:Parametry").PelnaNazwaKsiazki(nazwa_modolu);
		     if(nazwa_strony_glownej_ksiazki==nazwa_modolu)then return;end;
    	else
    		return;
    	end;
    	if(not uchwyt_strony.exists)then 
    		return;
    	end;
    else
    	return;
    end;	
	if(nazwa_strony_glownej_ksiazki)then
  		local czy_element_wystepuje_w_tablicy=false;
  		local czy_lista_niepusta=false;
		if(tabela_listy.lista_artykulow)then
    		if(tabela_listy.lista_artykulow[nazwa_strony_glownej_ksiazki])then
  				czy_lista_niepusta=true;
  				for i, nazwa_artykulu in ipairs(tabela_listy.lista_artykulow[nazwa_strony_glownej_ksiazki]) do
  					if(nazwa_strony_glownej_ksiazki.."/"..nazwa_artykulu==nazwa_modolu)then
  	                	czy_element_wystepuje_w_tablicy=true;
  	                	break;
  	            	end;
  	    		end;
  	    	end;
		end;
	  	local lista;
  		if(czy_lista_niepusta)then lista=#tabela_listy.lista_artykulow[nazwa_strony_glownej_ksiazki];else lista=0;end;
    	if((lista==0)or((lista~=0)and(czy_element_wystepuje_w_tablicy==false)))then 
        	if((tabela_listy.nazwa_modolu~=nazwa_modolu))then
        		 local uchwyt_strony2=mw.title.makeTitle('',nazwa_strony_glownej_ksiazki);
            	 if(not tabela_listy.brak_spisu_tresci_do_doloczanych_modolow)then tabela_listy.brak_spisu_tresci_do_doloczanych_modolow={};end;
				 local czy_dodac_nazwe_przestrzeni_nazw_do_zbioru=true;
	             for _,nazwa_przestrzeni_nazw in pairs(tabela_listy.brak_spisu_tresci_do_doloczanych_modolow)do
    			    if(nazwa_przestrzeni_nazw==title.nsText)then czy_dodac_nazwe_przestrzeni_nazw_do_zbioru=false;end;
			     end;
				 if(czy_dodac_nazwe_przestrzeni_nazw_do_zbioru)then table.insert(tabela_listy.brak_spisu_tresci_do_doloczanych_modolow,uchwyt_strony2.nsText);end;
        	elseif((tabela_listy.nazwa_modolu==nazwa_modolu)and(tabela_listy.brak_spisu_tresci_do_korzystanych_modolow==nil))then
            	tabela_listy.brak_spisu_tresci_do_korzystanych_modolow=0;
        	end;
    	end;
   end;
end;
function PusteParametryLinkow(tabela_listy,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
  local czy_plik_z_tylko_odstepami_lub_pusty=mw.ustring.match(nazwa_artykulu,"^%s*$");
  local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=mw.ustring.match(uchwyt_obiektu,"^%s*$");
  if((czy_plik_z_tylko_odstepami_lub_pusty)or( czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty))then
	if(tabela_listy.puste_parametry[nazwa_obiektu][1]==nil)then
	 	if(czy_plik_z_tylko_odstepami_lub_pusty)then tabela_listy.puste_parametry[nazwa_obiektu][1]=0;end;
	end;
	if(tabela_listy.puste_parametry[nazwa_obiektu][2]==nil)then
	 	if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then tabela_listy.puste_parametry[nazwa_obiektu][2]=0;end;
	end;
	if(not tabela_listy.kodkategorie)then 
		tabela_listy.kodkategorie=nazwa_obiektu..":"..((czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)and czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty or "");
    end;
	return;
  end;
end;
function LinkowanieNastepne(tabela_listy, nazwa_obiektu, nazwa_strony, uchwyt_obiektu)
	PusteParametryLinkow(tabela_listy,nazwa_strony, uchwyt_obiektu, nazwa_obiektu);
	local brak_niedozwolonych_znakow=mw.ustring.match(nazwa_strony,"[|<>{}%[%]]");
	if(not brak_niedozwolonych_znakow)then
		if((not tabela_listy.puste_parametry[nazwa_obiektu][1])and(not tabela_listy.puste_parametry[nazwa_obiektu][2]))then
    		local tabela_listy0=ZbieranieInformacji(tabela_listy,nazwa_strony, false);
    		if(tabela_listy0)then 
        		SprawdzCzyJestDostepnySpisTresci(tabela_listy,nazwa_strony, uchwyt_obiektu);
        			   if(tabela_listy0==0)then return;end;
        				local czy_link_da_sie_ponumerowac=false;
        				if(tabela_listy.start[nazwa_strony]~=nil)then                            
            				if(tabela_listy.start[nazwa_strony][nazwa_obiektu]~=nil)then                                 
            					for _, parametry_obiektu in pairs(tabela_listy.start[nazwa_strony][nazwa_obiektu]) do
                					if(parametry_obiektu[1]==uchwyt_obiektu)then
                    					czy_link_da_sie_ponumerowac=true;
                					end;                                      
            					 end;
        					 end
        				 end;
        				 if(czy_link_da_sie_ponumerowac==false)then
            				if(tabela_listy.ZbienneBledowKorzystane["Link"..nazwa_obiektu]==nil)then
            					tabela_listy.ZbienneBledowKorzystane["Link"..nazwa_obiektu]=0;
        					end;
        				 end;
    		else
    			if(not tabela_listy.blad_wewnetrzny)then
    				tabela_listy.blad_wewnetrzny=0;
    			end;
    		end;	
    	end;
    else
        if((tabela_listy.nieprawidlowe_nazwy_korzystanej_strony==nil)and(tabela_listy.nazwa_modolu==nazwa_modolu))then 
  		      tabela_listy.nieprawidlowe_nazwy_korzystanej_strony=0;
  	    elseif((tabela_listy.nieprawidlowe_nazwy_strony_doloczanej_do_strony==nil)and(tabela_listy.nazwa_modolu~=nazwa_modolu))then
  		           tabela_listy.nieprawidlowe_nazwy_strony_doloczanej_do_strony=0;
        end;
    end;
end;
function LinkowanieOgolnie(tabela_parametrow_szablonu,tabela_listy, nazwa_obiektu, linkobiekt)
   local nazwa_strony=tabela_parametrow_szablonu["artykuł"] and tabela_parametrow_szablonu["artykuł"] or tabela_parametrow_szablonu[2];
   local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] and tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
   local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] and tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
   local parametry_modul=require("Module:Parametry");
   if(nazwa_strony)then nazwa_strony=parametry_modul.TransformacjaKoduZnakuDoZnakuWLancuchu(nazwa_strony);end;
   if(nazwa_ksiazki)then nazwa_ksiazki=parametry_modul.TransformacjaKoduZnakuDoZnakuWLancuchu(nazwa_ksiazki);end;
   if(uchwyt_obiektu)then
    if(nazwa_strony)then
    	if(nazwa_strony~="")then
        	if((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
        		nazwa_strony=nazwa_ksiazki.."/"..nazwa_strony;
        	else
        		local nazwa_ksiazki2=require("Module:Parametry").PelnaNazwaKsiazki();
        		nazwa_strony=nazwa_ksiazki2.."/"..nazwa_strony;
        	end;
        elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
        	nazwa_strony=nazwa_ksiazki;
        else
        	PusteParametryLinkow(tabela_listy,nazwa_strony, uchwyt_obiektu, nazwa_obiektu);
        	return;
        end;
        nazwa_strony=mw.ustring.gsub(nazwa_strony,"_"," ");
        if(nazwa_strony~=tabela_listy.nazwa_modolu)then
           LinkowanieNastepne(tabela_listy, nazwa_obiektu, nazwa_strony, uchwyt_obiektu);
           if(not tabela_listy.kodkategorie)then tabela_listy.kodkategorie=nazwa_obiektu..":"..uchwyt_obiektu;end;
        else
           LinkowanieDalszePrace(uchwyt_obiektu, tabela_listy, tabela_listy.nazwa_modolu, nazwa_obiektu, linkobiekt);
           if(not tabela_listy.kodkategorie)then tabela_listy.kodkategorie=nazwa_obiektu..":"..uchwyt_obiektu;end;
        end;
    else
    	LinkowanieDalszePrace(uchwyt_obiektu, tabela_listy, tabela_listy.nazwa_modolu, nazwa_obiektu, linkobiekt) 
    	if(not tabela_listy.kodkategorie)then tabela_listy.kodkategorie=nazwa_obiektu..":"..uchwyt_obiektu;end;
    end;
   elseif(not tabela_listy.brak_uchwytu[nazwa_obiektu])then
   	  tabela_listy.brak_uchwytu[nazwa_obiektu]=0;
   	  if(not tabela_listy.kodkategorie)then tabela_listy.kodkategorie=nazwa_obiektu..":";end;
   end;
end;
function LinkowanieDalszePrace(uchwyt_obiektu,tabela_listy, nazwa_strony, nazwa_obiektu, linkobiekt)
	if(#linkobiekt==0)then SprawdzCzyJestDostepnySpisTresci(tabela_listy,nazwa_strony, uchwyt_obiektu);end;
    linkobiekt[#linkobiekt+1]=uchwyt_obiektu;
    PusteParametryLinkow(tabela_listy,nazwa_strony, uchwyt_obiektu, nazwa_obiektu); 
end;
function LadujZawartoscStrony(nazwa_strony,tabela_listy)
   local czy_nazwa_strony_z_tylko_odstepami_lub_pusta=mw.ustring.match(nazwa_strony,"^%s*$");
   local page;
   if(not czy_nazwa_strony_z_tylko_odstepami_lub_pusta)then
   	  local nazwa_strony2=require("Module:Parametry").Transformacja(nazwa_strony);
      uchwyt_strony = mw.title.makeTitle('', nazwa_strony2);
      if((uchwyt_strony==nil)or(not uchwyt_strony.exists))then 
         if(tabela_listy.strona_nie_istnieje==nil)then
         	tabela_listy.strona_nie_istnieje=0
         end;
         return nil;
      end;
    else
      return nil;
    end;
    local tekst_artykulu = uchwyt_strony:getContent();
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->.-<%s-/%s-[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]%s->","");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
    tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)",""); 	
    while mw.ustring.match(tekst_artykulu,"{{[^|{}]-|[^{}]-{{[^{}]-}}.-}}") do
        tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"({{[^{}|]-|[^{}]-)({{[^{}]-}})(.-}})","%2%1%3");
    end;
    return tekst_artykulu;
end;
function WDoloczonychKsiazkachBrakSpisuTresci(tabela_listy,nazwa_strony_glownej)
  if(not tabela_listy.doloczone_brak_spis)then tabela_listy.doloczone_brak_spis={};end;
  local uchwyt_strony=mw.title.makeTitle('',nazwa_strony_glownej);
  local czy_przestrzeni_nazw_nie_ma_doloczonych_do_zbioru=true;
  for _,nazwa_przestrzeni_nazw in pairs(tabela_listy.doloczone_brak_spis)do
      if(nazwa_przestrzeni_nazw==uchwyt_strony.nsText)then czy_przestrzeni_nazw_nie_ma_doloczonych_do_zbioru=false;end;
  end;
  if(czy_przestrzeni_nazw_nie_ma_doloczonych_do_zbioru)then table.insert(tabela_listy.doloczone_brak_spis,uchwyt_strony.nsText);end;
end;
function ZbieranieInformacji(tabela_listy, nazwa_modolu, czy_artukul_korzystany)
   nazwa_modolu=mw.ustring.gsub(nazwa_modolu,"_"," ");
   local dane2=mw.loadData("Module:StronicowyParser/data2");
   local uchwyt_strony = mw.title.makeTitle('', nazwa_modolu);
   if((uchwyt_strony.nsText~=dane2.main)and(uchwyt_strony.nsText~=dane2.wikijunior)and(uchwyt_strony.nsText~=dane2.user))then
  		return;
   end;
   local nazwa_strony_glownej=require("Module:Parametry").PelnaNazwaKsiazki(nazwa_modolu);
   if(not czy_artukul_korzystany)then
   	 if(tabela_listy.nazwa_modolu)then
   	   if(tabela_listy.nazwa_modolu==nazwa_modolu)then
   	        return tabela_listy; 
   	  end;
   	else
   		return nil;
   	end;
   end;
   if(tabela_listy~=nil)then
      if(tabela_listy.start~=nil)then
         for nazwa_artykulu, _ in pairs(tabela_listy.start) do
              if(nazwa_artykulu==nazwa_modolu)then return tabela_listy;end;
         end;
      else 
        return nil; 
       end;
    else 
       return nil; 
   end;
    if(czy_artukul_korzystany)then 
   	  if(not tabela_listy.nazwa_modolu)then
   	    tabela_listy.nazwa_modolu=nazwa_modolu;
   	  end;
   end;
    local tekst_artykulu=LadujZawartoscStrony(nazwa_modolu,tabela_listy);
    if(not tekst_artykulu)then return 0;end;
    if(czy_artukul_korzystany)then tabela_listy.TOC[tabela_listy.nazwa_modolu]=SpisTresciWstep(tekst_artykulu,"");end;
    local iterator=mw.ustring.gmatch(tekst_artykulu,"{{[^{}]-}}");
    local tabela_listy2={};
    local linkobiekt={};
    for _,element_w_tablicy_obiekt in pairs(dane2.tablica_obiektow)do
    	local wartosc=mw.ustring.gsub(element_w_tablicy_obiekt[1],"%d+$","");
    	tabela_listy2[wartosc]={};
    	linkobiekt[wartosc]={};
    end;
    nazwa_strony_glownej=mw.ustring.gsub(nazwa_strony_glownej,"_"," ");
    if(nazwa_strony_glownej)then
    local czy_ksiazka_istnieje_w_tablicy=false;
    if(#tabela_listy.lista_artykulow==0)then 
     	local tabela_wstepnych_informacji=ZbierajJakieSaArtykulyIInformacjeOLicencji(tabela_listy,nazwa_strony_glownej, czy_artukul_korzystany);
     	if(tabela_wstepnych_informacji)then 
     		if(czy_artukul_korzystany)then
     	 		tabela_listy.lista_artykulow[nazwa_strony_glownej]=tabela_wstepnych_informacji[1];
     	 		tabela_listy.licencja=tabela_wstepnych_informacji[2];
     	 		if(not tabela_wstepnych_informacji[1])then
     	 		   if(not tabela_listy.korzystane_brak_spis)then 
     	 		   	  tabela_listy.korzystane_brak_spis=0;
     	 		   end;
     	 		end;
      		else 
      	 		if(tabela_listy.lista_artykulow[nazwa_strony_glownej]==nil)then
    	 	    	tabela_listy.lista_artykulow[nazwa_strony_glownej]=tabela_wstepnych_informacji;
    	 	    	if(not tabela_wstepnych_informacji)then
                         WDoloczonychKsiazkachBrakSpisuTresci(tabela_listy,nazwa_strony_glownej);
    	 	    	end;
    	 		end;
    		end;
    	else
    		if(czy_artukul_korzystany)then
    			if(not tabela_listy.korzystane_brak_spis)then 
     	 		   	  tabela_listy.korzystane_brak_spis=0;
    			end;
    		 else
                WDoloczonychKsiazkachBrakSpisuTresci(tabela_listy,nazwa_strony_glownej);
    		 end;
    	end;
       else
          czy_ksiazka_istnieje_w_tablicy=false;
          for nazwa_strony_glownej_i,value in pairs(tabela_listy.lista_artykulow) do
               if(nazwa_strony_glownej_i==nazwa_strony_glownej)then
                    czy_ksiazka_istnieje_w_tablicy=true;
                    break;
               end;
          end;
          if(not czy_ksiazka_istnieje_w_tablicy)then
    	    local tab=ZbierajJakieSaArtykulyIInformacjeOLicencji(tabela_listy,nazwa_strony_glownej, czy_artukul_korzystany);
    	    if(tabela_wstepnych_informacji)then
    	      if(czy_artukul_korzystany)then 
    	 	      tabela_listy.lista_artykulow[nazwa_strony_glownej]=tabela_wstepnych_informacji[1];
    	 	      tabela_listy.licencja=tabela_wstepnych_informacji[2];
    	 	      if(not tabela_wstepnych_informacji[1])then
    	 	    	if(not tabela_listy.korzystane_brak_spis)then 
     	 		   	  tabela_listy.korzystane_brak_spis=0;
    	 	        end;
    	 	      end;
    	      else 
    	 	      tabela_listy.lista_artykulow[nazwa_strony_glownej]=tabela_wstepnych_informacji;
    	 	      if(not tabela_wstepnych_informacji)then
                      WDoloczonychKsiazkachBrakSpisuTresci(tabela_listy,nazwa_strony_glownej);
    	 	      end;
    	      end;
    	    else
    	    	if(czy_artukul_korzystany)then
    				if(not tabela_listy.korzystane_brak_spis)then 
     	 		   	    tabela_listy.korzystane_brak_spis=0;
    			    end;
    			else
                   WDoloczonychKsiazkachBrakSpisuTresci(tabela_listy,nazwa_strony_glownej);
    			end;
    	    end;
          end;
       end;
    end;
    local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
    for uzyskano_w_wyniku_parsowania_wywolanie_szablonu in iterator do
    uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");	
    local tabela_parametrow_szablonu=require("Module:Parametry").ParsujWywolanieSzablonu(uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
    if((tabela_listy.formatowanie==nil)and(czy_artukul_korzystany))then
      if(tabela_parametrow_szablonu)then
    	if(mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ss]tronaStart$")~=nil)then
           tabela_listy.formatowanie=tabela_parametrow_szablonu["formatowanie"];
    	elseif((mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ss]komplikowanaStronaStart$")~=nil)
    		or(mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ss]tronaStart2$")~=nil)
    		or(mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ss]tandardowaStronaStart$")~=nil)
    		or(mw.ustring.match(tabela_parametrow_szablonu[0],"^[Pp]odstawowaStronaStart$")~=nil)    		
    		or(mw.ustring.match(tabela_parametrow_szablonu[0],"^[Pp]rostaStronaStart$")~=nil)    		
    		)
    	    then
    	   tabela_listy.formatowanie="tak";
    	end;
      end;
    end;
    local znak;
    local kod;
     local plik=mw.ustring.match(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"^{{:([^:|{}]-)}}$");
        if(plik==nil)then
          if(tabela_parametrow_szablonu)then
            if((tabela_parametrow_szablonu["automat"]==nil)or(tabela_parametrow_szablonu["automat"]=="TRUE"))then
              local czy_wypowiedzenie=mw.ustring.match(tabela_parametrow_szablonu[0],"^[[wW]ypowiedzenie$");
              for _,elementy_w_tablicy_obiekty in pairs(dane2.tablica_obiektow)do
              	local link=mw.ustring.match(tabela_parametrow_szablonu[0],"^%s*[Ll]ink");
              	local wartosc_elementu,_=mw.ustring.gsub(elementy_w_tablicy_obiekty[1],"%d+$","");
              	if(not link)then
               	    local wzor_nazwy_szablonu1="["..mw.ustring.upper(mw.ustring.match(elementy_w_tablicy_obiekty[1],"^(%a)"))..mw.ustring.lower(mw.ustring.match(elementy_w_tablicy_obiekty[1],"^(%a)")).."]"..mw.ustring.match(elementy_w_tablicy_obiekty[1],"^%w(%w*%a+%d*)$");
               	    local czy_aliasy=false;
               	    if((elementy_w_tablicy_obiekty[2])and(type(elementy_w_tablicy_obiekty[2])=="table"))then
               	    	for _,alias in pairs(elementy_w_tablicy_obiekty[2])do
               	    	    local wzor_nazwy_szablonu2="["..mw.ustring.upper(mw.ustring.match(alias,"^(%a)"))..mw.ustring.lower(mw.ustring.match(alias,"^(%a)")).."]"..mw.ustring.match(alias,"^%w(%w*%a+%d*)$");
               	    	    czy_aliasy=czy_aliasy or mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
               	    	end;
               	    elseif(elementy_w_tablicy_obiekty[2])then
               	    	    local wzor_nazwy_szablonu2="["..mw.ustring.upper(mw.ustring.match(elementy_w_tablicy_obiekty[2],"^(%a)"))..mw.ustring.lower(mw.ustring.match(elementy_w_tablicy_obiekty[2],"^(%a)")).."]"..mw.ustring.match(elementy_w_tablicy_obiekty[2],"^%w(%w*%a+%d*)$");
               	    	    czy_aliasy=czy_aliasy or mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu2.."$");
           	        end;
           	     	czy_aliasy=czy_aliasy or mw.ustring.match(tabela_parametrow_szablonu[0],"^"..wzor_nazwy_szablonu1.."$");
              		if(czy_aliasy)then
              			    if((not czy_wypowiedzenie)or((czy_wypowiedzenie)and(tabela_parametrow_szablonu["Rodzaj"]==wartosc_elementu)))then
              					ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy2, tabela_listy, nazwa_modolu,wartosc_elementu, czy_artukul_korzystany,elementy_w_tablicy_obiekty[3]);
              					 czy_wypowiedzenie=false;
              					 break;
              			    end;
              		end;
              	else
              		  local link2="[Ll]ink"..wartosc_elementu;
              		  local typ=mw.getContentLanguage():lcfirst(wartosc_elementu);
              		  if((czy_artukul_korzystany)and((mw.ustring.match(tabela_parametrow_szablonu[0],"^"..link2.."$"))or((mw.ustring.match(tabela_parametrow_szablonu[0],"^[Ll]inkObiekt$"))and(tabela_parametrow_szablonu["typ"]==typ))))then
              			LinkowanieOgolnie(tabela_parametrow_szablonu,tabela_listy, wartosc_elementu, linkobiekt[wartosc_elementu]);
              			czy_wypowiedzenie=false;
              			break;
              		  end;
              	end;
              end;
                if(czy_wypowiedzenie)then
               		if(mw.ustring.match(tabela_parametrow_szablonu[0],"^[[wW]ypowiedzenie$"))then
               			ObsluzSzablonWzor(tabela_parametrow_szablonu,tabela_listy2, tabela_listy, nazwa_modolu,"Obiekt", czy_artukul_korzystany,dane2.obiekty[3]);
            		elseif((czy_artukul_korzystany)and(mw.ustring.match(tabela_parametrow_szablonu[0],"^[[Ll]inkObiekt$")))then
               			LinkowanieOgolnie(tabela_parametrow_szablonu,tabela_listy, "Obiekt", linkobiekt);
       	        	end;
               end;
             end;
           end;
         end; 
       end;
   if(czy_artukul_korzystany)then
    	for _,obiekt in pairs(dane2.tablica_obiektow)do
     		local obiekt2,_=mw.ustring.gsub(obiekt[1],"%d+$","");
        	SprawdzLinki(tabela_listy,tabela_listy2,linkobiekt[obiekt2],obiekt2,"Link"..obiekt2, nazwa_modolu);
    	end;
   end;
   tabela_listy.start[nazwa_modolu]={};
   tabela_listy.start[nazwa_modolu]=tabela_listy2;
   return tabela_listy;
end;
function SprawdzLinki(tabela_listy,tabela_listy2,link_obiekt_lub_wypowiedzenie, nazwa_obiektu1, nazwa_obiektu2, nazwa_modolu)
if(tabela_listy.ZbienneBledowKorzystane[nazwa_obiektu2]==nil)then
     for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie in ipairs(link_obiekt_lub_wypowiedzenie) do
       local czy_uchwyty_sa_ponumerowane=true;
       for _, elementy_w_tablicy_obiekt_lub_wypowiedzenie2 in ipairs(tabela_listy2[nazwa_obiektu1]) do
               if(elementy_w_tablicy_obiekt_lub_wypowiedzenie==elementy_w_tablicy_obiekt_lub_wypowiedzenie2[1])then
               	   czy_uchwyty_sa_ponumerowane=false;
                   break;
               end;
           end;
        if(czy_uchwyty_sa_ponumerowane==true)then
        	local czy_tylko_ze_znakami_odstepu_lub_puste=mw.ustring.match(elementy_w_tablicy_obiekt_lub_wypowiedzenie,"^%s*$");
        	if(czy_tylko_ze_znakami_odstepu_lub_puste)then
        	    if(tabela_listy.puste_parametry[nazwa_obiektu1]==nil) then
                  tabela_listy.puste_parametry[nazwa_obiektu1][1]=0;
                end;
                return;
             elseif(tabela_listy.ZbienneBledowKorzystane[nazwa_obiektu2]==nil)then
            		tabela_listy.ZbienneBledowKorzystane[nazwa_obiektu2]=0;
                    return;
              end;
        end;
      end;
    end;
end;
function PrzetworzMozliweWszystkieRodzajeTworow(tabela_listy,nazwa_modolu,numer_artykulu_w_ksiazce,dane2)
   for _,element_w_tablicy_obiekty in pairs(dane2.tablica_obiektow)do
   	    local element_obiekty,_=mw.ustring.gsub(element_w_tablicy_obiekty[1],"%d*$","");
		tabela_listy=Sprawdzanie_i_numerowanie(tabela_listy,nazwa_modolu,element_obiekty,numer_artykulu_w_ksiazce);
   end;
end;
function PrzetworzZebraneInformacje(tabela_listy)
	 local dane2=mw.loadData("Module:StronicowyParser/data2");
     for nazwa_modolu, val in pairs(tabela_listy.start) do
    	local numer_obiektu_w_ksiazce=1;local czy_da_sie_numerowac_obiekty_ze_spisem_tresci =false;
    	local uchwyt_strony=mw.title.makeTitle('',nazwa_modolu);
    	local nazwa_strony_glownej;
    	if((uchwyt_strony.nsText==dane2.main)or(uchwyt_strony.nsText==dane2.wikijunior)or(uchwyt_strony.nsText==dane2.user))then
    		 nazwa_strony_glownej=require("Module:Parametry").PelnaNazwaKsiazki(nazwa_modolu);
    	else
    		return tabela_listy;
    	end;
    	if(nazwa_strony_glownej)then
    		if(nazwa_strony_glownej==nazwa_modolu)then 
    			 czy_da_sie_numerowac_obiekty_ze_spisem_tresci=false;
    		else
        		if(tabela_listy.lista_artykulow)then 
     				if(tabela_listy.lista_artykulow[nazwa_strony_glownej])then
     	   				for _, nazwa_artykulu in ipairs(tabela_listy.lista_artykulow[nazwa_strony_glownej]) do
     						if(nazwa_strony_glownej.."/"..nazwa_artykulu~=nazwa_modolu)then 
     							numer_obiektu_w_ksiazce=numer_obiektu_w_ksiazce+1;
     						else 
     							czy_da_sie_numerowac_obiekty_ze_spisem_tresci=true;break;
     						end;
     					end;
 	    			end;
 	    		end;
 	    	end;
     		if(czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
     		   PrzetworzMozliweWszystkieRodzajeTworow(tabela_listy,nazwa_modolu,numer_obiektu_w_ksiazce,dane2);
        	elseif(not czy_da_sie_numerowac_obiekty_ze_spisem_tresci)then
               PrzetworzMozliweWszystkieRodzajeTworow(tabela_listy,nazwa_modolu,0,dane2);
     	    end;
    	else
               PrzetworzMozliweWszystkieRodzajeTworow(tabela_listy,nazwa_modolu,0,dane2);
    	end;
  end;
    return tabela_listy;
end;
function Sprawdzanie_i_numerowanie(tabela_listy, nazwa_modolu, nazwa_obiektu, numer_artykulu_w_ksiazce)
   for licznik, element_obiektu in ipairs(tabela_listy.start[nazwa_modolu][nazwa_obiektu]) do
       local czy_numerowac=false;
		for licznik2=1, licznik-1,1 do
   	      if(element_obiektu[1]==tabela_listy.start[nazwa_modolu][nazwa_obiektu][licznik2][1])then
               if((tabela_listy.nazwa_modolu==nazwa_modolu)and(not tabela_listy.ZbienneBledowKorzystane[nazwa_obiektu]))then
                	tabela_listy.ZbienneBledowKorzystane[nazwa_obiektu]=0;
                	element_obiektu[2]=nil;
               elseif(tabela_listy.nazwa_modolu~=nazwa_modolu)then
               	    if(not tabela_listy.ZbienneBledowDoloczone[nazwa_obiektu])then tabela_listy.ZbienneBledowDoloczone[nazwa_obiektu]={};end;
             		local uchwyt_strony=mw.title.makeTitle('',nazwa_modolu);
					local czy_sa_bledy_w_zmiennych_doloczonych=true;
					for _,element_obiektu2 in pairs(tabela_listy.ZbienneBledowDoloczone[nazwa_obiektu])do
    					if(element_obiektu2==uchwyt_strony.nsText)then czy_sa_bledy_w_zmiennych_doloczonych=false;end;
					end;
					if(czy_sa_bledy_w_zmiennych_doloczonych)then table.insert(tabela_listy.ZbienneBledowDoloczone[nazwa_obiektu],uchwyt_strony.nsText);end;
        		end;
              if(tabela_listy.start[nazwa_modolu][nazwa_obiektu][licznik2][1])then tabela_listy.start[nazwa_modolu][nazwa_obiektu][licznik2][2]=nil;end;
              czy_numerowac=true;
           end;
        end;
      if(not czy_numerowac)then
      	if(numer_artykulu_w_ksiazce>0)then
      	   element_obiektu[2]=numer_artykulu_w_ksiazce.."."..licznik;
      	elseif(numer_artykulu_w_ksiazce==0)then
      		element_obiektu[2]=licznik
       elseif(tablist.blad_wewnetrzny==nil)then
            tabela_listy.blad_wewnetrzny=0
      	end;	
      end;
   end;
   return tabela_listy;
end;
function NumerObiektu(frame, nazwa_obiektu)
  local nazwa_strony=require("Module:Parametry").TransformacjaKoduZnakuDoZnakuWLancuchu(frame.args[1]);
  nazwa_strony=mw.ustring.gsub(nazwa_strony,"_"," ");
  local dane=mw.loadData("Moduł:StronicowyParser/data").start;
  local dane_danej_ksiazki=dane.start[nazwa_strony];
  if(dane_danej_ksiazki)then
     for _, dany_artykul in ipairs(dane_danej_ksiazki[nazwa_obiektu])do
      	if(dany_artykul[1]==frame.args[2])then
             return dany_artykul[2];
        end;
     end;   
     return nil;
   else
   	 return nil;
   end;
end;
function NumerObiektu2(frame,co)
  local uchwyt_strony=mw.title.getCurrentTitle();
   local dane2=mw.loadData("Module:StronicowyParser/data2");
  if((uchwyt_strony.nsText==dane2.main)or(uchwyt_strony.nsText==dane2.wikijunior)or(uchwyt_strony.nsText==dane2.user))then
		local ponumerowany_uchwyt_lub_nil=NumerObiektu(frame,co);
		if(not ponumerowany_uchwyt_lub_nil)then  
    		return "Niedopasowany uchwyt: "..frame.args[2];
		else
    		return ponumerowany_uchwyt_lub_nil;
		end;
	else
		return frame.args[2];
	end;
end;
function IteratorFunkcja()
	local dane2=mw.loadData("Module:StronicowyParser/data2");
	local tabela_wypowiedzi=dane2.tablica_obiektow;
	local licznik=1;
	return function()
		local tabela_obiektu=tabela_wypowiedzi[licznik];
		if(not tabela_obiektu)then return nil;end;
		local wartosc1=mw.ustring.gsub(tabela_obiektu[1],"%d+$","");
		local wartosc2=tabela_obiektu[7];
		licznik=licznik+1;
		return wartosc1,wartosc2;
	end;
end;
local iterator=IteratorFunkcja();
for nazwa_obiektu,czesc_nazwy_funkcji in iterator do
	p["Numer"..czesc_nazwy_funkcji] = function(frame)
		return NumerObiektu2(frame,nazwa_obiektu);
	end;
end;
function p.formatowanie()
	local dane=mw.loadData('Moduł:StronicowyParser/data');
	return dane.start.formatowanie;
end;
function p.WstawKategorie(frame)
  local uchwyt_strony=mw.title.getCurrentTitle();
  local dane2=mw.loadData("Module:StronicowyParser/data2");
  if((uchwyt_strony.nsText~=dane2.main)and(uchwyt_strony.nsText~=dane2.wikijunior)and(uchwyt_strony.nsText~=dane2.user))then
  		return;
  end;
  local dane=mw.loadData('Moduł:StronicowyParser/data');
  if(not dane.start.kodkategorie)then return "";end;
  local kodkategorie1=frame.args[2]..":"..frame.args[1];
  local lancuch_znakow="";
  local kodkategorie2=dane.start.kodkategorie;
  if(kodkategorie1==kodkategorie2)then
  	    local strony_z_wielkiej_litery,strony_z_malej_litery;
  	    if(uchwyt_strony.nsText==dane2.user)then
  	    	strony_z_wielkiej_litery="Strony użytkowników,";
  	    	strony_z_malej_litery="stron użytkowników";
  	    elseif(uchwyt_strony.nsText==dane2.wikijunior)then
  	    	strony_z_wielkiej_litery="Artykuły dla dzieci,";
  	    	strony_z_malej_litery="artykułów dla dzieci";
  	    else
  	    	strony_z_wielkiej_litery="Artykuły";
  	    	strony_z_malej_litery="artykułów";
  	    end;
  	    for _,element_w_tablicy_obiekty in pairs(dane2.tablica_obiektow)do
  	    	local wartosc_elementu_pierwszego=mw.ustring.gsub(element_w_tablicy_obiekty[1],"%d+$","");
  	    	if(dane.start.ZbienneBledowKorzystane[wartosc_elementu_pierwszego])then
              if(dane.start.ZbienneBledowKorzystane[wartosc_elementu_pierwszego]==0)then
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." "..element_w_tablicy_obiekty[6].." "..element_w_tablicy_obiekty[4]..((mw.ustring.match(element_w_tablicy_obiekty[4],"[%s_]+"))and "," or "").." ze złymi uchwytami]]";
              end;
    		end;
    		if(dane.start.ZbienneBledowDoloczone[wartosc_elementu_pierwszego])then
              for _,element_w_tablicy_obiekty2 in pairs(dane.start.ZbienneBledowDoloczone[wartosc_elementu_pierwszego]) do
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z dołączonymi "..((element_w_tablicy_obiekty2==dane2.main)and "artykułami" 
    		                                            or((element_w_tablicy_obiekty2==dane2.wikijunior)and "artykułami dla dzieci," 
    		                                               or ((element_w_tablicy_obiekty2==dane2.user) and "stronami użytkowników,"
    		                                                      or "stronami"))).." "..element_w_tablicy_obiekty[6].." "..element_w_tablicy_obiekty[4]..((mw.ustring.match(element_w_tablicy_obiekty[4],"[%s_]+"))and "," or "").." ze złymi uchwytami]]";
              end;
    		end;
  	    	if(dane.start.ZbienneBledowKorzystane["Link"..wartosc_elementu_pierwszego])then
              if(dane.start.ZbienneBledowKorzystane["Link"..wartosc_elementu_pierwszego]==0)then
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." ze złymi uchwytami do "..element_w_tablicy_obiekty[5].."]]";
              end;
    		end;
  	    	if(dane.start.puste_parametry[wartosc_elementu_pierwszego][1])then
              if(dane.start.puste_parametry[wartosc_elementu_pierwszego][1]==0)then
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z pustymi nazwami stron w odnośnikach do "..element_w_tablicy_obiekty[5].."]]";
              end;
    		end;
    		if(dane.start.puste_parametry[wartosc_elementu_pierwszego][2])then
              if(dane.start.puste_parametry[wartosc_elementu_pierwszego][2]==0)then
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z pustymi uchwytami w odnośnikach do "..element_w_tablicy_obiekty[5].."]]";
              end;
    		end;
  	    	if(dane.start.brak_uchwytu[wartosc_elementu_pierwszego])then
              if(dane.start.brak_uchwytu[wartosc_elementu_pierwszego]==0)then
                    lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z odnośnikami, z brakiem uchwytu, do "..element_w_tablicy_obiekty[5].."]]";
              end;
    		end;
  	    end;
    	if((dane.start.brak_spisu_tresci_do_korzystanych_modolow)and(not dane.start.korzystane_brak_spis))then 
            	lancuch_znakow=lancuch_znakow.."[["..dane2.category..": Brakujące spisy treści, do korzystanych "..((uchwyt_strony.nsText==dane2.main)and " artykułów" 
    		                                            or((uchwyt_strony.nsText==dane2.wikijunior)and " artykułów dla dzieci" 
    		                                               or ((uchwyt_strony.nsText==dane2.user) and " stron użytkowników"
    		                                                      or "stron")))..", w książkach]]";
    	end;
    	if((dane.start.brak_spisu_tresci_do_doloczanych_modolow)and (not dane.start.doloczone_brak_spis))then 
        		for name,element_w_tablicy_obiekty in pairs(dane.start.brak_spisu_tresci_do_doloczanych_modolow)do
            		lancuch_znakow=lancuch_znakow.."[["..dane2.category..": Brakujące spisy treści, dołączonych do "..((uchwyt_strony.nsText==dane2.main)and " artykułów" 
    		                                            or((uchwyt_strony.nsText==dane2.wikijunior)and " artykułów dla dzieci" 
    		                                               or ((uchwyt_strony.nsText==dane2.user) and " stron użytkowników"
    		                                                      or "stron")))..", w książkach"..((element_w_tablicy_obiekty==dane2.main)and "" 
    		                                            or((element_w_tablicy_obiekty==dane2.wikijunior)and " dla dzieci" 
    		                                               or ((element_w_tablicy_obiekty==dane2.user) and " użytkowników"
    		                                                      or " innych"))).."]]";
    		  end;
    	end;
    	if(dane.start.nieprawidlowe_nazwy_korzystanej_strony)then 
        	if(dane.start.nieprawidlowe_nazwy_korzystanej_strony==0)then
            	lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z nieprawidłowymi nazwami korzystanych stron]]";
        	end;
    	end;
    	if(dane.start.nieprawidlowe_nazwy_strony_doloczanej_do_strony)then 
        	if(dane.start.nieprawidlowe_nazwy_strony_doloczanej_do_strony==0)then
            	lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z nieprawidłowymi nazwami dołączonych stron]]";
        	end;
    	end;       
    	if(dane.start.strona_nie_istnieje)then 
        	if(dane.start.strona_nie_istnieje==0)then
            	lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z dołączonymi nieistniejącymi stronami]]";
        	end;
    	end;
    	if(dane.start.blad_wewnetrzny)then 
        	if(dane.start.blad_wewnetrzny==0)then
            	lancuch_znakow=lancuch_znakow.."[["..dane2.category..": "..strony_z_wielkiej_litery.." z błędami wewnętrznymi skryptów]]";
        	end;
    	end;
    	if(dane.start.niedozwolone_znaki_spisie_tresci)then
    		if(dane.start.niedozwolone_znaki_spisie_tresci==0)then
    			lancuch_znakow=lancuch_znakow.."[["..dane2.category..":Nazwy "..strony_z_malej_litery..", w spisach treści zawierają niedozwolone znaki]]";
    		end;
    	end;
    	if(dane.start.korzystane_brak_spis)then
    		lancuch_znakow=lancuch_znakow.."[["..dane2.category..": Brak spisu treści, korzystanych "..((uchwyt_strony.nsText==dane2.main)and "artykułów" 
    		                                            or((uchwyt_strony.nsText==dane2.wikijunior)and "artykułów dla dzieci" 
    		                                               or ((uchwyt_strony.nsText==dane2.user) and "stron użytkowników"
    		                                                      or "stron")))..", do książek]]";
    	end;
    	if(dane.start.doloczone_brak_spis)then
    		for name,element_w_tablicy_obiekty in pairs(dane.start.doloczone_brak_spis)do
    			lancuch_znakow=lancuch_znakow.."[["..dane2.category..": Brak spisu treści, dołączonych do "..((uchwyt_strony.nsText==dane2.main)and "artykułów" 
    		                                            or((uchwyt_strony.nsText==dane2.wikijunior)and "artykułów dla dzieci" 
    		                                               or ((uchwyt_strony.nsText==dane2.user) and "stron użytkowników"
    		                                                      or "stron")))..", do książek"..((element_w_tablicy_obiekty==dane2.main)and "" 
    		                                            or((element_w_tablicy_obiekty==dane2.wikijunior)and " dla dzieci" 
    		                                               or ((element_w_tablicy_obiekty==dane2.user) and " użytkowników"
    		                                                      or " innych"))).."]]";
    		end;
		end;
    end;
    return lancuch_znakow;
end;
return p;