Przejdź do zawartości

Moduł:StronicowyParser

Z Wikibooks, biblioteki wolnych podręczników.
 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;
function p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu_aktualna_czy_biezaca,inkludowana)
	local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
	local tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nil,nazwa_modulu_aktualna_czy_biezaca,inkludowana,nil);
	return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony;
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:ParametryKonteneraWoluminu(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:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
	if(not spis)then return nil;end;
	return tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu,tab_lista_artykulow_w_ksiazce.tab_inne_spisy,tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
p["SpisyTreści"]=function(frame,tabela_listy_danych_analizy_ksiazki,bez_json)
	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;
	tabela.dodatkowe_strony_woluminu=dodatkowe_artykuly;
	local parametry_modul=require("Module:Parametry");
	local PobierzParametr=parametry_modul.PobierzParametr(frame);
	local czy_json=((not bez_json)and(parametry_modul.CzyTak(PobierzParametr("json")))) and true or false;
	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,true);
	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.TekstPoNapisieWprowadzeniaTekstuStrony(frame);
end;
p["KtóraSekcjaStrony"]=function(frame)
	local stronicowyparser_rozdzialy=require("Module:StronicowyParser/Rozdziały");
	return stronicowyparser_rozdzialy.NumerSekcjiStrony(frame);
end;
p["ZwróćSekcjęNagłówkaStrony"]=function(frame)
	local stronicowyparser_rozdzialy=require("Module:StronicowyParser/Rozdziały");
	return stronicowyparser_rozdzialy.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame);
end;
p["NastępnyArtykuł"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local iterator=stronicowyparser_potrzebne_modul.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
	if (not iterator)then return "(błąd)";end;
	local args=stronicowyparser_potrzebne_modul:Args();
	---
	local parametry_modul=require("Module:Parametry");
	local nazwa=parametry_modul.CzyTak(args["nazwa"]);
	local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
	local ksiazka=parametry_modul.CzyTak(args["książka"]);
	local analizowana=parametry_modul.CzyTak(args["analizowana"]);
	local numer=tonumber(args[1]) or 0;
	  
	local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(frame);
	local html_modul=require("Module:Html");
	local nazwa_artykulu_bez_naglowka=html_modul["NazwaStronyAdresu"](nazwa_artykulu,true);
	local nazwa_artykulu=(not naglowek) and nazwa_artykulu_bez_naglowka or nazwa_artykulu;
	----
	local juz_tak=false;
	local nadstrona_artykulu=(numer>0) and stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu_bez_naglowka,numer) or nil;
	----
	for nazwa_artykulu_w_bazie,nazwa_linku_artykulu_w_bazie,przekierowanie_artykulu_w_bazie,pelna_nazwa_ksiazki_w_bazie in iterator do
		local nazwa_artykulu_w_bazie2=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,naglowek);
		local function Nastepny()
		   if(not nazwa)then
                return stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana);
  	   		end;
  	   			return 	nazwa_linku_artykulu_w_bazie or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana);
		end;
		if(juz_tak)then 
  	   		if(numer>0)then
  	   			local nazwa_artykulu_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_artykulu_w_bazie,false);
				local numer_artykulu_w_bazie=stronicowyparser_potrzebne_modul.PoziomAdresu(nazwa_artykulu_bez_naglowka_w_bazie);
  	   			local nadstrona_artykulu_w_bazie=stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu_bez_naglowka_w_bazie,numer);
  	   			if((numer==numer_artykulu_w_bazie)and(nadstrona_artykulu==nadstrona_artykulu_w_bazie))then
  	                  return Nastepny();
  	   			end;
  	   			return "";
  	   		else
  	   			return Nastepny();
  	   		end;
  	   	else
  			if(nazwa_artykulu_w_bazie2==nazwa_artykulu)then
        		juz_tak=true;
          	end;
  		end;
	end;
	if(juz_tak)then
		return "";
	else
		return "(błąd)";
	end;
