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 p.HNumber(frame)
	local i=1;
	while true do
    	local str=mw.ustring.match(frame.args[1],"^\n"..mw.ustring.rep("=",i).."%s*([^\n]+)%s*"..mw.ustring.rep("=",i).."%s*\n$");
    	if(mw.ustring.match(str,"^=([^\n]+)=$")~=nil)then
    		i=i+1;
    	else
    		if(i>6)then 
       			return 6;
    		elseif(i<1)then
       			return nil;
    		else
       			return i;
    		end;
    	end;
	end;
end;
function p.NazwaRozdzialu(frame)
	local i=1;
	while true do
    	local str=mw.ustring.match(frame.args[1],"^\n"..mw.ustring.rep("=",i).."%s*([^\n]+)%s*"..mw.ustring.rep("=",i).."%s*\n$");
    	if(mw.ustring.match(str,"^=([^\n]+)=$")~=nil)then
    		i=i+1;
    	else
    		return str;
    	end;
	end;
end;
function p.TOC()
    local d=mw.loadData('Moduł:StronicowyParser/data');
    local nazwa_modolu=d.c.nazwa_modolu;
    if(nazwa_modolu~=nil)then
       local spis=TOC(d.c.TOC[nazwa_modolu]);
       return spis;
    else 
    	return nil;
    end;
end;
function p.WykazModolow()
    local d=mw.loadData('Moduł:StronicowyParser/data');
	local nazwa_modolu=d.c.nazwa_modolu;
	if(nazwa_modolu==nil)then return nil;end;
	local title=mw.title.makeTitle('',nazwa_modolu);
	local nazwa_ksiazka;
    if((title.nsText=="")or(title.nsText=="Wikijunior"))then
    	nazwa_ksiazka=title.rootText;
   	elseif((title.nsText=="Wikipedysta")or(title.nsText=="Dyskusja_wikipedysty"))then 
    	nazwa_ksiazka=mw.ustring.match(nazwa_modolu,"^([^/:]+:[^/]+/[^/]+).-$");
    else return nil;
    end;
	nazwa_ksiazka=mw.ustring.gsub(nazwa_ksiazka,"_"," ");
	local list=d.c.list[nazwa_ksiazka];
	if(list==nil)then return nil;end;
	local str='<ol>';
	for nazwa, value in pairs(list) do
		local modol=list[nazwa];
		_modol=mw.ustring.gsub(modol,"_"," ");
		str=str..'<li>[['..modol..'|'.._modol..']]</li>';
	end;
	str=str.."</ol>";
	str='<div style="width:100%;max-height:400px;overflow:auto;">'..str.."</div>";
	str='{{Menu|StylMenu=width:100%|Tytuł=<div style="text-align:left;font-size:1.1em;">Wykaz modułów w książce</div>|Pozycje='..str..'|Funkcja=UkrytaRamkowaListaMenu|Klasy=inkremlicztoc listtoc}}';
	local frame=mw.getCurrentFrame();
    local d=frame:preprocess(str);
	return d;
end;
function p.NazwaModolu()
	local d=mw.loadData('Moduł:StronicowyParser/data');
	local nazwa_modolu=d.c.nazwa_modolu;
	if(nazwa_modolu==nil)then 
		 return "[[Kategoria: Nie można wygenerować nazwy modułu]]";
     else
	    local str=mw.ustring.gsub(mw.ustring.match(nazwa_modolu,"[^/]*$"),"_"," ");
	     return str;
	end;
end;
function p.Wstep_do_licencji(frame)
	  local str1='<strong>Autor:</strong> '..frame.args[1]..'<BR>';
	  local str2;
	    if((frame.args[2]~='')and(frame.args[2]~=nil))then 
	    	str2=frame.args[2]..'<BR>';
	  end;
	  local str3; 
	  if((frame.args[3]~='')and(frame.args[3]~=nil))then 
	  	 str3='<strong>Email:</strong> '..frame.args[3]..'<BR>';
	  end;
	  local str4;
	  if((frame.args[4]~='')and(frame.args[4]~=nil))then 
	  	  str4='<strong>Dotyczy:</strong> '..frame.args[4].."<BR>";
	  else
	  	 str4='<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 
	  	  str5=frame.args[5].."<BR>";
	  else
	  	 str5='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 str6;
	  if((frame.args[6]~='')and(frame.args[6]~=nil))then 
	  	   str6='<strong>Umowa prawna:</strong> '..frame.args[6]..'<BR>'; 
	  else 
	  	   str6='<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 
	  	  str7=frame.args[7].."<BR>";
	  else
	  	 str7='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 str=str1..str2..str3..str4..str5..str6..str7;
	  return str; 
end;
function p.Licencja()
  local d=mw.loadData('Moduł:StronicowyParser/data');
  if(d.c.lic)then
	if(d.c.lic[1])then
		local frame={};
		frame.args={d.c.lic[1],d.c.lic[2],d.c.lic[3],d.c.lic[4],d.c.lic[5],d.c.lic[6],d.c.lic[7]};
		local strw='<div style="margin-left:0px;padding:3px;">'..p.Wstep_do_licencji(frame)..'</div>';
		str='{{Menu|StylMenu=width:100%;|Tytuł=<div style="font-size:1.1em;text-align:left;">Licencja</div>|Pozycje='..strw..'|Funkcja=StatycznaRamkowaListaMenu}}';
	else
		return nil;
	end; 
	local frame1=mw.getCurrentFrame();
    local d=frame1:preprocess(str);
    return d;
  else
    return nil;
  end;
end;
function p.PierwszaStrona(frame)
	local wstep="";
	if(frame.args[1]=="NAZWA MODUŁU")then 
		wstep='<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 str=p.Licencja();
		 if(str~=nil)then
		 	wstep=wstep..str;
        else
          local kat="[[Kategoria: Nie ma szablonu z licencją z co najmniej z autorem na stronie głównej książki]]";
          wstep=wstep..kat.."\n";
	   end;
	end;
	if(frame.args[3]=="WYKAZ")then 
		 local str=p.WykazModolow();
		 if(str~=nil)then
		 	wstep=wstep.."<hr/>"..str;
	    end;
	end;
	if(frame.args[4]=="TOC")then 
		 local str=p.TOC();
		 if(str~=nil)then
		 	wstep=wstep.."<hr/>"..str;
	    end;
	end;
	return wstep;
