Moduł:StronicowyParser/NumerLubNazwaNagłówkówKsiążek
Wygląd
Zobacz podstrony tego modułu.
|
local p={};
local function PobiezNumerLubNazweNaglowka(frame,__FUNKCJA,typ)
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 poziomowo=parametry_modul.CzyTak(args["poziomowo"]);
local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]);
local ktory=(tonumber(args["który"]) or 1);
local parametr_pierwszy_szablonu=typ and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or args[1];
if(not typ)then
parametr_pierwszy_szablonu,_=mw.ustring.gsub(parametr_pierwszy_szablonu,"^[%s_]+","");
parametr_pierwszy_szablonu,_=mw.ustring.gsub(parametr_pierwszy_szablonu,"[%s_]+$","");
parametr_pierwszy_szablonu,_=mw.ustring.gsub(parametr_pierwszy_szablonu,"[%s_]+"," ");
end;
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumer_2=nil;
local tab_numer_2=nil;
local tab_numer={};
local i=(not poziomowo) and 0 or nil;
local i_2=nil;
local juz_nie_rozwazaj_spisu_tresci=nil;
local juz_nie_rozwazaj_rozdzialu_spisu_tresci=nil;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
if(nie_wszystkie)then
local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu);
end;
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.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);
if(nie_wszystkie)then
setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
end;
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local poziom_spisu_tresci=nil;
local pierwszy_dodatni_spis_tresci=nil;
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
local czy_nie_ten_rozdzial=nil;
local czy_jest_teraz_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial];
if((not juz_nie_rozwazaj_spisu_tresci)and(not juz_nie_rozwazaj_rozdzialu_spisu_tresci)and(czy_jest_teraz_spis_tresci))then
poziom_spisu_tresci=poziom_rozdzialu;
juz_nie_rozwazaj_rozdzialu_spisu_tresci=true;
if(nie_wszystkie)then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial];
else
czy_nie_ten_rozdzial=false;
end;
elseif((not juz_nie_rozwazaj_spisu_tresci)and(juz_nie_rozwazaj_rozdzialu_spisu_tresci))then
if((poziom_spisu_tresci<poziom_rozdzialu))then
czy_nie_ten_rozdzial=false;
else
juz_nie_rozwazaj_spisu_tresci=true;
if(nie_wszystkie)then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial];
else
czy_nie_ten_rozdzial=false;
end;
end;
else
local juz_nie_rozwazaj_spisu_tresci=nil;
local juz_nie_rozwazaj_rozdzialu_spisu_tresci=nil;
if(nie_wszystkie)then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial];
else
czy_nie_ten_rozdzial=false;
end;
end;
if(not czy_nie_ten_rozdzial)then
if(poziomowo)then
local hnumer=HNumer(poziom_rozdzialu);
if(#tab_numer<hnumer)then
for i=#tab_numer+1,hnumer,1 do
table.insert(tab_numer,1);
end;
elseif(#tab_numer>hnumer)then
for i=#tab_numer, hnumer+1,-1 do
table.remove(tab_numer,i);
end;
tab_numer[#tab_numer]=tab_numer[#tab_numer]+1;
else
tab_numer[#tab_numer]=tab_numer[#tab_numer]+1;
end;
----
local wartosc=__FUNKCJA(poziomowo,i,tab_numer,ktory,parametr_pierwszy_szablonu,rozdzial);
----
if(wartosc)then return wartosc;end;
----
if((czy_jest_teraz_spis_tresci)and(not pierwszy_dodatni_spis_tresci))then
HNumer_2=HNumer;
HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tab_numer_2=tab_numer;
tab_numer={};
pierwszy_dodatni_spis_tresci=true;
elseif((pierwszy_dodatni_spis_tresci)and(poziom_spisu_tresci>=poziom_rozdzialu))then
HNumer=HNumer_2;
HNumer_2=nil;
tab_numer=tab_numer_2;
tab_numer_2=nil;
pierwszy_dodatni_spis_tresci=false;
end;
else
i=i+1;
----
local wartosc=__FUNKCJA(poziomowo,i,tab_numer,ktory,parametr_pierwszy_szablonu,rozdzial);
---
if(wartosc)then return wartosc;end;
---
if((czy_jest_teraz_spis_tresci)and(not pierwszy_dodatni_spis_tresci))then
i_2=i;
i=0;
pierwszy_dodatni_spis_tresci=true;
elseif((pierwszy_dodatni_spis_tresci)and(poziom_spisu_tresci>=poziom_rozdzialu))then
i=i_2;
i_2=nil;
pierwszy_dodatni_spis_tresci=false;
end;
end;
end;
end;
end;
end;
p["PobierzNumerNagłówka"]=function(frame)
local s=1;
local function __FUNKCJA(poziomowo,i,tab_numer,ktory,naglowek,rozdzial)
if(naglowek==rozdzial)then
if(s==ktory)then
if(poziomowo)then
if(#tab_numer==0)then return;end;
return table.concat(tab_numer,".");
else
return i;
end;
end;
s=s+1;
end;
end;
return PobiezNumerLubNazweNaglowka(frame,__FUNKCJA,false);
end;
p["PobierzNazwęNagłówka"]=function(frame)
local s=1;
local function __FUNKCJA(poziomowo,i,tab_numer,ktory,numer,rozdzial)
if(poziomowo)then
if(#tab_numer==0)then return;end;
if(numer==table.concat(tab_numer,"."))then
if(s==ktory)then
return rozdzial;
else
s=s+1;
end;
end;
elseif(numer==i)then
if(s==ktory)then
return rozdzial;
else
s=s+1;
end;
end
end;
return PobiezNumerLubNazweNaglowka(frame,__FUNKCJA,true);
end;
return p;