end;
p["PoprzedniArtykuł"]=function(frame,tabela_listy_danych_analizy_ksiazki)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local iterator=stronicowyparser_potrzebne_modul.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
	if (not iterator)then return "(błąd)";end;
	local args=stronicowyparser_potrzebne_modul:Args();
	---
	local parametry_modul=require("Module:Parametry");
	local nazwa=parametry_modul.CzyTak(args["nazwa"]);
	local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
	local ksiazka=parametry_modul.CzyTak(args["książka"]);
	local analizowana=parametry_modul.CzyTak(args["analizowana"]);
	local numer=tonumber(args[1]) or 0;
	  
	local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(frame);
	local html_modul=require("Module:Html");
	local nazwa_artykulu_bez_naglowka=html_modul["NazwaStronyAdresu"](nazwa_artykulu,true);
	local nazwa_artykulu=(not naglowek) and nazwa_artykulu_bez_naglowka or nazwa_artykulu;
	----
	local juz_tak=false;
	local nadstrona_artykulu=(numer>0) and stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu_bez_naglowka,numer) or nil;
	----
	local artykul="";
	----
	for nazwa_artykulu_w_bazie,nazwa_linku_artykulu_w_bazie,przekierowanie_artykulu_w_bazie,pelna_nazwa_ksiazki_w_bazie in iterator do
		local nazwa_artykulu_w_bazie2=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,naglowek);
  	   	if(numer>0)then
  	   		local nazwa_artykulu_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_artykulu_w_bazie,false);
			local numer_artykulu_w_bazie=stronicowyparser_potrzebne_modul.PoziomAdresu(nazwa_artykulu_bez_naglowka_w_bazie);
  	   		local nadstrona_artykulu_w_bazie=stronicowyparser_potrzebne_modul.NazwaNadStrony(nazwa_artykulu_bez_naglowka_w_bazie,numer);
  	   		if((numer==numer_artykulu_w_bazie)and(nadstrona_artykulu==nadstrona_artykulu_w_bazie))then
  	   			 if(nazwa_artykulu_w_bazie2==nazwa_artykulu)then
  	   				return artykul;
  	   			 else
  	                artykul=(not nazwa) and stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana) or (nazwa_linku_artykulu_w_bazie or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana));
  	   			 end;
            else
            	artykul="";
  	   		end;
  	   	else
  	   		if(nazwa_artykulu_w_bazie2==nazwa_artykulu)then
  	   			return artykul;
  	   		else
  	   			artykul=(not nazwa) and stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana) or (nazwa_linku_artykulu_w_bazie or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(nazwa_artykulu_w_bazie2,pelna_nazwa_ksiazki_w_bazie,przekierowanie_artykulu_w_bazie,ksiazka,analizowana));
  	   		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:ParametryKonteneraWoluminu(frame);
	local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(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:NazwaPodStronyWoluminu(frame);
	return stronicowyparser_potrzebne_modul.PoziomAdresu(nazwa_artykulu);
end;
p["PierwszyArtykuł"]=function(frame)	
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local iterator=stronicowyparser_potrzebne_modul.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
	if (not iterator)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_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
    local ksiazka=parametry_modul.CzyTak(args["książka"]);
	local analizowana=parametry_modul.CzyTak(args["analizowana"]);
	
	local args=stronicowyparser_potrzebne_modul:Args();
	for tab_artykul,nazwa_linku,przekierowanie,pelna_nazwa_ksiazki in iterator do
		local artykul=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,czy_naglowek);
		if(not nazwa)then return stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki,przekierowanie,ksiazka,analizowana);end;
		return nazwa_linku or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki,przekierowanie,ksiazka,analizowana);
	end;
	return "(błąd)";
end;
p["OstatniArtykuł"]=function(frame)	
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	local iterator=stronicowyparser_potrzebne_modul.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
	if (not iterator)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 ksiazka=parametry_modul.CzyTak(args["książka"]);
	local analizowana=parametry_modul.CzyTak(args["analizowana"]);
	
	local ostatni_artykul=nil;
	for tab_artykul,nazwa_linku,przekierowanie,pelna_nazwa_ksiazki in iterator do
		local artykul=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,czy_naglowek);
		if(not nazwa)then
			ostatni_artykul=stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki,przekierowanie,ksiazka,analizowana);
		else
			ostatni_artykul=nazwa_linku or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki,przekierowanie,ksiazka,analizowana);
		end;
	end;
	if(ostatni_artykul)then return ostatni_artykul;end;
	return "(błąd)";