end;
function TOC(h)
        if(h==nil)then return nil;end;
        local znacz="";
        local d=h[1][2];
        for c, value in ipairs(h) do
        	if(c==1)then
                   znacz='<ol><li>'.."[["..h[c][1][1].."|"..h[c][1][2].."]]";
                else
                  if(h[c][2]==d)then
                       znacz=znacz..'</li><li>'.."[["..h[c][1][1].."|"..h[c][1][2].."]]";
                  elseif(h[c][2]>d)then
                      znacz=znacz..'<ol><li>'.."[["..h[c][1][1].."|"..h[c][1][2].."]]";
                      d=h[c][2];
                  elseif(h[c][2]<d)then
                       znacz=znacz..mw.ustring.rep('</li></ol>',d-h[c][2])..'</li><li>'.."[["..h[c][1][1].."|"..h[c][1][2].."]]";
                       d=h[c][2];
                  end;
               end;	
        end;
        znacz=znacz..mw.ustring.rep('</li></ol>',d);
        znacz='<div style="width:100%;max-height:700px;overflow:auto;padding-right:5px;">'..znacz.."</div>";
        str='{{Menu|StylMenu=width:100%|Tytuł=<div style="text-align:left;font-size:1.1em;">Spis Treści</div>|Pozycje='..znacz..'|Funkcja=UkrytaRamkowaListaMenu|Klasy=inkremlicztoc listtoc}}';
	    local frame=mw.getCurrentFrame();
        local d=frame:preprocess(str);
	    return d;
end;
function p.SpisTresci(frame)
    local args = frame.args;
    local brak=mw.ustring.match(args[1],"[|<>{}%[%]]");
    if(brak~=nil)then
    	return "[[Kategoria: Nazwa modułu w odnośniku w spisie treści zawiera niedozwolone znaki]]";
    end;
    args[1]=transform(args[1]);
    local page = mw.title.makeTitle(args[2] or '', args[1]);
    local ns = page:inNamespace( 0 );
    local names=mw.ustring.gsub(mw.ustring.match(args[1],"[^/]*$"),"_"," ");
    if((page==nil)or(not page.exists))then
	    return mw.ustring.rep("=",6).."<span style=\"color:red\">[["..args[1].."|"..names.."]]</span>"..mw.ustring.rep("=",6);
    else
       local text = page:getContent();
       local h=SpisTresciWstep(text, args[1]);	
       local znacz="";
	   znacz=mw.ustring.rep("=",6).."[["..args[1].."|"..names.."]]"..mw.ustring.rep("=",6);
	   if(h~=nil)then
         for c=1, #h do
 	        znacz=znacz.."\n"..mw.ustring.rep("#",h[c][2]).."[["..h[c][1][1].."|"..h[c][1][2].."]]";
         end;
       end;
       return znacz;
    end;
