Moduł:StronicowyParser

Template-info.png Dokumentacja modułu [stwórz] [odśwież]
local p = {}
function p.SpreparowanyWikikodStrony(nazwa_modulu,dokumentacja,inkludowana)
   local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst")
   return stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,dokumentacja,inkludowana);
end;
p["DaneUkładuAutonawigacji"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame,tabela_listy_danych_analizy_ksiazki);
	local spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame,tabela_listy_danych_analizy_ksiazki);
	if(not spis)then return nil;end;
	return tab_lista_artykulow_w_ksiazce.nazwa_glownego_spisu,tab_lista_artykulow_w_ksiazce.tab_inne_spisy,tab_lista_artykulow_w_ksiazce.dodatkowe_artykuly;
end;
p["SpisyTreści"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=p["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki);
	local tabela={};
	tabela.spis_tresci=nazwa_glownego_spisu;
	tabela.inne_spisy=tab_inne_spisy;
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local czy_json=parametry_modul.CzyTak(PobierzParametr("json"));
	return czy_json and mw.text.jsonEncode(tabela,mw.text.JSON_PRESERVE_KEYS) or tabela;
end;
p["CzySpisTreści"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local spisy=p["SpisyTreści"](frame,tabela_listy_danych_analizy_ksiazki);
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local artykul=PobierzParametr("artykuł");
	----
	if(artykul)then
		artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",};
		if((spisy.spis_tresci)and(parametry_modul.TypeTable(spisy.spis_tresci))and((spisy.spis_tresci[1]==artykul)or(spisy.spis_tresci[2]==artykul))or(spisy.spis_tresci==artykul))then
			return "tak";
		else
			if((spisy.inne_spisy)and(parametry_modul.TypeTable(spisy.inne_spisy)))then
				for _,spis_tresci in ipairs(spisy.inne_spisy)do
					if((parametry_modul.TypeTable(spis_tresci))and((spis_tresci[1]==artykul)or(spis_tresci[2]==artykul))or(spis_tresci==artykul))then
						return "tak";
					end;
				end;
			end;
		end;
	end;
end;
p["TekstRozdziałuStrony"]=function(frame)
	local stronicowyparser_rozdzialy=require("Module:StronicowyParser/Rozdziały");
	return stronicowyparser_rozdzialy.TekstRozdzialuStrony(frame);
end;
p["KtóraSekcjaStrony"]=function(frame)
	local stronicowyparser_rozdzialy=require("Module:StronicowyParser/Rozdziały");
	return stronicowyparser_rozdzialy.KtoraSekcjaStrony(frame);
end;
p["ZwróćSekcjęNagłówkaStrony"]=function(frame)
	local stronicowyparser_rozdzialy=require("Module:StronicowyParser/Rozdziały");
	return stronicowyparser_rozdzialy.ZwrocSekcjeNaglowkaStrony(frame);
end;
p["NastępnyArtykuł"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;

  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local parametry_modul=require("Module:Parametry");
  local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
  
  local numer=tonumber(args[1]) or 0;
  local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  
  local nazwa_artykulu_z_naglowkiem_match=mw.ustring.match(nazwa_artykulu,"^([^#]*)#.*$");
  local nazwa_artykulu_z_opcja_naglowek=(not naglowek) and nazwa_artykulu_z_naglowkiem_match or nazwa_artykulu;
  
  local nadstrona_artykulu=(numer>0) and stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu,numer) or nil;
  
  local i=0;
  local tab_artykul={};
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
  			local artykul_w_bazie;local artykul_bez_naglowka_w_bazie;local artykul_z_naglowkiem_w_bazie;
  			local czy_table=parametry_modul.TypeTable(artykul_w_bazie_element[1]);
  			if(czy_table)then
  				artykul_w_bazie=artykul_w_bazie_element[1][1];
  			else
  				artykul_w_bazie=artykul_w_bazie_element[1];
  			end;
  			local artykul_z_naglowkiem_w_bazie_match=mw.ustring.match(artykul_w_bazie,"^([^#]*)#.*$");
  			artykul_bez_naglowka_w_bazie=artykul_z_naglowkiem_w_bazie_match or artykul_w_bazie;
  			if(naglowek or not tab_artykul[artykul_bez_naglowka_w_bazie])then
  				if(not naglowek)then
  					tab_artykul[artykul_bez_naglowka_w_bazie]=true;
  				 end
  				if(not naglowek)then
  						artykul_z_naglowkiem_w_bazie=artykul_bez_naglowka_w_bazie;
  				else
  					artykul_z_naglowkiem_w_bazie=artykul_w_bazie;
  				end;
  				local numer_artykulu_w_bazie;
  				if(numer>0)then
					numer_artykulu_w_bazie=stronicowyparser_potrzebne_modul.PoziomAdresu(artykul_bez_naglowka_w_bazie);
				end;
		    	local function Nastepny()
		    		 if(not nazwa)then
                		return 	artykul_z_naglowkiem_w_bazie;
  	   				end;
  	   				if(czy_table)then
  	   					return artykul_w_bazie[1][2];
  	   				else
  	   					return 	artykul_z_naglowkiem_w_bazie;
  	   				end;
		    	end;
  	   			if(i==1)then 
  	   				if(numer>0)then
  	   					local nadstrona_artykulu_w_bazie=stronicowyparser_potrzebne_modul.NazwaNadStrony(artykul_bez_naglowka,numer);
  	   					if((numer==numer_artykulu_w_bazie)and(nadstrona_artykulu==nadstrona_artykulu_w_bazie))then
  	                    	 return Nastepny();
  	   					end;
  	   				else
  	   					return Nastepny();
  	   				end;
  	   			else
  				    if((not naglowek)and(artykul_bez_naglowka_w_bazie==nazwa_artykulu_z_opcja_naglowek)
  				    	            or(((naglowek) and ((nazwa_artykulu_z_naglowkiem_match and artykul_z_naglowkiem_w_bazie_match)or(not nazwa_artykulu_z_naglowkiem_match and not artykul_z_naglowkiem_w_bazie_match)))
  				    	                                            and (artykul_z_naglowkiem_w_bazie==nazwa_artykulu)
  				    	                                            ))then
          	    		i=1;
          	    	end;
  				end;
  			end;
  		end;
  	end;
  end;
  if(i==1)then
  	   return "";
  end;
  return "(błąd)";
end;
p["PoprzedniArtykuł"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local parametry_modul=require("Module:Parametry");
  local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
  
  local numer=tonumber(args[1]) or 0;
  local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  
  local nazwa_artykulu_z_naglowkiem_match=mw.ustring.match(nazwa_artykulu,"^([^#]*)#.*$")
  local nazwa_artykulu_z_opcja_naglowek=(not naglowek) and nazwa_artykulu_z_naglowkiem_match or nazwa_artykulu;
  
  local nadstrona_artykulu=(numer>0) and stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu,numer) or nil;
  
  local artykul;
  local tab_artykul={};
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie in ipairs(tab_lista[2])do
  			local artykul_z_naglowkiem_w_bazie;local artykul_bez_naglowka_w_bazie;
  			local czy_table=parametry_modul.TypeTable(artykul_w_bazie[1]);
  			if(czy_table)then
  				artykul_z_naglowkiem_w_bazie=artykul_w_bazie[1][1];
  			else
  				artykul_z_naglowkiem_w_bazie=artykul_w_bazie[1];
  			end;
  			local artykul_z_naglowkiem_w_bazie_match=mw.ustring.match(artykul_z_naglowkiem_w_bazie,"^([^#]*)#.*$")
  			artykul_bez_naglowka_w_bazie=artykul_z_naglowkiem_w_bazie_match or artykul_z_naglowkiem_w_bazie;
  			if(naglowek or not tab_artykul[artykul_bez_naglowka_w_bazie])then
  				if(not naglowek)then
  					tab_artykul[artykul_bez_naglowka_w_bazie]=true;
  				end;
  				if((not naglowek)and(artykul_bez_naglowka_w_bazie==nazwa_artykulu_z_opcja_naglowek)
  						             or(((naglowek) and ((nazwa_artykulu_z_naglowkiem_match and artykul_z_naglowkiem_w_bazie_match)or(not nazwa_artykulu_z_naglowkiem_match and not artykul_z_naglowkiem_w_bazie_match)))and(artykul_z_naglowkiem_w_bazie==nazwa_artykulu)))then
  					if(not artykul)then return "";end;
  					local czy_table_artykul=parametry_modul.TypeTable(artykul);
  					if(czy_table_artykul)then
  						if(not nazwa)then 
  							if(naglowek)then
	  							return artykul[1];
  							end;
  							artykul,_=mw.ustring.gsub(artykul[1],"^([^#]+)#(.*)$","%1");
  							return artykul;
  						else
  							return artykul[2];
  						end;
  					else
  					   if(naglowek)then
	  						return artykul;
  						end;
  						artykul,_=mw.ustring.gsub(artykul,"^([^#]+)#(.*)$","%1");
  						return artykul;
  					end;
  				end
  				if(numer>0)then
					local numer_artykulu_poprzedni=stronicowyparser_potrzebne_modul.PoziomAdresu(artykul_bez_naglowka_w_bazie);
					local nadstrona_artykulu_w_bazie=stronicowyparser_potrzebne_modul.NazwaNadStrony(artykul_bez_naglowka_w_bazie,numer);
  					if((numer==numer_artykulu_poprzedni)and(nadstrona_artykulu==nadstrona_artykulu_w_bazie))then
  						artykul=artykul_w_bazie[1];
  					end;
		    	else
		    		artykul=artykul_w_bazie[1];
  				end;
  			end;
  		end;
  	end;
  end;
  return "(błąd)";
end; 
p["PoziomNazwyArtykułu"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local parametry_modul=require("Module:Parametry");
  local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
  return stronicowyparser_potrzebne_modul.PoziomAdresu(nazwa_artykulu);
end;
p["PierwszyArtykuł"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local parametry_modul=require("Module:Parametry");
  local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie in ipairs(tab_lista[2])do
  			if(not nazwa)then
  	   			local artykul=parametry_modul.TypeTable(artykul_w_bazie[1]) and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  	   		    return (not naglowek) and mw.ustring.gsub(artykul,"^([^#]*)#(.*)$","%1") or artykul;
  	   		else
  	   			return parametry_modul.TypeTable(artykul_w_bazie[1]) 
  	   			           and artykul_w_bazie[1][2] 
  	   			              or ((not naglowek) and mw.ustring.gsub(artykul_w_bazie[1],"^([^#]*)#(.*)$","%1") or artykul_w_bazie[1]);
  	   		end;
  		end;
  	end;
  end;
end;
p["OstatniArtykuł"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local parametry_modul=require("Module:Parametry");
  local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  
  local ostatni_artykul;
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie in ipairs(tab_lista[2])do
  			if(not nazwa)then
  	   			ostatni_artykul=parametry_modul.TypeTable(artykul_w_bazie[1]) and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  	   		else
  	   			ostatni_artykul=parametry_modul.TypeTable(artykul_w_bazie[1]) and artykul_w_bazie[1][2] or artykul_w_bazie[1];
  	   		end;
  		end;
  	end;
  end;
  if(ostatni_artykul)then 
  	  return (not naglowek) and mw.ustring.gsub(ostatni_artykul,"^([^#]*)#(.*)$","%1") or ostatni_artykul;
  end;
  return "(błąd)";
end;
p["PomiędzyArtykuł"]=function(frame)
   local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
   local val=stronicowyparser_potrzebne_modul:ObliczeniaInformacje(frame);
   if(not val)then return "(błąd)";end;
   local element=stronicowyparser_potrzebne_modul:PomiedzyArtykul(frame) or nil;
   if(not element)then return "(błąd)";end;
     
   local args=stronicowyparser_potrzebne_modul:Args(frame);
   local parametry_modul=require("Module:Parametry");
   local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
   local czy_table=parametry_modul.TypeTable(element);
   local element=czy_table and element[1] or element;
  
   if(not nazwa)then return (not naglowek) and mw.ustring.gsub(element,"^([^#]*)#(.*)$","%1") or element;end;
   return czy_table and element[2] or ((not naglowek) and mw.ustring.gsub(element,"^([^#]*)#(.*)$","%1") or element);
end;
p["LosowyArtykuł"]=function(frame)
    local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
    local val=stronicowyparser_potrzebne_modul:ObliczeniaInformacje(frame);
    if(not val)then return "(błąd)";end;
    local element=stronicowyparser_potrzebne_modul:LosowyArtykul(frame);
    if(not element)then return "(błąd)";end;
       
    local args=stronicowyparser_potrzebne_modul:Args(frame);
    local parametry_modul=require("Module:Parametry");
    local nazwa=parametry_modul.CzyTak(args["nazwa"]);

    local czy_table=parametry_modul.TypeTable(element);
    local element=czy_table and element[1] or element;
   
    if(not nazwa)then return mw.ustring.gsub(element,"^([^#]*)#(.*)$","%1") or element;end;
    return czy_table and element[2] or mw.ustring.gsub(element,"^([^#]*)#(.*)$","%1") or element;
end;
p["SubNazwaNadArtykułu"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;

  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local numer=tonumber(args[1]) or 0;
  local krok=tonumber(args[2])or 1;
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
  return stronicowyparser_potrzebne_modul.SubNazwaNadStrony(nazwa_artykulu,numer,krok);
end;
p["NazwaNadArtykułu"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;

  local args=stronicowyparser_potrzebne_modul:Args(frame);
  local numer=tonumber(args[1]) or 1;
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
  return stronicowyparser_potrzebne_modul.SubNazwaNadStrony(nazwa_artykulu,1,numer);
end;

p["NazwaLinkuArtykułu"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
    
  local ostatni_artykul;
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie in ipairs(tab_lista[2])do
  			if(type(artykul_w_bazie[1])~="table")then
  				if(artykul_w_bazie[1]==nazwa_artykulu)then
  					return artykul_w_bazie[1];
  				end;
  			elseif(artykul_w_bazie[1][1]==nazwa_artykulu)then
  				return artykul_w_bazie[1][2];
  			end;
  		end;
	 end;
  end;
  return "(błąd)";
end;
p["LiczbaArtykułówKsiążki"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  local parametry_modul=require("Module:Parametry");
  local args=stronicowyparser_potrzebne_modul:Args();
  local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  local tab_artykul=(not naglowek) and {} or nil;
  local i=0;
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
	if(tab_lista[2])then
  		for _,artykul_w_bazie in ipairs(tab_lista[2])do
  			local nazwa_artykulu=artykul_w_bazie[1][1] or artykul_w_bazie[1];
  			local artykul=(not naglowek) and mw.ustring.gsub(nazwa_artykulu,"^([^#]*)#(.*)$","%1") or nazwa_artykulu;
  			if(naglowek or not tab_artykul[artykul])then
  				if(not naglowek)then
  					tab_artykul[artykul]=true;
  				end;
  				i=i+1;
  			end;
  		end;
	 end;
  end;
  return i;
end;
p["LiniaArtykułuKsiążki"]=function(frame)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
	local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
	if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
	local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame);
	
	local parametry_modul=require("Module:Parametry");
	local args=stronicowyparser_potrzebne_modul:Args();
	local czy_analiza=parametry_modul.CzyTak(args["analiza"]);
	
	for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
		if(tab_lista[2])then
  			for _,artykul_w_bazie in ipairs(tab_lista[2])do
  				local artykul_ksiazki=artykul_w_bazie[1][1] or artykul_w_bazie[1];
  				if(artykul_ksiazki==nazwa_artykulu)then
  					if(not czy_analiza)then
  						return artykul_w_bazie[3];
  					else
  						local function AnalizaLiniiArtykolow()
  							local czy_spis_tresci=mw.ustring.match(artykul_w_bazie[3],"({{%s*[Ss]pisTreści%s*|[^{}]*}})");
  							if(czy_spis_tresci)then
  								local szablonowe_modul=require("Module:Szablonowe");
  								local parametry_szablony,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsujWywołanieSzablonu"](czy_spis_tresci);
  								local nazwa_artykulu=parametry_szablony[1];
  								------
  								local nazwa_ksiazki=stronicowyparser_potrzebne_modul:PelnaNazwaKsiazki(frame);
    							local pelna_nazwa_strony=(nazwa_artykulu=="")and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu;
    							local link= "[["..pelna_nazwa_strony.."|"..nazwa_artykulu.."]]";	
    							local linia2,_=mw.ustring.gsub(artykul_w_bazie[3],"({{%s*[Ss]pisTreści%s*|[^{}]*}})",link);
    							return linia2;
    						else
    					  		local czy_spis_tresci=mw.ustring.match(artykul_w_bazie[3],"({{%s*[Ss]ekcja[%s_]+referencyjna%s*|[^{}]*}})");
    					  		if(czy_spis_tresci)then
    					  			local linia2,_=mw.ustring.gsub(artykul_w_bazie[3],"({{%s*[Ss]ekcja[%s_]+referencyjna%s*|)","%1astandardowo=tak|");
    					  			return linia2;
    					  		else
    					  			local nazwa_ksiazki=stronicowyparser_potrzebne_modul:PelnaNazwaKsiazki(frame);
    					  			local function adresuj_linki(a,b)
    					  				return "[["..nazwa_ksiazki.."/"..a..(b or "").."]]";
    					  			end;
    					  			local artykul=mw.ustring.gsub(artykul_w_bazie[3],"%[%[%s*/([^%[%]|]-)/*%s*(|.*)%]%]",adresuj_linki);
    					  			artykul=mw.ustring.gsub(artykul,"%[%[%s*/([^%[%]|]-)/*%s*%]%]",adresuj_linki);
    					  			return artykul;
    					  		end;
    					  	end;
  						end;
				        return AnalizaLiniiArtykolow();
  				   end
  				end;
  			end;
		end;
	end;
	local uzupelniaj_sekcje_artykulow=parametry_modul.CzyTak(args["uzupełniaj sekcje artykułów"]);
	if(uzupelniaj_sekcje_artykulow)then
		if(mw.ustring.match(nazwa_artykulu,"^[^#]*#(.+)$"))then
			local naglowek=mw.ustring.match(nazwa_artykulu,"^[^#]*#(.+)$");
			if(parametry_modul["CzyTakCiąg"](naglowek))then
				local pelna_nazwa_ksiazki=stronicowyparser_potrzebne_modul:PelnaNazwaKsiazki(frame)
				return "[["..pelna_nazwa_ksiazki..((nazwa_artykulu~="")and("/"..nazwa_artykulu) or "").."|"..naglowek.."]]";
			end;
		end;
	end;
end;
p["AktualnaKsiążka"]=function(frame,__error)
   local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
   stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
   stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
   return stronicowyparser_potrzebne_modul:PelnaNazwaKsiazki(frame) or ((not __error)and "(błąd)" or nil);
end;
p["NazwaAktualnyArtykuł"]=function(frame,__error)
   local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
   stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
   stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
   return stronicowyparser_potrzebne_modul:NazwaArtykuluKsiazki(frame) or ((not __error)and "(błąd)" or nil);
end;
p["PobierzNumerNagłówka"]=function(frame)
	local stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul=require("Module:StronicowyParser/NumerLubNazwaArtykułówKsiążek");
	return stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul["PobierzNumerNagłówka"](frame);
end;
p["PobierzNazwęNagłówka"]=function(frame)
	local stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul=require("Module:StronicowyParser/NumerLubNazwaArtykułówKsiążek");
	return stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul["PobierzNazwęNagłówka"](frame);
end;
p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul=require("Module:StronicowyParser/NumerLubNazwaArtykułówKsiążek");
	local wartosc,_=stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul["PobierzNumerArtykułu"](frame,tabela_listy_danych_analizy_ksiazki);
	return wartosc;
end;
p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul=require("Module:StronicowyParser/NumerLubNazwaArtykułówKsiążek");
	local wartosc,_=stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul["PobierzNazwęArtykułu"](frame,tabela_listy_danych_analizy_ksiazki);
	return wartosc;
end;
p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json)
	local stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul=require("Module:StronicowyParser/NumerLubNazwaArtykułówKsiążek");
	return stronicowyparser_numer_lub_nazwa_artykulow_ksiazek_modul["PobierzDaneKsiążki"](frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json);
end;
p["ListaNagłówkówKsiążki"] = function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  
  local stronicowyparser_obiekty=mw.loadData("Module:StronicowyParser/obiekty");
  
  local parametry_modul=require("Module:Parametry");
  local odczyt_tab_rozdzialow_glownych_spisow_tresci_ksiazek=stronicowyparser_obiekty.tab_rozdzialow_glownych_spisow_tresci_ksiazek;
  local tab_rozdzialow_glownych_spisow_tresci_ksiazek=parametry_modul["KopiujTabelęElementów"](odczyt_tab_rozdzialow_glownych_spisow_tresci_ksiazek);
  setmetatable(tab_rozdzialow_glownych_spisow_tresci_ksiazek,parametry_modul.metatablica_dla_wartosci_tablicy_wedlug_malych_liter);
  
  local czy_sa_rozdzialy=nil;
   
  local pelna_nazwa_ksiazki=stronicowyparser_potrzebne_modul:PelnaNazwaKsiazki(frame);
   
  local args=stronicowyparser_potrzebne_modul:Args();
  
  local wikikod="";
  local linki_modul=require("Module:Linki");
   
  for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
       local rozdzial=tab_lista[1][1];
       local numer_rozdzialu=tab_lista[1][2][1];
       if(numer_rozdzialu>0)then
    		if(not tab_rozdzialow_glownych_spisow_tresci_ksiazek[rozdzial])then
        		wikikod=((wikikod~="")and (wikikod.."  —  ") or "")..linki_modul["Link wewnętrzny"]{["strona"]=pelna_nazwa_ksiazki,["nagłówek"]=rozdzial,["nazwa"]=rozdzial,["bez znaczników"]=args["bez znaczników"],["bez przetwarzania"]=args["bez przetwarzania"],};
    		end;
    		czy_sa_rozdzialy=true;
    	end;
   end;
   if(not czy_sa_rozdzialy)then return "(błąd: brak rozdziałów)";end;
   return wikikod;
end;
p["ArtykułSubst"] = function(frame)
	 local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;	
	 
	 local nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
	 local nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
	 local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
	 local nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;

     local parametry_modul=require("Module:Parametry");
	 local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
     local pobierz_nazwa_artykulu=PobierzParametr("pobierz pełną nazwę artykułu");
     local pobierz_adres_ksiazki=PobierzParametr("pobierz pełną nazwę książki");
     local czy_pobierz_pelna_nazwa_artykulu=parametry_modul.CzyTak(pobierz_nazwa_artykulu);
     local czy_pobierz_pelna_nazwa_ksiazki=parametry_modul.CzyTak(pobierz_adres_ksiazki);
     if(czy_pobierz_pelna_nazwa_artykulu and not czy_pobierz_pelna_nazwa_ksiazki)then
     		return ((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and "/" or "")..nazwa_artykulu;
     elseif(not czy_pobierz_pelna_nazwa_artykulu and czy_pobierz_pelna_nazwa_ksiazki)then
     	return ((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki;
     elseif(czy_pobierz_pelna_nazwa_artykulu and czy_pobierz_pelna_nazwa_ksiazki)then
     	return "(błąd)";
     end;
     local nazwa_strony=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and "/" or "")..nazwa_artykulu;
     local nazwy_modul=require("Module:Nazwy");
     if(nazwa_strony==nazwy_modul["PEŁNANAZWASTRONY"]())then
     	local blad_modul=require("Module:Błąd");
     	return blad_modul.error{args={[1]="Próbowano załadować bieżącą stronę.",},};
     end;
	 local szablonowe_modul=require("Module:Szablonowe");
	 local szablon=szablonowe_modul.NazwaSzablonu(nazwa_strony);
     local zawartosc=frame:expandTemplate{title=szablon,args={},};
     --Tworzenie ramek div--
     local divramka=mw.html.create('div');
     divramka:addClass('artykułsubst');
     local poddivramka=mw.html.create('div');
     poddivramka:wikitext(nazwa_strony);
     poddivramka:addClass("adres");
     poddivramka:css("display","none");
     divramka:node(poddivramka);
     local divzawartosc=mw.html.create('div');
     divzawartosc:addClass("zawartość");
     divzawartosc:css("display","block");
     divzawartosc:wikitext(zawartosc);
     divramka:node(divzawartosc)
     --Zwracanie ramki div--
     return tostring(divramka:allDone());
end;
p["KsiążkaSubst"] = function(frame)
    local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;	
    local str=tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"];
    return str;
end;
p["StronaSubst"] = function(frame)
	local parametry_modul=require("Module:Parametry");
	local args=parametry_modul.PobierzArgsParametry(frame,true);
	local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
	local tab_stronasubst=tabela_listy_danych_analizy_ksiazki["StronaSubst"];
	if(not tab_stronasubst)then return;end;
	local pierwszy,_=mw.ustring.gsub(args[1],"[%s_]+"," ");
	local tab_strona=tab_stronasubst[pierwszy];
	if(not tab_strona)then return;end;
	local link=args["link"];
	local czy_link=parametry_modul.CzyTak(link);
	local stronasubst=tab_strona[(czy_link and "tak" or "")];
	return stronasubst;
end;
p["CzyStronęNumerować"] = function(frame)
	local strona=frame.args[1];
	local nazwy_modul=require("Module:Nazwy");
	strona=nazwy_modul["PEŁNANAZWASTRONY"](strona);
	
	local pudelko_modul=require("Module:Pudełko");
	if(strona==pudelko_modul["Strona główna tego projektu"](frame))then
		return;
	end;
	if(strona==pudelko_modul["Strona główna dla dzieci tego projektu"](frame))then
		return;
	end;
	if(mw.ustring.match(strona,"^Szablon:SG/"))then
		return;
	end;
	
	local zbiory={
		["Szablon:Nowe podręczniki miesiąca/Zwycięzca"]=true,
		["Wikibooks:Polecane książki"]=true,
		["Szablon:Wyróżnienia książek miesiąca/Wyróżniony"]=true,
	}
	if(zbiory[strona])then
		return;
	end;
	if(mw.ustring.match(strona,"^Szablon:Polecane książki/")
		or(mw.ustring.match(strona,"^Szablon:Nowe podręczniki miesiąca/"))
		  or(mw.ustring.match(strona,"^Szablon:Wyróżnienia książek miesiąca/"))
	)then
	   return;
    end;
	return "tak";
end;
function p.HNumer(frame)
	local parametry_modul=require("Module:Parametry");
	local p=parametry_modul.PobierzFrameEwentualnieParent(frame);
    if((not p) or (not p.args[1]))then 
    	local blad_module=require("Module:Błąd");
    	local frame2=p:newChild{args={[1]="Podano złe parametry w szablonie: [[Szablon:HLiczba]].",["tag"]="span",},}
    	blad_module.error(frame2);
    	return;
    end;
    local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
    local naglowek,licznik=stronicowyparser_rozdzialy_modul.PodajRozdzial(p.args[1]);
    local id2,_=mw.ustring.gsub(naglowek,"^[%s_]","");
    id2,_=mw.ustring.gsub(id2,"[%s_]$","");
    id2,_=mw.ustring.gsub(id2,"[%s_]","_");
    local id3,_=mw.ustring.gsub(mw.uri.encode(mw.text.encode(id2),"WIKI"),"(%%)",".");
    if(licznik>6)then 
    	local id=p.args["id"];
    	local styl=p.args["styl"];
    	local klasa=p.args["klasa"];
    	local atrybuty=p.args["atrybuty"];
    	local parametry_modul=require("Module:Parametry");
       	return "<h6"..(parametry_modul.CzyTak(id)and " id=\""..id.."\"" or "")
       			            ..(parametry_modul.CzyTak(styl)and " style=\""..styl.."\"" or "")
       			            .." class=\"mw-hnumber mw-hnumber-"..licznik..((parametry_modul.CzyTak(klasa)) and (" "..klasa) or "").."\""
       			            ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "")
       			            ..">"..((id2~=id3) and ("<span id=\""..id3.."\"></span>") or "").."<span id=\""..id2.."\" class=\"mw-headline\">"..naglowek.."</span></h6>";
    elseif(licznik<1)then
       	local blad_module=require("Module:Błąd");
    	local frame2=p:newChild{args={[1]="Nie podano nagłówka w szablonie: [[Szablon:HLiczba]].",["tag"]="span",},}
    	blad_module.error(frame2);
    else
    	local id=p.args["id"];
    	local styl=p.args["styl"];
    	local klasa=p.args["klasa"];
    	local atrybuty=p.args["atrybuty"];
    	local parametry_modul=require("Module:Parametry");
       	return "<h"..licznik..(parametry_modul.CzyTak(id)and " id=\""..id.."\"" or "")
       			            ..(parametry_modul.CzyTak(styl)and " style=\""..styl.."\"" or "")
       			            .." class=\""..((parametry_modul.CzyTak(klasa)) and klasa or "").."\""
       			            ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "")..">"..((id2~=id3) and ("<span id=\""..id3.."\"></span>") or "").."<span id=\""..id2.."\" class=\"mw-headline\">"..naglowek.."</span></h"..licznik..">";	
   end;
end;
function p.TOC(frame,czy_rozciagnij,gdy_pusty_spis_tresci)
	local nazwy_modul=require("Module:Nazwy");
    local parametry_modul=require("Module:Parametry");
    local ksiazkowe_modul=require("Module:Książkowe");
    local html_modul=require("Module:Html");
	
	local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
	local uzyskana_nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
	local uzyskana_nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
	local uzyskana_nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
	local uzyskana_nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
	local pelna_nazwa_strony=((uzyskana_nazwa_przestrzeni~="") and (uzyskana_nazwa_przestrzeni..":") or "")..((uzyskana_nazwa_przestrzeni_ksiazki~="") and (uzyskana_nazwa_przestrzeni_ksiazki.."/") or "")..uzyskana_nazwa_ksiazki..((uzyskana_nazwa_artykulu~="")and ("/"..uzyskana_nazwa_artykulu) or "");
	
	local args=parametry_modul.PobierzArgsParametry(frame,true);
	local nazwa_ksiazki;local nazwa_artykulu;
	if(args[1])then
		nazwa_artykulu=args[1];
		nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
		nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
   	    nazwa_artykulu=parametry_modul["Odstępy"]{[1]=nazwa_artykulu,[2]="tak",};
   	    local techniczne_modul=require("Module:Techniczne");
		nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
	end;
	if(args[2])then
		nazwa_ksiazki=args[2];
		nazwa_ksiazki=html_modul.DecodeHtml(nazwa_ksiazki,true);
		nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_ksiazki);
   	    nazwa_ksiazki=parametry_modul["Odstępy"]{[1]=nazwa_ksiazki,[2]="tak",};
   	    local techniczne_modul=require("Module:Techniczne");
		nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=pelna_nazwa_strony,};
	end;
	
	local nazwa_artykulu=parametry_modul.CzyTak(nazwa_artykulu) and nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](pelna_nazwa_strony);
	
	local czy_nazwa_ksiazki=parametry_modul.CzyTak(nazwa_ksiazki);
	local podana_nazwa_przestrzeni_nazw=czy_nazwa_ksiazki and (nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki)) or ksiazkowe_modul["NazwaPrzestrzeni"](pelna_nazwa_strony);
	local podana_nazwa_jednostki=czy_nazwa_ksiazki and (nazwy_modul["NAZWAKSIĄŻKI"](nazwa_ksiazki)..((nazwa_artykulu~="")and ("/"..nazwa_artykulu) or "")) or ksiazkowe_modul["NazwaArtykułu"](pelna_nazwa_strony);
	
	local args_nowe={
		["nazwa przestrzeni nazw"] = podana_nazwa_przestrzeni_nazw,
		["nazwa jednostki"] = podana_nazwa_jednostki,
	};
	
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki{args=args_nowe};
	local spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki{args=args_nowe};
	
	local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self();
	if((not tab_lista_zmiennych_w_artykule)and(not tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza))then 
		local blad_modul=require("Module:Błąd");
		return blad_modul.error{tab="span",tekst="Nie znalazłem takiej książki."};
	end;
	
	local czy_nie_aktualny=(
		                       (self_zmienna.nazwa_przestrzeni_podana~=self_zmienna.nazwa_przestrzeni)
		                       or(self_zmienna.nazwa_przestrzeni_ksiazki_podana~=self_zmienna.nazwa_przestrzeni_ksiazki)
		                        	or(self_zmienna.nazwa_ksiazki_podana~=self_zmienna.nazwa_ksiazki)
		                        		or (self_zmienna.nazwa_artykulu_podana~=self_zmienna.nazwa_artykulu)
		                  );
	
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	if ((tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza)or(tab_lista_zmiennych_w_artykule and tab_lista_zmiennych_w_artykule.TOC or nil)) then
    	local spis_tresci_artykulu=stronicowyparser_potrzebne_modul.TOC(frame,tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza or tab_lista_zmiennych_w_artykule.TOC, czy_nie_aktualny,czy_rozciagnij);
    	return spis_tresci_artykulu;
    elseif(not gdy_pusty_spis_tresci)then
    	local spis_tresci_artykulu=stronicowyparser_potrzebne_modul.TOC(frame,nil,czy_nie_aktualny,czy_rozciagnij);
    	return spis_tresci_artykulu;
   end;
end;
function p.WykazModulow(frame,czy_rozciagnij)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	stronicowyparser_potrzebne_modul:ParametryPudelkaKsiazki(frame);
	local spis=stronicowyparser_potrzebne_modul:TabelaListyArtykulowKsiazki(frame);
	if(not spis)then return nil;end;
	local self_zmienna=stronicowyparser_potrzebne_modul:Self();
	local nazwa_ksiazki=self_zmienna.nazwa_ksiazki;
	local nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_ksiazki;
	local nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni;
	
	local parametry_modul=require("Module:Parametry");
	local spis_ksiazkowy=parametry_modul.CzyTak(frame.args["spis książkowy"]);
	local spis_rzeczy=parametry_modul.CzyTak(frame.args["spis rzeczy"]);
	local tylko_naglowki=parametry_modul.CzyTak(frame.args["nagłówki"]);
	local wysokosc=frame.args["wysokość"];
	local wykaz_modulow_w_liscie="";
	local i=1;
	for _,tab_artykul in ipairs(spis)do
		if(tab_artykul[2])then
			for _,tab_pozycja in ipairs(tab_artykul[2])do
				if(type(tab_pozycja[1])~="table")then
					sformatowana_nazwa_artykulu,_=mw.ustring.gsub(tab_pozycja[1],"_"," ");
				else
					sformatowana_nazwa_artykulu,_=mw.ustring.gsub(tab_pozycja[1][1],"_"," ");
				end;
				local id=tab_pozycja[4]
				if(not tylko_naglowki or id)then
					if(not spis_ksiazkowy)then
						wykaz_modulow_w_liscie=((wykaz_modulow_w_liscie~="") and (wykaz_modulow_w_liscie.."\n") or "")..'<li>[['..((not spis_rzeczy or not id)and (((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/") or "#")..sformatowana_nazwa_artykulu.."|<span class=\"tocnumber\">"..i.."</span><span class=\"toctext\">"..sformatowana_nazwa_artykulu..'</span>]]</li>';
					else
						wykaz_modulow_w_liscie=((wykaz_modulow_w_liscie~="") and (wykaz_modulow_w_liscie.."\n") or "")..'{{SpisZw||[['..((not spis_rzeczy or not id)and (((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/") or "#")..sformatowana_nazwa_artykulu.."|"..sformatowana_nazwa_artykulu.."]]|"..i.."|100%}}";
					end;
					i=i+1;
				end;
			end;
		end;
	end;
	if(wykaz_modulow_w_liscie=="")then return nil;end;
	if(not spis_ksiazkowy)then
		wykaz_modulow_w_liscie="<ul>"..wykaz_modulow_w_liscie.."</ul>";
		wykaz_modulow_w_liscie='<div class="toc_ogólnie_spis toc_wykaz" style="width:100%;max-height:400px;overflow:auto;">'..wykaz_modulow_w_liscie.."</div>";
		wykaz_modulow_w_liscie='{{Tabela nawigacyjna|styl=width:'..(czy_rozciagnij and "100%" or "auto")..';font-size:14px;line-height:1.2em;background-color:white;|tytuł=<div style="font-size:14px;line-height:1.2em;background-color:white;text-align:left;white-space:nowrap;">Wykaz modułów w książce</div>|spis='..wykaz_modulow_w_liscie..'|funkcja=UkrytaWikitabelowaListaMenu}}';
	else
	     wykaz_modulow_w_liscie="<div class=\"toc_wykaz mw-overflow-y\" style=\""..(wysokosc and ("max-height:"..wysokosc..";overflow:auto;") or "").."border:solid #aaa 1px;padding:10px;width:auto;box-sizing:border-box;background-color:white;\">"..wykaz_modulow_w_liscie.."</div>";
	end;
    local rozwiniety_wikikod=frame:preprocess(wykaz_modulow_w_liscie);
	return rozwiniety_wikikod;
end;
function p.NazwaModulu()
	local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
	local nazwy_np_modul=mw.loadData('Moduł:Nazwy/Np');
	local nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
	if(nazwa_artykulu==nil)then 
		 return "[["..nazwy_np_modul.Category..": Nie można wygenerować nazwy strony]]";
     else
	    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(frame,czy_rozciagnij)
  local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
  local menu_z_licencja;
  local nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  local nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
  local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
  local licencja=tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki].licencja;
  if(licencja)then
	if(licencja[1])then
		local frame={};
		frame.args={licencja[1],licencja[2],licencja[3],licencja[4],licencja[5],licencja[6],licencja[7]};
		local ramka_z_licencja='<div style="margin-left:0px;padding:3px;width:100%;height:auto;box-sizing:border-box;">'..p.Wstep_do_licencji(frame)..'</div>';
	    menu_z_licencja='{{Tabela nawigacyjna|styl=width:'..(czy_rozciagnij and "100%" or "auto")..';font-size:14px;line-height:1.2em;background-color:white;|tytuł=<div style="font-size:14px;line-height:1.2em;background-color:white;text-align:left;white-space:nowrap;">Licencja</div>|spis='..ramka_z_licencja..'|funkcja=StatycznaWikitabelowaListaMenu}}';
	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.Autor(frame)
  local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
  local nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
  local nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
  local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
  local licencja=tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki].licencja;
  if(tabela_listy_danych_analizy_ksiazki.licencja)then
		return licencja[1];
  end;
end;
function p.PierwszaStrona(frame)
	local prawe_menu="";
	local parametry_modul=require("Module:Parametry");
	local czy_rozciagnij=parametry_modul.CzyTak(frame.args["rozciągnij"])
	if(parametry_modul.CzyTak(frame.args[1]))then 
		prawe_menu='<div style="margin-top:5px;font-size:1.9em;line-height:25px;text-align:left;">'..p.NazwaModulu()..'</div><hr style=\"margin:5px 0\"/>';
    end;
	if(parametry_modul.CzyTak(frame.args[2]))then 
		 local licencja=p.Licencja(frame,czy_rozciagnij);
		 if(licencja~=nil)then
		 	prawe_menu=prawe_menu..licencja;
		 else
    		local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
  	    	local uchwyt_strony=mw.title.getCurrentTitle();
  	    	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
  	    	local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"]();
  	    	local element_zdania_kategorii=(nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Main)and "na stronach głównych, książek" 
  	    	            or ((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Wikijunior)and "na stronach głównych, książek dla dzieci" 
  	    	            	 or ((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.User)and "na stronach głównych, książek użytkowników" 
  	    	            	 	or((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Wikibooks)and "na stronach głównych, książek brudnopisu projektu" 
  	    	            	 	   or "na stronach głównych, publikacji")));
  	    	local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;           	 	   
    		local kategoria_braku_licencji=(not tabela_listy_danych_analizy_ksiazki.korzystane_strona_glowna_nie_istnieje)and"[["..nazwy_np_modul.Category..": Brak licencji, "..element_zdania_kategorii.."]]" or "";
    		prawe_menu=prawe_menu..kategoria_braku_licencji;
	   end;
	end;
	if(parametry_modul.CzyTak(frame.args[3]))then 
		 local wykaz_artykulow=p.WykazModulow(frame,czy_rozciagnij);
		 if(wykaz_artykulow~=nil)then
		 	prawe_menu=prawe_menu.."<hr style=\"margin:5px 0\"/>"..wykaz_artykulow;
	    end;
	end;
	if(parametry_modul.CzyTak(frame.args[4]))then 
		
		 local spis_tresci=p.TOC(frame,czy_rozciagnij,true);
		 if(spis_tresci~=nil)then
		 	prawe_menu=prawe_menu.."<hr style=\"margin:5px 0\"/>"..spis_tresci;
	    end;
	end;
	local wysokosc=frame.args["wysokość"];
	return "<div style=\"padding:10px;border: solid #aaa 1px;background-color:white;box-sizing:border-box;width:700px;\"><div class=\"pierwsza_strona mw-overflow-y\" style=\"max-height:"..(wysokosc or "100%")..";overflow:auto;height:100%;box-sizing:border-box;\"><div style=\"display:flex;flex-direction:column;width:auto;height:auto;box-sizing:border-box;\">"..prawe_menu.."</div></div></div>";
end;
function p.SpisTresci(frame)
	local parametry_modul=require("Module:Parametry");
    local args=parametry_modul.PobierzArgsParametry(frame);
    local nazwa_artykulu=args["artykuł"] or args[1] or "Przykładowy artykuł";
    local nazwa_ksiazki=args["książka"] or args[2];
    
    local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
    if(not parametry_modul.CzyTak(nazwa_ksiazki))then
		local uzyskana_nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
		local uzyskana_nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki;
		local uzyskana_nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
		nazwa_ksiazki=((uzyskana_nazwa_przestrzeni~="") and (uzyskana_nazwa_przestrzeni..":") or "")..((uzyskana_nazwa_przestrzeni_ksiazki~="") and (uzyskana_nazwa_przestrzeni_ksiazki.."/") or "")..uzyskana_nazwa_ksiazki;
    end;
    local brak=(nazwa_artykulu and mw.ustring.match(nazwa_artykulu,"[|<>{}%[%]]") or nil) or (nazwa_ksiazki and mw.ustring.match(nazwa_ksiazki,"[|<>{}%[%]]") or nil);
    if(brak~=nil)then
    	local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
    	local nazwa_przestrzeni_nazw_strony=require("Module:Nazwy")["NAZWAPRZESTRZENI"]();
  	    local element_zdania_kategorii=(nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Main)and "artykułów," 
  	            or ((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Wikijunior)and "artykułów dla dzieci," 
  	    	        or ((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.User)and "stron użytkowników," 
  	    	        	or ((nazwa_przestrzeni_nazw_strony==nazwy_np_modul.Wikibooks)and "stron brudnopisu projektu," 
  	    	        	    or "stron,")));
    	return "[["..nazwy_np_modul.Category..":Nazwy "..element_zdania_kategorii.." w spisach treści, zawierają niedozwolone znaki]]";
    end;
    local html_modul=require("Module:Html");
    local nazwy_modul=require("Module:Nazwy");
    
    local ksiazkowe_modul=require("Module:Książkowe");
    local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_ksiazki,tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki,tabela_listy_danych_analizy_ksiazki.nazwa_artykulu);
    local techniczne_modul=require("Module:Techniczne");
    nazwa_ksiazki=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](html_modul.DecodeHtml(nazwa_ksiazki,true));
    nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_ksiazki,[2]=nazwa_modulu,};
    
    local nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](html_modul.DecodeHtml(nazwa_artykulu,true));
    nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
    
    local pelna_nazwa_strony=((not nazwa_artykulu) or (nazwa_artykulu==""))and nazwa_ksiazki or nazwa_ksiazki.."/"..nazwa_artykulu;
    
    local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_strony);
    if(strona)then
    	pelna_nazwa_strony=strona;
    	nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony);
    else
    	nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony);
    end;
    local tekst_artykulu=p.SpreparowanyWikikodStrony(pelna_nazwa_strony);
    local nazwa=args["nazwa"] or args[3];
    local nazwa_strony_artykulu=parametry_modul.CzyTak(nazwa) and nazwa or nazwa_artykulu;
    local dodatek=args["dodatek"] or args[4];
    if(not tekst_artykulu)then
    	if(nazwa_artykulu~="")then
	    	return "\n"..mw.ustring.rep("=",6).."<span style=\"color:red\">[["..pelna_nazwa_strony.."|"..nazwa_strony_artykulu.."]]</span>"..mw.ustring.rep("=",6).."\n";
	    else
	    	 local blad_modul=require("Module:Błąd");
	    	 return blad_modul.error{args={[1]="Wywołano szablon z argumentem pierwszym pustym.",tag="span",}};
	    end;
    else
       local twor_spisu_tresci="[["..pelna_nazwa_strony.."|"..nazwa_strony_artykulu.."]]"..(((dodatek)and(dodatek~="")) and (" "..dodatek) or "");
       twor_spisu_tresci=mw.ustring.rep("=",6)..twor_spisu_tresci..mw.ustring.rep("=",6).."\n";
       local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
       local ulozenia_w_menu_spisu_tresci=stronicowyparser_zbieraniedanychstron_modul:SpisTresciWstep(tekst_artykulu, pelna_nazwa_strony);	
       local atrybuty="style=\"margin-left:20px\"";
       
       local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
       local toc=stronicowyparser_potrzebne_modul.TOCSilnik(ulozenia_w_menu_spisu_tresci, atrybuty);
       local limit=args["limit"];
       local czy_limit=parametry_modul.CzyTak(limit);
       return '<div class="toc_ogólnie_spis toc_artykuł toclimit '..(czy_limit and ("toclimit-"..limit) or "")..'">\n'..twor_spisu_tresci..(toc and toc or "")..'</div>';
    end;
end;
function IteratorFunkcja()
	local obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
	local tabela_wypowiedzi=obiekty_modul.tablica_obiektow;
	local licznik=1;
	return function()
		local tabela_obiektu=tabela_wypowiedzi[licznik];
		if(not tabela_obiektu)then return nil;end;
		local wartosc1=tabela_obiektu[1];
		local wartosc2=tabela_obiektu[4];
		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)
		local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
		return stronicowyparser_potrzebne_modul.NumerObiektu(frame,nazwa_obiektu);
	end;
end;
p["AnalizujSzablonemStronicowymArtykuł"]=function(frame)
	local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
    return "";
end;
function p.formatowanie()
	local tabela_listy_danych_analizy_ksiazki=mw.loadData('Module:StronicowyParser/informacje').tablica_zebranych_danych_ksiazkowych;
	return tabela_listy_danych_analizy_ksiazki.formatowanie;
end;
function p.WstawKategorie(frame)
  local stronicowyparser_kategorie_modul=require("Module:StronicowyParser/Kategorie");
  return stronicowyparser_kategorie_modul.WstawKategorie(frame);
end;
function p.CzyStronaSubst(frame,pelnanazwastrony,czy_wymusic)
	if(czy_wymusic)then
		local nazwy_modul=require("Module:Nazwy");
		local pelnanazwastronyaktualnej=nazwy_modul["PEŁNANAZWASTRONY"]();
		if(pelnanazwastrony~=pelnanazwastronyaktualnej)then
                local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
                local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
                return stronicowyparser_stronasubst_modul.AnalizaStronaSubst(nil,pelnanazwastrony,TakFun,NieFun,nil);
        end;
	end;
	local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
	if(tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
		return "tak";
	end;
	return "";
end;
return p;