end;
p["PomiędzyNagłówek"]=function(frame)
	 local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	 return stronicowyparser_potrzebne_modul:LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(frame);
end;
p["LosowyNagłówek"]=function(frame)
	 local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	 return stronicowyparser_potrzebne_modul:LosowyNapisProwadzeniaTekstuWoluminu(frame);
end;
p["PierwszyNagłówek"]=function(frame)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	return stronicowyparser_potrzebne_modul:PierwszyNapisWprowadzeniaTekstu(frame);
end;
p["OstatniNagłówek"]=function(frame)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	return stronicowyparser_potrzebne_modul:OstatniNapisWprowadzeniaTekstu(frame);
end;	
p["LiczbaNagłówkówSpisu"]=function(frame)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	return stronicowyparser_potrzebne_modul:LiczbaNapisowaWprowadzeniaTekstu(frame);
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 args=stronicowyparser_potrzebne_modul:Args(frame);
   local parametry_modul=require("Module:Parametry");
   local ksiazka=parametry_modul.CzyTak(args["książka"]);
   local analizowana=parametry_modul.CzyTak(args["analizowana"]);
   local element=stronicowyparser_potrzebne_modul:LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(frame) or nil;
   if(not element)then return "(błąd)";end;
     
   local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
   local czy_table=parametry_modul.TypeTable(element);
  
   if(not nazwa)then return czy_table and stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(element[1],element[4],element[3],ksiazka,analizowana) or ((not czy_table) and element or "(błąd)");end;
   return czy_table and (element[2] or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(element[1],element[4],element[3],ksiazka,analizowana)) or ((not czy_table) and element or "(błąd)");
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 args=stronicowyparser_potrzebne_modul:Args(frame);
    local parametry_modul=require("Module:Parametry");
    local ksiazka=parametry_modul.CzyTak(args["książka"]);
	local analizowana=parametry_modul.CzyTak(args["analizowana"]);
    local element=stronicowyparser_potrzebne_modul:LosowaStronaWoluminu(frame);
    if(not element)then return "(błąd)";end;
       
    local nazwa=parametry_modul.CzyTak(args["nazwa"]);
  
	local czy_table=parametry_modul.TypeTable(element);
  
	if(not nazwa)then return czy_table and stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(element[1],element[4],element[3],ksiazka,analizowana) or ((not czy_table) and element or "(błąd)");end;
	return czy_table and (element[2] or stronicowyparser_potrzebne_modul.StronaArtykularnaKompletna(element[1],element[4],element[3],ksiazka,analizowana)) or ((not czy_table) and element or "(błąd)");