end;
function  SpisTresciWstep(text,strona)
    strona=mw.ustring.gsub(strona,"(|)",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end);
    local arg=nil;
    text=mw.ustring.gsub(text,"<[mM][aA][tT][hH]>.-</[mM][aA][tT][hH]>","");
    text=mw.ustring.gsub(text,"<[nN][oO][wW][iI][kK][iI]>.-</[nN][oO][wW][iI][kK][iI]>",""); 	
    text=mw.ustring.gsub(text,"(\n=+[^\n]+=+%s-\n)","\n%1\n");
    text=mw.ustring.gsub(text,"^(=+[^\n]+=+%s-\n)","\n%1\n");
    text=mw.ustring.gsub(text,"(\n=+[^\n]+=+%s-)$","\n%1\n");
    local znaczenia="";
    local dpocz=nil;
    local ostatnie=nil;
    local znaczenia1;    
    local tab={};
    local iter=mw.ustring.gmatch(text, "\n=+%s*[^\n]+%s*=+%s-\n");
    local link=nil;
    for znaczenia1 in iter do
           local i=1;
           local znaczenia2="";
          local s1,d1;
           while true do
                   local str=mw.ustring.match(znaczenia1,"^\n"..mw.ustring.rep("=",i).."%s*([^\n]+)%s*"..mw.ustring.rep("=",i).."%s*\n$");
                   if(mw.ustring.match(str,"^=([^\n]+)=$")~=nil)then
                     i=i+1;
                   else
                   	 znaczenia2=str;
                   	 break;
                   end;
          end;
             local na11=mw.ustring.match(znaczenia2,"%[%[[^{}|]+|([^{}|]+)%]%]");
             local na21=mw.ustring.match(znaczenia2,"%[%[([^{}|]+|[^{}|]+)%]%]");
             if((na11~=nil)and(na21~=nil))then 
             	   na11=mw.ustring.gsub(na11,"^:","");
             	   znaczenia2=mw.ustring.gsub(znaczenia2,"%[%["..na21.."%]%]",na11);
              end;
             local na12=mw.ustring.match(znaczenia2,"%[%[([^{}|]+)%]%]");
             if(na12~=nil)then 
             	  local na121=mw.ustring.gsub(na12,"^:","");
             	  znaczenia2=mw.ustring.gsub(znaczenia2,"%[%["..na12.."%]%]",na121);
             end;
             local nazwa=mw.ustring.gsub(znaczenia2,"<.->","");
             nazwa=mw.ustring.gsub(nazwa,"\'\'\'","");
             nazwa=mw.ustring.gsub(nazwa,"\'\'","");
             nazwa=mw.ustring.gsub(nazwa,"^[%s_]*","");
             nazwa=mw.ustring.gsub(nazwa,"[%s_]*$","");
             nazwa=mw.ustring.gsub(nazwa,"_"," ");
             nazwa=mw.ustring.gsub(nazwa,"|","&#"..tostring(mw.ustring.byte('|'))..";");
             local licznikb=1;
             local nazwa_p=mw.ustring.lower(nazwa);
             for c=1,#tab do
             	  if(tab[c][2]==1)then
             	  	if(licznikb==1)then
                       if(tab[c][1]==nazwa_p)then licznikb=licznikb+1;end;
                    else
                       if(tab[c][1]==nazwa_p.." "..tostring(licznikb))then licznikb=licznikb+1;end;
                    end;
                  else
                   if(licznikb==1)then
                  	 if(tab[c][1].." "..tostring(tab[c][2])==nazwa_p)then licznikb=licznikb+1;end;
                    else
                  	 if(tab[c][1].." "..tostring(tab[c][2])==nazwa_p.." "..tostring(licznikb))then licznikb=licznikb+1;end;
                   end;
                 end;
             end;
             for d=1, #tab do
               if(tab[d][2]==1)then
                 if(licznikb>1)then
                  	 if(tab[d][1]==nazwa_p.." "..tostring(licznikb))then licznikb=licznikb+1;end;
                 end;
               end;
             end;
             local addres;
             if(licznikb==1)then
                 link={strona.."#"..nazwa,znaczenia2};
             else
                 link={strona.."#"..nazwa.."_"..licznikb,znaczenia2};
             end;
             if((dpocz==nil)or(dpocz>=i))then 
                  dpocz=i-1;
             elseif(ostatnie+1<i-dpocz)then
                   dpocz=i-ostatnie-1;
             end;
             ostatnie=i-dpocz;
             tab[#tab+1]={mw.ustring.lower(nazwa),licznikb};  
             if(arg==nil)then arg={};end;
             arg[#arg+1]={link,i-dpocz};
     end;
     return arg;
end;
function p.lista()
    local title=mw.title.getCurrentTitle();
    local d=mw.ustring.gsub(title.fullText,"_"," ");
    local tablist={};
    tablist.c={};
    tablist.d={};
    tablist.d["Wzór"]=nil;
    tablist.d["LinkWzór"]=nil;
    tablist.d["Grafika"]=nil;
    tablist.d["LinkGrafika"]=nil;
    tablist.d["Obiekt"]=nil;
    tablist.d["LinkObiekt"]=nil;
    local data2=mw.loadData("Module:StronicowyParser/data2").wypowiedzi;
    for name,value in pairs(data2)do
    	local wypowiedz2=mw.ustring.match(value,"^(%w*%a+)%d*$")
    	tablist.d[wypowiedz2]=nil;
        tablist.d["Link"..wypowiedz2]=nil;
    end;
    tablist.TOC={};
    tablist.formatowanie=nil
    tablist.list={};
    tablist.strona_nie_istnieje=nil;
    tablist.brak_spisu_tresci_do_korzystanych_modoluch=nil;
    tablist.brak_spisu_tresci_do_doloczanych_modoluch=nil;
    tablist.nieprawidlowe_nazwy_strony_glownej_do_korzystanych_modolow_ksiazek=nil;
    tablist.nieprawidlowe_nazwy_strony_glownej_do_doloczanych_modolow_ksiazek=nil;
    tablist.blad_wewnetrzny=nil;
    tablist.niepelne_zestawy_parametrow_linkowania={};
    tablist.niepelne_zestawy_parametrow_linkowania["Wzór"]=nil;
    tablist.niepelne_zestawy_parametrow_linkowania["Grafika"]=nil;
    tablist.niepelne_zestawy_parametrow_linkowania["Obiekt"]=nil;
    tablist.kodkategorie=nil;
    tablist.puste_parametry={};
    tablist.puste_parametry["Wzór"]={}
    tablist.puste_parametry["Grafika"]={};
    tablist.puste_parametry["Obiekt"]={};
    tablist.puste_parametry["Wzór"][1]=nil;
    tablist.puste_parametry["Wzór"][2]=nil
    tablist.puste_parametry["Grafika"][1]=nil;
    tablist.puste_parametry["Grafika"][2]=nil;
    tablist.puste_parametry["Obiekt"][1]=nil;
    tablist.puste_parametry["Obiekt"][2]=nil;
    local data2=mw.loadData("Module:StronicowyParser/data2").wypowiedzi;
    for name,value in pairs(data2)do
    	local wypowiedz2=mw.ustring.match(value,"^(%w*%a+)%d*$")
    	tablist.puste_parametry[wypowiedz2]={};
    	tablist.puste_parametry[wypowiedz2][1]=nil;
    	tablist.puste_parametry[wypowiedz2][2]=nil;
    	tablist.niepelne_zestawy_parametrow_linkowania[wypowiedz2]=nil;
    end;
    tablist.lic={};
    local tablist0=NumerWzoruIGrafiki2(tablist,d, true);
    if(tablist0)then
       NumerWzoruIGrafiki3(tablist);
    end;
    return tablist;
end;
function lista2(tablist,p,dec)
   local page = mw.title.makeTitle('', p);
   if((page==nil)or(not page.exists))then 
      return nil;
   end;
   local ns = page:inNamespace( 0 );
   local text = page:getContent();
   local iter=mw.ustring.gmatch(text,"{{[^{}]-}}");
   local znaczenia="";
   local tablist2=nil;
   local br=true;
   local tr={};
   local tr2={};
   for znaczenia in iter do
   	   local mat=mw.ustring.match(znaczenia,"^{{[Ss]pisTreści|%s*([^{}]-)%s*}}$");
   	   if(mat~=nil)then
   	   	 mat=transform(mat);
   	   	 local title=mw.title.makeTitle('',mat);
   	   	 mat=title.fullText;
   	   	 mat=mw.ustring.gsub(mat,"_"," ");
         tr[#tr+1]=mat;
       elseif((dec)and(br))then
       	 local mat2=mw.ustring.match(znaczenia,"^{{[Ll]icencja|([^{}]-)}}$");
       	 if(mat2~=nil)then
       	   znaczenia=mw.ustring.gsub(znaczenia,"(%[%[[^|%[%]]-)(|)([^|%[%]]-%]%])","%1&#"..tostring(mw.ustring.byte('|'))..";%3");
       	   local tab=ParsujWywolanieSzablonu(znaczenia);
       	   if(tab)then
       	    local autor=tab["Autor"];
       	    local szkoly=tab["Ukończone szkoły"];
       	    local email=tab["Email"];
       	    local dotyczy=tab["Dotyczy"];
       	    local licencjonowanie=tab["Licencjonowanie"];
       	    local umowa_prawna=tab["Umowa prawna"];
       	    local konsekwencje=tab["Konsekwencje"];
       	    local reg="%[%[([^%[%]|]-)&#"..tostring(mw.ustring.byte("|"))..";([^%[%]|]-)%]%]";
       	    if(autor~=nil)then
       	    	 autor=mw.ustring.gsub(autor,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(szkoly~=nil)then
       	    	  szkoly=mw.ustring.gsub(szkoly,reg,"[[".."%1".."|".."%2".."]]");
       	    end; 
       	    if(email~=nil)then
       	    	  email=mw.ustring.gsub(email,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(dotyczy~=nil)then
       	    	  dotyczy=mw.ustring.gsub(dotyczy,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(licencjonowanie~=nil)then
       	    	  licencjonowanie=mw.ustring.gsub(licencjonowanie,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(umowa_prawna~=nil)then
       	    	  umowa_prawna=mw.ustring.gsub(umowa_prawna,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(konsekwencje~=nil)then
       	    	  konsekwencje=mw.ustring.gsub(konsekwencje,reg,"[[".."%1".."|".."%2".."]]");
       	    end;
       	    if(autor~=nil)then 
       	  	   tr2={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
       	  	   br=false; 
       	    end;
       	   elseif(tablist.blad_wewnetrzny==nil)then
       	   	tablist.blad_wewnetrzny=0;
       	   end
       	  end;
       end;
    end;
    if(dec)then tablist2={tr, tr2};else tablist2=tr;end;
    return tablist2;
end;
function wz(kod,tablist2, tablist, nazwa_modolu, co, dec)
    local s=mw.ustring.match(kod,"^%s*$");
    if(not s)then
       local listc={};
       listc[1]=kod;
       if(#tablist2[co]==0)then sprawdz(tablist, nazwa_modolu, kod);end;
       tablist2[co][#tablist2[co]+1]=listc;
       if(nazwa_modolu==tablist.nazwa_modolu)then
          if(not tablist.kodkategorie)then tablist.kodkategorie=mw.ustring.gsub(co..":"..kod,"_"," ");end;
       end;
 end;
end;
function indexwzorgrafika(tab,tablist2, tablist, nazwa_modolu, co, dec)
	local kod=tab[2];
    if(kod)then wz(kod,tablist2, tablist, nazwa_modolu, co, dec);end;
end;
function wzor(tab,tablist2, tablist, nazwa_modolu,co, dec)
	local kod=nil;
	if(tab["numeracja"]~=nil)then 
		kod=tab["numeracja"];
    elseif(tab[2]~=nil)then
		kod=tab[2];
end;
	if(kod)then wz(kod,tablist2, tablist, nazwa_modolu, co, dec);end;
end;
function sprawdz(tablist, nazwa_modolu, kodr)
	local title=mw.title.makeTitle('',nazwa_modolu);
    local nazwa_strony_glownej;
    if((title.nsText=="")or(title.nsText=="Wikijunior"))then
    	plik=title.rootText;
    	plik=mw.ustring.gsub(plik,"_"," ");
    elseif((title.nsText=="Wikipedysta")or(title.nsText=="Dyskusja_wikipedysty"))then 
    	plik=mw.ustring.match(nazwa_modolu,"^([^/:]+:[^/]+/[^/]+).-$");
    	plik=mw.ustring.gsub(plik,"_"," ");
    else
    	plik=nil;
    end;
	if(plik)then
  		local prs=false;
  		local pr=false;
		if(tablist.list)then
    		  if(tablist.list[plik])then
  				 	pr=true;
  					for i, value2 in ipairs(tablist.list[plik]) do
  						 if(value2==nazwa_modolu)then
  	                		prs=true;
  	                		break;
  	            		end;
  	    			end;
  	    	end;
		end;
		local s=mw.ustring.match(kodr,"^%s*$");
		if(not s)then
	  		local list;
  			if(pr)then list=#tablist.list[plik];else list=0;end;
    		if((list==0)or((list~=0)and(prs==false)))then 
        		 if((tablist.nazwa_modolu~=nazwa_modolu)and(tablist.brak_spisu_tresci_do_doloczanych_modoluch==nil))then
            		  tablist.brak_spisu_tresci_do_doloczanych_modoluch=0;
        		elseif((tablist.nazwa_modolu==nazwa_modolu)and(tablist.brak_spisu_tresci_do_korzystanych_modoluch==nil))then
            		  tablist.brak_spisu_tresci_do_korzystanych_modoluch=0;
        		end;
    		end;
		end;
	else
       for name,value in pairs(tablist.list) do
       	 for i, value2 in  ipairs(value)do
       	  	  	if((tablist.nieprawidlowe_nazwy_strony_glownej_do_korzystanych_modolow_ksiazek==nil)and(tablist.nazwa_modolu==nazwa_modolu))then 
  		           tablist.nieprawidlowe_nazwy_strony_glownej_do_korzystanych_modolow_ksiazek=0;
  	            elseif((tablist.nieprawidlowe_nazwy_strony_glownej_do_doloczanych_modolow_ksiazek==nil)and(tablist.nazwa_modolu~=nazwa_modolu))then
  		           tablist.nieprawidlowe_nazwy_strony_glownej_do_doloczanych_modolow_ksiazek=0;
               end;
               return;
            end;
       	end;
  	
   end;
end;
function puste(tablist,plik2, kod1, co)
  local s_k=mw.ustring.match(plik2,"^%s*$");
  local s_p=mw.ustring.match(kod1,"^%s*$");
  if((s_k)or(s_p))then
	if(tablist.puste_parametry[co][1]==nil)then
	 	if(s_k)then tablist.puste_parametry[co][1]=0;end;
	end;
	if(tablist.puste_parametry[co][2]==nil)then
	 	if(s_p)then tablist.puste_parametry[co][2]=0;end;
	end;
	return;
  end;
end;
function linkowanie_next(tablist, co, plik2, kod1)
	puste(tablist,plik2, kod1, co);
	if((not tablist.puste_parametry[co][1])and(not tablist.puste_parametry[co][2]))then
     local tablist0=NumerWzoruIGrafiki2(tablist,plik2, false,false,nil);
     if(tablist0)then 
         sprawdz(tablist,plik2, kod1);
         local val=false;
         if(tablist.c[plik2]~=nil)then                            
            if(tablist.c[plik2][co]~=nil)then                                 
               for ir, value1 in pairs(tablist.c[plik2][co]) do
                   if(value1[1]==kod1)then
                       val=true;
                   end;                                      
              end;
           end
        end;
        if(val==false)then
            if(tablist.d["Link"..co]==nil)then
               tablist.d["Link"..co]=0;
           end;
        end;
    end;	
  end;
end;
function linkowanie (tab,tablist, co, linkwzorgrafika)
   local plik2=tab[2];
   local kodr=tab[1];
   if(kodr)then
    if(plik2)then
    	plik2=transform(plik2);
        plik2=mw.ustring.gsub(plik2,"_"," ");
        if(plik2~=tablist.nazwa_modolu)then
           linkowanie_next(tablist, co, plik2, kodr);
        else
           linkowanie_dalej(kodr, tablist, tablist.nazwa_modolu, co, linkwzorgrafika);
           if(not tablist.kodkategorie)then tablist.kodkategorie=mw.ustring.gsub(co..":"..kodr,"_"," ");end;
        end;
    else
    	linkowanie_dalej(kodr, tablist, tablist.nazwa_modolu, co, linkwzorgrafika) 
    	if(not tablist.kodkategorie)then tablist.kodkategorie=mw.ustring.gsub(co..":"..kodr,"_"," ");end;
    end;
   elseif(not tablist.niepelne_zestawy_parametrow_linkowania[co])then
   	  tablist.niepelne_zestawy_parametrow_linkowania[co]=0;
   end;
end;
function linkowanie_dalej(kodr,tablist, plik2, co, linkwzorgrafika)
	if(#linkwzorgrafika==0)then sprawdz(tablist,plik2, kodr);end;
    linkwzorgrafika[#linkwzorgrafika+1]=kodr;
    puste(tablist,plik2, kodr, co); 
end;
function transform(znaczenia1)
    znaczenia1=mw.ustring.gsub(znaczenia1,"([%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
	return znaczenia1;
end;
function LadujObjectPlik(plik,tablist)
   plik=transform(plik);
   --rodzic=transform(rodzic);
   local nazw=mw.ustring.match(plik,"^%s*$");
   local page;
   if(not nazw)then
      page = mw.title.makeTitle('', plik);
      if((page==nil)or(not page.exists))then 
         if(tablist.strona_nie_istnieje==nil)then
         	tablist.strona_nie_istnieje=0
         end;
         return nil;
      end;
    else
      return nil;
    end;
	local ns = page:inNamespace(0);
    local text = page:getContent();
    text=mw.ustring.gsub(text,"<%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->(.-)<%s-/%s-[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]%s->","%1");
    text=mw.ustring.gsub(text,"<%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->","");
    text=mw.ustring.gsub(text,"<%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->.-<%s-/%s-[Nn][Oo][Ww][Ii][Kk][Ii]%s->","");
    text=mw.ustring.gsub(text,"<%s-[Pp][Rr][Ee]%s->.-<%s-/%s-[Pp][Rr][Ee]%s->","");
    text=mw.ustring.gsub(text,"(<%s-[mM][aA][tT][hH]%s->.-<%s-/%s-[mM][aA][tT][hH]%s->)",""); 	
    while mw.ustring.match(text,"{{[^|{}]-|[^{}]-{{[^{}]-}}.-}}") do
        text=mw.ustring.gsub(text,"({{[^{}|]-|[^{}]-)({{[^{}]-}})(.-}})","%2%1%3");
    end;
    return text;
end;
function NumerWzoruIGrafiki2(tablist, nazwa_modolu, dec)
   nazwa_modolu=mw.ustring.gsub(nazwa_modolu,"_"," ");
   nazwa_modolu=transform(nazwa_modolu);
   if(not dec)then
   	 if(tablist.nazwa_modolu)then
   	   if(tablist.nazwa_modolu==nazwa_modolu)then
   	        return tablist; 
   	  end;
   	else
   		return nil;
   	end;
   end;
   if(tablist~=nil)then
      if(tablist.c~=nil)then
         for name, value in pairs(tablist.c) do
              if(name==nazwa_modolu)then return tablist;end;
         end;
      else 
        return nil; 
       end;
    else 
       return nil; 
   end;
    if(dec)then 
   	  if(not tablist.nazwa_modolu)then
   	    tablist.nazwa_modolu=nazwa_modolu;
   	  end;
   end;
    local text=LadujObjectPlik(nazwa_modolu,tablist);
    if(not text)then return nil;end;
    if(dec)then tablist.TOC[tablist.nazwa_modolu]=SpisTresciWstep(text,"");end;
    local iter=mw.ustring.gmatch(text,"{{[^{}]-}}");
    local licznik=1;
    local tablist2={};
    tablist2["Wzór"]={};
    tablist2["Grafika"]={};
    tablist2["Obiekt"]={};
    local data2=mw.loadData("Module:StronicowyParser/data2").wypowiedzi;
    for name,wypowiedz in pairs(data2)do
    	local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
    	tablist2[wypowiedz2]={};
    end;
    local list;
    local title=mw.title.makeTitle('',nazwa_modolu);
    local nazwa_strony_glownej;
    if((title.nsText=="")or(title.nsText=="Wikijunior"))then
    	nazwa_strony_glownej=mw.ustring.match(nazwa_modolu,"^([^/]+).-$");
    elseif((title.nsText=="Wikipedysta")or(title.nsText=="Dyskusja_wikipedysty"))then	
    	nazwa_strony_glownej=mw.ustring.match(nazwa_modolu,"^([^/:]+:[^/]+/[^/]+).-$");
    	if(not nazwa_strony_glownej)then return tablist;end;
    else return tablist;
    end;
    nazwa_strony_glownej=mw.ustring.gsub(nazwa_strony_glownej,"_"," ");
    if(nazwa_strony_glownej)then
    local prawd=false;
    if(#tablist.list==0)then 
     	local tab=lista2(tablist,nazwa_strony_glownej, dec);
     	if(tab)then 
     		if(dec)then
     	 		tablist.list[nazwa_strony_glownej]=tab[1];
     	 		tablist.lic=tab[2];
      		else 
      	 		if(tablist.list[nazwa_strony_glownej]==nil)then
    	 	    	tablist.list[nazwa_strony_glownej]=tab;
    	 		end;
    		end;
    	end;
       else
          prawd=false;
          for nazwa_strony_glownej_i,value in pairs(tablist.list) do
               if(nazwa_strony_glownej_i==nazwa_strony_glownej)then
                    prawd=true;
                    break;
               end;
          end;
          if(not prawd)then
    	    local tab=lista2(tablist,nazwa_strony_glownej, dec);
    	    if(tab)then
    	      if(dec)then 
    	 	      tablist.list[nazwa_strony_glownej]=tab[1];
    	 	      tablist.lic=tab[2];
    	      else 
    	 	      tablist.list[nazwa_strony_glownej]=tab;
    	      end;
    	    end;
          end;
       end;
    end;
    local linkwzor={};
    local linkgrafika={};
    local linkwypowiedz={};
    local linkobiekt={};
    for name,wypowiedz in pairs(data2)do
    	local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
    	linkwypowiedz[wypowiedz2]={};
    end;
    local znaczenia1;
    for znaczenia1 in iter do
    znaczenia1=mw.ustring.gsub(znaczenia1,"\n+","");	
    local tab=ParsujWywolanieSzablonu(znaczenia1);
    if((tablist.formatowanie==nil)and(dec))then
      if(tab)then
    	if(mw.ustring.match(tab[0],"^[Ss]tronaStart$")~=nil)then
           tablist.formatowanie=tab["formatowanie"];
    	elseif((mw.ustring.match(tab[0],"^[Ss]komplikowanaStronaStart$")~=nil)
    		or(mw.ustring.match(tab[0],"^[Ss]tronaStart2$")~=nil)
    		or(mw.ustring.match(tab[0],"^[Ss]tandardowaStronaStart$")~=nil)
    		or(mw.ustring.match(tab[0],"^[Pp]odstawowaStronaStart$")~=nil)    		
    		or(mw.ustring.match(tab[0],"^[Pp]rostaStronaStart$")~=nil)    		
    		)
    	    then
    	   tablist.formatowanie="tak";
    	end;
      end;
    end;
    local znak;
    local kod;
     local plik=mw.ustring.match(znaczenia1,"^{{:([^:|{}]-)}}$");
        if(plik==nil)then
          if(tab)then
            if((tab["automat"]==nil)or(tab["automat"]=="TRUE"))then
              if(mw.ustring.match(tab[0],"^[iI]ndexWzór$"))then
                   indexwzorgrafika(tab,tablist2, tablist, nazwa_modolu, "Wzór",dec);
               elseif(mw.ustring.match(tab[0],"^[[wW]zór$"))then
                   wzor(tab,tablist2, tablist, nazwa_modolu,"Wzór", dec);
               elseif((dec)and((mw.ustring.match(tab[0],"^[Ll]inkWzór$"))or((mw.ustring.match(tab[0],"^[Ll]inkObiekt$"))and(tab["typ"]=="wzór"))))then
                   linkowanie(tab,tablist, "Wzór", linkwzor);
               elseif(mw.ustring.match(tab[0],"^[iI]ndexGrafika$"))then
                   indexwzorgrafika(tab,tablist2, tablist, nazwa_modolu, "Grafika",dec);
               elseif((dec)and((mw.ustring.match(tab[0],"^[Ll]inkGrafika$"))or((mw.ustring.match(tab[0],"^[Ll]inkObiekt$"))and(tab["typ"]=="grafika"))))then
                   linkowanie(tab,tablist, "Grafika", linkgrafika);
               else
               	    local fa=true;
               	    local fa1=true;
               		if(mw.ustring.match(tab[0],"^[[wW]ypowiedzenie$"))then
               			fa1=false;
               			for name, wypowiedz in pairs(data2)do
               				local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
               				if(tab["Rodzaj"]==wypowiedz2)then
               					fa=false;
               					break;
               				end;
               			end;
               			if(fa)then
               				wzor(tab,tablist2, tablist, nazwa_modolu,"Obiekt", dec);
               			end;
            		elseif(mw.ustring.match(tab[0],"^[[Ll]inkObiekt$"))then
            			fa1=false;
               	        for name, wypowiedz in pairs(data2)do
               				local wypowiedz2=mw.ustring.lower(mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$"));
               				if(tab["typ"]==wypowiedz2)then
               					fa=false;
               					break;
               				end;
               			end;
               			if(fa)then
               			    linkowanie(tab,tablist, "Obiekt", linkobiekt);
               			end;
                	end;
                    if((not fa)or(fa1))then
               			for name,wypowiedz in pairs(data2) do
               	    		local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
               	    		local wypowiedz22="["..mw.ustring.upper(mw.ustring.match(wypowiedz,"^(%a)"))..
               	    	                       mw.ustring.lower(mw.ustring.match(wypowiedz,"^(%a)")).."]"..mw.ustring.match(wypowiedz,"^%w(%w*%a+%d*)$");
               	    	
               				if(((mw.ustring.match(tab[0],"^[wW]ypowiedzenie$"))and(tab["Rodzaj"]==wypowiedz2))
               					or(mw.ustring.match(tab[0],"^"..wypowiedz22.."$")))then
                				wzor(tab,tablist2, tablist, nazwa_modolu, wypowiedz2, dec);
                				break;
            				elseif((dec)and((mw.ustring.match(tab[0],"^[Ll]ink"..wypowiedz2.."$"))
            				       or((mw.ustring.match(tab[0],"^[Ll]inkObiekt$"))and(tab["typ"]==mw.ustring.lower(wypowiedz2)))))then
               					linkowanie(tab,tablist, wypowiedz, linkwypowiedz[wypowiedz2]);
               					break;
           					end;
           				end;
       	        	end;
               end;
             end;
           end;
         end; 
       end;
   if(dec)then
    	spr(tablist,tablist2,linkwzor,"Wzór","LinkWzór", nazwa_modolu);
    	spr(tablist,tablist2,linkgrafika,"Grafika","LinkGrafika", nazwa_modolu);
    	spr(tablist,tablist2,linkobiekt,"Obiekt","LinkObiekt", nazwa_modolu);
    	for name,wypowiedz in pairs(data2)do
     		 local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
        	spr(tablist,tablist2,linkwypowiedz[wypowiedz2],wypowiedz2,"Link"..wypowiedz2, nazwa_modolu);
    	end;
   end;
   tablist.c[nazwa_modolu]={};
   tablist.c[nazwa_modolu]=tablist2;
   return tablist;
end;
function spr(tablist,tablist2,link_gr_wz, co1, co2, nazwa_modolu)
if(tablist.d[co2]==nil)then
     for i1, value1 in ipairs(link_gr_wz) do
       local lo=true;
       for i2, value2 in ipairs(tablist2[co1]) do
               if(value1==value2[1])then
               	   lo=false;
                   break;
               end;
           end;
        if(lo==true)then
        	local s=mw.ustring.match(value1,"^%s*$");
        	if(s)then
        	    if(tablist.puste_parametry[co1]==nil) then
                  tablist.puste_parametry[co1][1]=0;
                end;
                return;
              elseif(tablist.d[co2]==nil)then
               tablist.d[co2]=0;
               return; 
           end;
        end;
      end;
    end;
end;
function NumerWzoruIGrafiki3(tablist)
	 local data2=mw.loadData("Module:StronicowyParser/data2").wypowiedzi;
     for nazwa_modolu, val in pairs(tablist.c) do
    	local i2=1;local fa=false;
    	local title=mw.title.makeTitle('',nazwa_modolu);
    	local nazwa_strony_glownej;
    	if((title.nsText=="")or(title.nsText=="Wikijunior"))then
    		nazwa_strony_glownej=title.rootText;
    	elseif((title.nsText=="Wikipedysta")or(title.nsText=="Dyskusja_wikipedysty"))then 
    		nazwa_strony_glownej=mw.ustring.match(nazwa_modolu,"^([^/:]+:[^/]+/[^/]+).-$");
    	else
    		return tablist;
    	end;
    	nazwa_strony_glownej=mw.ustring.gsub(nazwa_strony_glownej,"_"," ");
    	if(nazwa_strony_glownej)then
        	 if(tablist.list)then 
     			if(tablist.list[nazwa_strony_glownej])then
     	   			for s, value in ipairs(tablist.list[nazwa_strony_glownej]) do
     					if(value~=nazwa_modolu)then i2=i2+1; else fa=true;break;end;
     				end;
 	    		end;
 	    	end;
     		if(fa)then
     		   tablist=spr2(tablist,nazwa_modolu,"Wzór",i2);
               tablist=spr2(tablist,nazwa_modolu,"Grafika",i2);
               tablist=spr2(tablist,nazwa_modolu,"Obiekt",i2);
               for name,wypowiedz in pairs(data2)do
     			   local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
        		   tablist=spr2(tablist,nazwa_modolu,wypowiedz2,i2);
    		  end;
        elseif(not fa)then
                tablist=spr2(tablist,nazwa_modolu,"Wzór",0);
                tablist=spr2(tablist,nazwa_modolu,"Grafika",0);
                tablist=spr2(tablist,nazwa_modolu,"Obiekt",0);
                for name,wypowiedz in pairs(data2)do
     				local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
        		    tablist=spr2(tablist,nazwa_modolu,wypowiedz2,0);
    		   end;
     	    end;
    	else
    		tablist=spr2(tablist,nazwa_modolu,"Wzór",0);
    		tablist=spr2(tablist,nazwa_modolu,"Grafika",0);	
    		tablist=spr2(tablist,nazwa_modolu,"Obiekt",0);
    		for name,wypowiedz in pairs(data2)do
     			local wypowiedz2=mw.ustring.match(wypowiedz,"^(%w*%a+)%d*$");
        		tablist=spr2(tablist,nazwa_modolu,wypowiedz2,0);
    		end;
    	end;
  end;
    return tablist;
end;
function spr2(tablist, nazwa_modolu, co, i2)
   for i, value in ipairs(tablist.c[nazwa_modolu][co]) do
       local boo=false;
		for s=1, i-1,1 do
   	      if(value[1]==tablist.c[nazwa_modolu][co][s][1])then
              if(not tablist.d[co])then
                tablist.d[co]=0;
                value[2]=nil;
              end;
              if(tablist.c[nazwa_modolu][co][s][1])then tablist.c[nazwa_modolu][co][s][2]=nil;end;
              boo=true;
           end;
        end;
      if(not boo)then
      	if(i2>0)then
      	   value[2]=i2.."."..i;
      	elseif(i2==0)then
      		value[2]=i
       elseif(tablist.blad_wewnetrzny==nil)then
            tablist.blad_wewnetrzny=0
      	end;	
      end;
   end;
   return tablist;
end;
function NumerObiektu(frame, co)
  local plik=transform(frame.args[1]);
  plik=mw.ustring.gsub(plik,"_"," ");
  local d=mw.loadData("Moduł:StronicowyParser/data").c;
  local nam=nil;
  local _value=d.c[plik];
  if(_value)then
     for i, value in ipairs(_value[co]) do
      	if(value[1]==frame.args[2])then
             return value[2];
        end;
     end;   
     return nil;
   else
   	 return nil;
   end;
end;
function NumerObiektu2(frame,co)
  if(frame.args[3]~="TRUE") then return frame.args[2];end;	
  local title=mw.title.getCurrentTitle();
  if((title.nsText=="")or(title.nsText=="Wikijunior")or(title.nsText=="Wikipedysta")or(title.nsText=="Dyskusja_wikipedysty"))then
		local fc=NumerObiektu(frame,co);
		if(not fc)then  
    		return "Niedopasowany uchwyt: "..frame.args[2];
		else
    		return fc;
		end;
	else
		return frame.args[2];
	end;
end;
function p.NumerObiektu(frame)
   return NumerObiektu2(frame,"Obiekt");
end;
function p.NumerWzoru(frame)
  return NumerObiektu2(frame,"Wzór");
end;
function p.NumerGrafiki(frame)
  return NumerObiektu2(frame,"Grafika");
end;
function p.NumerTwierdzenia(frame)
  return NumerObiektu2(frame,"Twierdzenie");
end;
function p.NumerHipotezy(frame)
  return NumerObiektu2(frame,"Hipoteza");
end;
function p.NumerLematu(frame)
  return NumerObiektu2(frame,"Lemat");
end;
function p.NumerKryterium(frame)
  return NumerObiektu2(frame,"Kryterium");
end;
function p.NumerDowodu(frame)
  return NumerObiektu2(frame,"Dowód");
end;
function p.NumerPostulatu(frame)
  return NumerObiektu2(frame,"Postulat");
end;
function p.NumerPostulatow(frame)
  return NumerObiektu2(frame,"Postulaty");
end;
function p.NumerDefinicji(frame)
  return NumerObiektu2(frame,"Definicja");
end;
function p.NumerZadania(frame)
  return NumerObiektu2(frame,"Zadanie");
end;
function p.NumerCwiczenia(frame)
  return NumerObiektu2(frame,"Ćwiczenie");
end;
function p.NumerProcedury(frame)
  return NumerObiektu2(frame,"Procedura");
end;
function p.formatowanie()
	local d=mw.loadData('Moduł:StronicowyParser/data');
	return d.c.formatowanie;
end;
function p.WstawKategorie(frame)
  local d=mw.loadData('Moduł:StronicowyParser/data');
  if(not d.c.kodkategorie)then return "";end;
  local kod1=mw.ustring.gsub(frame.args[2]..":"..frame.args[1],"_"," ");
  local string1="";
  local kod2=d.c.kodkategorie;
  if(kod1==kod2)then
   		if(d.c.d["Wzór"])then
              if(d.c.d["Wzór"]==0)then
                    string1=string1.."[[Kategoria: Strony ze wzorami ze złymi uchwytami]]";
              end;
    	end;
    	if(d.c.d["Grafika"])then
            if(d.c.d["Grafika"]==0)then
                    string1=string1.."[[Kategoria: Strony z grafikami ze złymi uchwytami]]";
            end;
    	end;
    	if(d.c.d["Obiekt"])then
            if(d.c.d["Obiekt"]==0)then
                    string1=string1.."[[Kategoria: Strony z obiektami ze złymi uchwytami]]";
            end;
    	end;
    	if(d.c.d["LinkWzór"])then
            if(d.c.d["LinkWzór"]==0)then
                    string1=string1.."[[Kategoria: Strony ze złymi uchwytami do wzorów]]";
            end;
    	end;
    	if(d.c.d["LinkGrafika"])then
            if(d.c.d["LinkGrafika"]==0)then
                    string1=string1.."[[Kategoria: Strony ze złymi uchwytami do grafik]]";                 
            end;
    	end;
    	if(d.c.d["LinkObiekt"])then
            if(d.c.d["LinkObiekt"]==0)then
                    string1=string1.."[[Kategoria: Strony ze złymi uchwytami do obiektów]]";                 
            end;
    	end;
    	if(d.c.brak_spisu_tresci_do_korzystanych_modoluch)then 
        	if(d.c.brak_spisu_tresci_do_korzystanych_modoluch==0)then
            	string1=string1.."[[Kategoria: Strony z brakującymi spisami treści do korzystanych modułów]]";
    		end;
    	end;
    	if(d.c.brak_spisu_tresci_do_doloczanych_modoluch)then 
        	if(d.c.brak_spisu_tresci_do_doloczanych_modoluch==0)then
            	string1=string1.."[[Kategoria: Strony z brakującymi spisami treści do dołączanych modułów]]";
        	end;
    	end;
    	if(d.c.nieprawidlowe_nazwy_strony_glownej_do_korzystanych_modolow_ksiazek)then 
        	if(d.c.nieprawidlowe_nazwy_strony_glownej_do_korzystanych_modolow_ksiazek==0)then
            	string1=string1.."[[Kategoria: Strony z nieprawidłowymi nazwami podstron strony głównej korzystanych modułów książek]]";
        	end;
    	end;
    	if(d.c.nieprawidlowe_nazwy_strony_glownej_do_doloczanych_modolow_ksiazek)then 
        	if(d.c.nieprawidlowe_nazwy_strony_glownej_do_doloczanych_modolow_ksiazek==0)then
            	string1=string1.."[[Kategoria: Strony z nieprawidłowymi nazwami podstron strony głównej dołączonych modułów książek]]";
        	end;
    	end;       
    	if(d.c.strona_nie_istnieje)then 
        	if(d.c.strona_nie_istnieje==0)then
            	string1=string1.."[[Kategoria: Strony z nieistniejącymi dołączonymi modułami]]";
        	end;
    	end;
    	if(d.c.blad_wewnetrzny)then 
        	if(d.c.blad_wewnetrzny==0)then
            	string1=string1.."[[Kategoria: Strony z błędami wewnętrznymi skryptów]]";
        	end;
    	end;
    	if(d.c.puste_parametry["Wzór"][1])then
        	if(d.c.puste_parametry["Wzór"][1]==0)then 
        		string1=string1.."[[Kategoria: Strony z nazwami stron dołączonych w odnośnikach do wzorów składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.puste_parametry["Wzór"][2])then
        	if(d.c.puste_parametry["Wzór"][2]==0)then 
          		string1=string1.."[[Kategoria: Strony z nazwami uchwytów w odnośnikach do wzorów składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.puste_parametry["Grafika"][1])then
        	if(d.c.puste_parametry["Grafika"][1]==0)then 
        		string1=string1.."[[Kategoria: Strony z nazwami stron dołączonych w odnośnikach do grafik składające się ze znaków odstępu lub pustego ciągu]"; 
        	end;
    	end;
    	if(d.c.puste_parametry["Grafika"][2])then
        	if(d.c.puste_parametry["Grafika"][2]==0)then 
        		   string1=string1.."[[Kategoria: Strony z nazwami uchwytów w odnośnikach do grafik składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.puste_parametry["Obiekt"][1])then
        	if(d.c.puste_parametry["Obiekt"][1]==0)then 
        		string1=string1.."[[Kategoria: Strony z nazwami stron dołączonych w odnośnikach do obiektów składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.puste_parametry["Obiekt"][2])then
        	if(d.c.puste_parametry["Obiekt"][2]==0)then 
          		string1=string1.."[[Kategoria: Strony z nazwami uchwytów w odnośnikach do obiektów składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;	
    	if(d.c.niepelne_zestawy_parametrow_linkowania["Wzór"])then
        	string1=string1.."[[Kategoria: Strony z szablonami do linkowania do wzorów z niepełnym zestawem parametrów]]";
    	end;
    	if(d.c.niepelne_zestawy_parametrow_linkowania["Grafika"])then
        	  string1=string1.."[[Kategoria: Strony z szablonami do linkowania do grafik z niepełnym zestawem parametrów]]";
    	end;    
    	if(d.c.niepelne_zestawy_parametrow_linkowania["Obiekt"])then
        	  string1=string1.."[[Kategoria: Strony z szablonami do linkowania do obiektów z niepełnym zestawem parametrów]]";
    	end;
	end;
	local data2=mw.loadData("Module:StronicowyParser/data2");
	local wypowiedzi=data2.wypowiedzi;
	local p=0;
	for name,value in ipairs(wypowiedzi)do
		p=p+1;
	end;
	local wypowiedzi_z=data2.wypowiedzi_z;
	local wypowiedzi_do=data2.wypowiedzi_do;
    for i=1,p,1 do
    	local wypowiedzi2=mw.ustring.match(wypowiedzi[i],"^(%w*%a+)%d*$");
    	if(d.c.d[wypowiedzi2])then
            if(d.c.d[wypowiedzi2]==0)then
                    string1=string1.."[[Kategoria: Strony z "..wypowiedzi_z[i].." w ramkach ze złymi uchwytami]]";
            end;
    	end;
    	if(d.c.d["Link"..wypowiedzi2])then
            if(d.c.d["Link"..wypowiedzi2]==0)then
                    string1=string1.."[[Kategoria: Strony ze złymi uchwytami do "..wypowiedzi_do[i].." w ramkach]]";                 
            end;
    	end;
    	if(d.c.puste_parametry[wypowiedzi2][1])then
        	if(d.c.puste_parametry[wypowiedzi2][1]==0)then 
        		string1=string1.."[[Kategoria: Strony z nazwami stron dołączonych w odnośnikach do "..wypowiedzi_do[i].." w ramkach składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.puste_parametry[wypowiedzi2][2])then
        	if(d.c.puste_parametry[wypowiedzi2][2]==0)then 
          		string1=string1.."[[Kategoria: Strony z nazwami uchwytów w odnośnikach do "..wypowiedzi_do[i].." w ramkach składające się ze znaków odstępu lub pustego ciągu]]"; 
        	end;
    	end;
    	if(d.c.niepelne_zestawy_parametrow_linkowania[wypowiedzi2])then
        	  string1=string1.."[[Kategoria: Strony z szablonami do linkowania do "..wypowiedzi_do[i].." w ramkach z niepełnym zestawem parametrów]]";
    	end; 
    end;
    return string1;
end;
function ParsujWywolanieSzablonu(znaczenia1)
   local str=mw.ustring.match(znaczenia1,"^{{[^{}|]-}}$");
   if(not str)then 
   	  local parametry1={};
   	  parametry1[0]=mw.ustring.match(znaczenia1,"^{{%s*([^{}|]-)%s*|.-}}$")
   	  if(parametry1[0])then
   	      return parametry(znaczenia1,parametry1,"");
   	  else return nil;end;
   	else
   	  	local parametry1={};
   	  	parametry1[0]=mw.ustring.match(znaczenia1,"^{{%s*([^{}|]-)%s*}}$");
   	  	if(parametry1[0])then
   	  	   return parametry1;
   	  	else return nil;end;
   end;
end;
function parametry(znaczenia1, parametry1, nekst)
   if(parametry1)then
	local nekst2=mw.ustring.match(znaczenia1,"^{{[^{}|]-|"..nekst.."%s*([^{}|]-)%s*|.*}}$");
	if(nekst2)then
		if(nekst~="")then
		    parametry1=zbierz_parametry(parametry1, nekst2);
		    if(parametry1)then
		       return parametry(znaczenia1,parametry1, nekst.."%s*[^{}|]-%s*|");
		    else
		       return nil;
		    end;
		else
		   parametry1=zbierz_parametry(parametry1, nekst2);
		   if(parametry1)then
		      return parametry(znaczenia1,parametry1, "%s*[^{}|]-%s*|");
		   else
		   	  return nil;
		   end;
		end;
	end;
	nekst2=mw.ustring.match(znaczenia1,"^{{[^{}|]-|"..nekst.."%s*([^{}|]-)%s*}}$")
	if(nekst2)then
		   return zbierz_parametry(parametry1, nekst2);
	else 
		return nil;
	end;
  end;
  return nil;
end;
function zbierz_parametry(zwykle, str)
   local str2=mw.ustring.match(str,"^%s*([^|{}=]-)%s*$");
   if(str2)then
	  zwykle[#zwykle+1]=str2;
	  return zwykle;
   else
	 str21=mw.ustring.match(str,"^%s*([^|{}=]-)%s*=%s*[^|{}]-%s*$");
	 str22=mw.ustring.match(str,"^%s*[^|{}=]-%s*=%s*([^|{}]-)%s*$");
	 if((str21)and(str22))then
		for p, valuep in pairs(zwykle) do
			if(type(p)=="string")then
		      if(p==str21)then return nil; end;
		    else
		    	local p=zwykle[tonumber(str21)];
		    	if(p)then return nil;end;
		    end;
		end;
		if(not mw.ustring.match(str21,"^%d+$"))then
		   zwykle[str21]=str22;
		   return zwykle;
		else
		   zwykle[#zwykle+1]=str22
		end;
	 else
	 	return nil;
     end;
  end;
 return nil;
end;
return p;