end;
p["SubNazwaNadArtykułu"]=function(frame)
  local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
  stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
  stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(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:NazwaPodStronyWoluminu(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:ParametryKonteneraWoluminu(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(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:NazwaPodStronyWoluminu(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:ParametryKonteneraWoluminu(frame);
  local args=stronicowyparser_potrzebne_modul:Args();
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame);
  if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
  local parametry_modul=require("Module:Parametry");
  local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
  
  local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(frame);
    
  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 czy_tabela_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
  			if(not czy_tabela_artykulu)then
  				local nazwa_artykulu_z_parametrami_i_naglowkiem=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul_w_bazie[1],czy_naglowek);
  				if(nazwa_artykulu_z_parametrami_i_naglowkiem==nazwa_artykulu)then
  					return artykul_w_bazie[1];
  				end;
  			else
  				local nazwa_artykulu_z_parametrami_i_naglowkiem=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul_w_bazie[1][1],czy_naglowek);
  				if(nazwa_artykulu_z_parametrami_i_naglowkiem==nazwa_artykulu)then
  					return artykul_w_bazie[1][2];
  				end;
  			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:ParametryKonteneraWoluminu(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(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 czy_tabela_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
  			local nazwa_artykulu=czy_tabela_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  			local artykul=(not naglowek) and stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(nazwa_artykulu,false) or nil;
  			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:ParametryKonteneraWoluminu(frame);
	local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame);
	if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
	local args=stronicowyparser_potrzebne_modul:Args();
	local parametry_modul=require("Module:Parametry");
	local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
	local nazwa_artykulu=stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(frame);
	
	local parametry_modul=require("Module:Parametry");
	local args=stronicowyparser_potrzebne_modul:Args();
	local czy_analiza=parametry_modul.CzyTak(args["analiza"]);
	
	local uzupelniaj_sekcje_artykulow=parametry_modul.CzyTak(args["uzupełniaj sekcje artykułów"]);
	if(not uzupelniaj_sekcje_artykulow)then
		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 czy_tabela_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
  					local artykul_ksiazki=czy_tabela_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  					artykul_ksiazki=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul_ksiazki,czy_naglowek);
  					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["ParsowanieWywołaniaSzablonu"](czy_spis_tresci);
  									local nazwa_artykulu=parametry_szablony[1];
  									------
  									local nazwa_ksiazki=stronicowyparser_potrzebne_modul:KompletnaNazwaWoluminu(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:KompletnaNazwaWoluminu(frame);
    					  				local function adresuj_linki(a,b)
    					  					return "[["..nazwa_ksiazki.."/"..a..(b or ("|"..a)).."]]";
    					  				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;
	else
		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:KompletnaNazwaWoluminu(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:ParametryKonteneraWoluminu(frame);
   return stronicowyparser_potrzebne_modul:KompletnaNazwaWoluminu(frame) or ((not __error)and "(błąd)" or nil);
end;
p["AktualnaKsiążkaArtykułu"]=function(frame,__error)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame);
	local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame);
	if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
	local args=stronicowyparser_potrzebne_modul:Args();
	----
	local parametry_modul=require("Module:Parametry");
	local ksiazka=parametry_modul.CzyTak(args["książka"]);
	local nazwy_modul=require("Module:Nazwy");
	----
	local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
	local nazwa_ksiazki=stronicowyparser_potrzebne_modul:KompletnaNazwaWoluminu(frame);
	local nazwa_artykulu_ksiazki=stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(frame);
	----
	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 czy_tabela_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
  				 local nazwa_artykulu_dana=czy_tabela_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
  				 nazwa_artykulu_dana=stronicowyparser_potrzebne_modul.UzykanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_dana,czy_naglowek);
  				 if(nazwa_artykulu_ksiazki==nazwa_artykulu_dana)then
  				 	if(not czy_tabela_artykulu)then
  				 		return nazwa_ksiazki;
  				 	else
  				 		local pelna_nazwa_ksiazki=artykul_w_bazie[1][4];
  				 		if((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki[4]))then
							return nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki[1],pelna_nazwa_ksiazki[2],pelna_nazwa_ksiazki[3],"")
						else
							return nazwa_ksiazki;
						end;
  				 	end;
  				 end;
  			end;
		end;
	end;
    return ((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:ParametryKonteneraWoluminu(frame);
   return stronicowyparser_potrzebne_modul:NazwaPodStronyWoluminu(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/NumerLubNazwaNagłówkó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/NumerLubNazwaNagłówkó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:ParametryKonteneraWoluminu(frame);
  local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(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_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
  local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
  setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
  
  local czy_sa_rozdzialy=nil;
   
  local pelna_nazwa_ksiazki=stronicowyparser_potrzebne_modul:KompletnaNazwaWoluminu(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];
       local czy_centrowany=tab_lista[1][2][4];
       if((numer_rozdzialu)and(numer_rozdzialu>0)and(not czy_centrowany))then
    		if(not tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[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_woluminu;
	 local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
	 local nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;

     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:Strona główna/"))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.PodajNapisPoziomuWprowadzeniaTekstu(p.args[1]);
    
    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 "")
       			            ..">"..naglowek.."</h6>";
    elseif(licznik<1)then
       	local blad_module=require("Module:Błąd");
    	return blad_module.error{args={[1]="Nie podano nagłówka w szablonie: [[Szablon:HLiczba]].",["tag"]="strong",},};
    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 "")
       			            ..((parametry_modul.CzyTak(klasa)) and " class=\""..klasa.."\"" or "")
       			            ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "")..">"..naglowek.."</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_woluminu;
	local uzyskana_nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
	local uzyskana_nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
	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);
   	    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);
   	    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:ParametryKonteneraWoluminu{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:TabelaListyStronWoluminu{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_woluminu_podana~=self_zmienna.nazwa_przestrzeni_woluminu)
		                        	or(self_zmienna.nazwa_woluminu_podana~=self_zmienna.nazwa_woluminu)
		                        		or (self_zmienna.nazwa_podstrony_woluminu_podana~=self_zmienna.nazwa_podstrony_woluminu)
		                  );
	
	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;
p["WykazModułówKsiążki"]=function(frame,czy_rozciagnij)
	local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame);
	local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame);
	if(not tab_lista_artykulow_w_ksiazce)then return nil;end;
	local self_zmienna=stronicowyparser_potrzebne_modul:Self();
	local nazwa_ksiazki=self_zmienna.nazwa_woluminu;
	local nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu;
	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 artykul=frame.args["artykuł"];
	local wysokosc=frame.args["wysokość"];
	local wykaz_modulow_w_liscie="";
	local czy_spis_tresci=nil;
	local i=1;
	local czy_spisy=nil;
	for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
		local czy_nienilowy_rozdzial=tab_lista[1][2][1];
        local poziom_rozdzialu=czy_nienilowy_rozdzial or 0;
        if((artykul)and(poziom_rozdzialu==1))then
        	if(((m==1)and(not czy_spisy))or((m>1)and(czy_spisy)))then
        		local spis=tab_lista[1]["spis"];
        		if(spis)then
        			if(not czy_spis_tresci)then
        				local spis_tresci_dany=spis[1];
        				czy_spis_tresci=(artykul==spis_tresci_dany);
        				czy_spisy=true;
        			else
        				break;
        			end;
        		else
        			local dodatkowe=tab_lista[1]["dodatkowe"];
        			if(dodatkowe)then
        				break;
        			end;
        		end;
        	end;
        end;
        if((not artykul)or((artykul)and((not czy_spisy)or((czy_spisy)and(czy_spis_tresci)))))then
			if(tab_lista[2])then
				for _,tab_pozycja in ipairs(tab_lista[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;
	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:25rem;overflow:auto;">'..wykaz_modulow_w_liscie.."</div>";
		wykaz_modulow_w_liscie='{{Tabela nawigacyjna|styl=width:'..(czy_rozciagnij and "100%" or "auto")..';font-size:0.875rem;line-height:1.2em;background-color:white;|tytuł=<div style="font-size:0.875rem;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:0.625rem;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;
p["NazwaAktualnyModuł"]=function()
	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_podstrony_woluminu;
	if(nazwa_artykulu==nil)then 
		 return "[["..nazwy_np_modul.Category..": Nie można wygenerować nazwy strony]]";
     else
	    return nazwa_artykulu;
	end;
end;
p["WstępDoLicencji"]=function(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, na tych samych warunkach, z możliwością obowiązywania dodatkowych ograniczeń].<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_woluminu;
  local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
  local licencja=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[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:0.1875rem;width:100%;height:auto;box-sizing:border-box;word-break:break-word;">'..p["WstępDoLicencji"](frame)..'</div>';
	    menu_z_licencja='{{Tabela nawigacyjna|styl=width:'..(czy_rozciagnij and "100%" or "auto")..';font-size:0.875rem;line-height:1.2em;background-color:white;|tytuł=<div style="font-size:0.875rem;line-height:1.2em;background-color:white;text-align:left;white-space:nowrap;">Licencja</div>|spis='..ramka_z_licencja..'|funkcja=PokazanaWikitabelowaListaMenu}}';
	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_woluminu;
  local nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
  local licencja=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki].licencja;
  if(tabela_listy_danych_analizy_ksiazki.licencja)then
  	if(licencja and licencja[1])then
		return licencja[1];
	end;
  end;
end;
p["NazwaLicencjaWykazSpisTreściModułuKsiążki"]=function(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:0.3125rem;font-size:1.9em;line-height:1.5625rem;text-align:left;">'..p["NazwaAktualnyModuł"]()..'</div><hr style=\"margin:0.3125rem 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["WykazModułówKsiążki"](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\"/><div class=\"pierwsza_strona_spis_treści\">"..spis_tresci.."</div>";
	    end;
	end;
	local wysokosc=frame.args["wysokość"];
	return "<div style=\"padding:0.625rem;border: solid #aaa 1px;background-color:white;box-sizing:border-box;width:43.75rem;\"><div class=\"pierwsza_strona mw-overflow-y\" style=\"max-height:"..(wysokosc or "100%")..";overflow:auto;width:100%;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;
p["SpisTreści"]=function(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 czy_analiza=parametry_modul.CzyTak(args["analiza"]);
    local czy_specjalne=parametry_modul.CzyTak(args["specjalne"]);
    local czy_parser=parametry_modul.CzyTak(args["parser"]);
    local czy_dodumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
    local czy_math=parametry_modul.CzyTak(args["wzory"]);
    local czy_math_analiza=parametry_modul.CzyTak(args["wzory-analiza"]);
    local czy_bez_przypisow=parametry_modul.CzyTak(args["bez przypisów"]);
    
    czy_dokumentacja=czy_dokumentacja or czy_analiza or czy_specjalne or czy_parser;
    
    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_woluminu;
		local uzyskana_nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
		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_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
    local techniczne_modul=require("Module:Techniczne");
    nazwa_ksiazki=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.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 szablonowe_modul=require("Module:Szablonowe");
    local tekst_artykulu,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony;
    if((czy_analiza)or(czy_parser))then
    	tekst_artykulu,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony=p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_strony,false);
    else
    	tekst_artykulu=p.SpreparowanyWikikodStrony(pelna_nazwa_strony,not czy_dokumentacja);
    	if(tekst_artykulu)then
    		if(czy_dokumentacja)then
    			tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony=szablonowe_modul:UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(pelna_nazwa_strony);
    		else
    			tekst_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_artykulu);
    			if((not czy_math)and(not czy_math_analiza))then
    				tablica_obiektow_strony_dany_modul_uzyskany=nil;
    			end;
    		end;
    	end;
    end;
    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 tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
       if(((czy_dokumentacja)and((czy_specjalne)or(czy_parser)))or((not czy_dokumentacja)and(czy_math_analiza)))then
    		tekst_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_artykulu,pelna_nazwa_strony,tablica_obiektow_strony_dany_modul_uzyskany);
       end;
       local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
       local ulozenia_w_menu_spisu_tresci=stronicowyparser_zbieraniedanychstron_modul:SpisRzeczyWedlePodanegoTekstu(tekst_artykulu,pelna_nazwa_strony,nil,nil,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);	
       local atrybuty="style=\"margin-left:20px\"";
       
       local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
       local toc=stronicowyparser_potrzebne_modul.TOCSilnik(frame,ulozenia_w_menu_spisu_tresci, atrybuty,czy_bez_przypisow);
       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_obiektowych_form;
	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_numerobiektu_modul=require("Module:StronicowyParser/NumerObiektu");
		return stronicowyparser_numerobiektu_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 stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
	    stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
	    stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame);
	    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:TabelaListyStronWoluminu(frame);
		if(not tab_lista_zmiennych_w_artykule)then return nil;end;
		return tab_lista_zmiennych_w_artykule.strona_zbiorcza;
	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;
end;
p["CzyArtykułKsiążki"]=function(frame)
	local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
	if(tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then
		return "tak";
	end;
end;
return p;