Moduł:StronicowyParser/Potrzebne
Przejdź do nawigacji
Przejdź do wyszukiwania
Zobacz podstrony tego modułu.
|
local p={};
--zamykanie
local znak_127=mw.ustring.char(127);
function p.ZamieniajSzablonyStart(self)
self.numer_szablonu=1;
end;
function p.ZamieniajSzablony(self,szablon1,szablon2,szablon3)
local lewy=znak_127.."'\"`UNIQ--tzp-"..self.numer_szablonu.."-QINU`\"'"..znak_127;
local prawy=znak_127.."'\"`UNIQ--tzk-"..self.numer_szablonu.."-QINU`\"'"..znak_127;
local rownosc=znak_127.."'\"`UNIQ--tr-"..self.numer_szablonu.."-QINU`\"'"..znak_127;
local pionowa=znak_127.."'\"`UNIQ--tp-"..self.numer_szablonu.."-QINU`\"'"..znak_127;
local szablon2,_= mw.ustring.gsub(szablon2,"{{",lewy);
local szablon2,_= mw.ustring.gsub(szablon2,"}}",prawy);
local szablon2,_= mw.ustring.gsub(szablon2,"=",rownosc);
local szablon2,_= mw.ustring.gsub(szablon2,"|",pionowa);
self.numer_szablonu=self.numer_szablonu+1;
return szablon1..szablon2..szablon3;
end;
function p.AnalizaSzablonu(numer_szablonu)
local function LewyPrawyRownoscPionowa()
local lewy=znak_127.."'\"`UNIQ--tzp-"..numer_szablonu.."-QINU`\"'"..znak_127;
local prawy=znak_127.."'\"`UNIQ--tzk-"..numer_szablonu.."-QINU`\"'"..znak_127;
local rownosc=znak_127.."'\"`UNIQ--tr-"..numer_szablonu.."-QINU`\"'"..znak_127;
local pionowa=znak_127.."'\"`UNIQ--tp-"..numer_szablonu.."-QINU`\"'"..znak_127;
local zamykanie={
[lewy]="{{",
[prawy]="}}",
[rownosc]="=",
[pionowa]="|",
};
return zamykanie;
end;
return LewyPrawyRownoscPionowa();
end;
function p.OgolnyWzor(numer_szablonu)
if(not numer_szablonu)then
local wzor=znak_127.."'\"`UNIQ%-%-t%a+%-(%d+)%-QINU`\"'"..znak_127;
return wzor;
end;
local wzor=znak_127.."'\"`UNIQ%-%-t%a+%-"..numer_szablonu.."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.WzorRownosc(numer_szablonu)
if(not numer_szablonu)then
local wzor=znak_127.."'\"`UNIQ%-%-tr%-(%d+)%-QINU`\"'"..znak_127;
return wzor;
end;
local wzor=znak_127.."'\"`UNIQ%-%-tr%-"..numer_szablonu.."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.WzorPionowa(numer_szablonu)
if(not numer_szablonu)then
local wzor=znak_127.."'\"`UNIQ%-%-tp%-(%d+)%-QINU`\"'"..znak_127;
return wzor;
end;
local wzor=znak_127.."'\"`UNIQ%-%-tp%-"..numer_szablonu.."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.WzorSzablon(numer_szablonu,ktore)
if(not numer_szablonu)then
if(not ktore)then
local wzor=znak_127.."'\"`UNIQ%-%-tzp%-(%d+)%-QINU`\"'"..znak_127;
return wzor;
else
local wzor=znak_127.."'\"`UNIQ%-%-tzk%-(%d+)%-QINU`\"'"..znak_127;
return wzor;
end;
end;
if(not ktore)then
local wzor=znak_127.."'\"`UNIQ%-%-tzp%-"..numer_szablonu.."%-QINU`\"'"..znak_127;
return wzor;
else
local wzor=znak_127.."'\"`UNIQ%-%-tzk%-"..numer_szablonu.."%-QINU`\"'"..znak_127;
return wzor;
end;
end;
function p.MinMaxSzablon(zmienna)
local numer_szablonu=1;
local iterator=mw.ustring.gmatch(zmienna,p.WzorSzablon(nil,false));
local __min=nil;
local __max=0;
for numer_zamykania in iterator do
numer_zamykania=tonumber(numer_zamykania) or 0;
if(not __min)then __min=numer_zamykania;else __min=math.min(__min,numer_zamykania) end;
__max=math.max(numer_zamykania,__max);
end;
return __min,__max;
end;
function p.KodujStroneSzablonowa(tekst_artykulu)
p:ZamieniajSzablonyStart();
local function ZamieniajSzablony(szablon1,szablon2,szablon3)
return p:ZamieniajSzablony(szablon1,szablon2,szablon3);
end;
while mw.ustring.match(tekst_artykulu,"{{[^{}|]-|.-{{[^{}]-}}[^{}]-}}") do
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"({{[^{}|]-|.-)({{[^{}]-}})([^{}]-}})",ZamieniajSzablony);
end;
return tekst_artykulu;
end;
--koniec zamykanie
function p.LiczonyHNumer()
local ulozenie=nil;
local ostatnie=0;
local h_numer_zapamietane=nil;
return function(h_numer,h_numer_nowe,jakie)
if(not h_numer_nowe)then
if(not jakie)then
if(h_numer==0)then
return h_numer_zapamietane;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
else
if(h_numer==0)then
h_numer_zapamietane=0;
return 0;
end;
end;
if((ulozenie==nil)or(ulozenie>=h_numer))then
ulozenie=h_numer-1;
elseif(ostatnie+1<h_numer-ulozenie)then
ulozenie=h_numer-ostatnie-1;
end;
ostatnie=h_numer-ulozenie;
h_numer=h_numer-ulozenie;
h_numer_zapamietane=h_numer;
return h_numer;
else
ulozenie=h_numer-h_numer_nowe;
ostatnie=h_numer-ulozenie;
return h_numer_nowe;
end;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==1))then return nil;end;
if((not numer)and(numer<1)or(numer~=math.floor(numer)))then return adres;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryPudelkaKsiazki(self,frame)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
if(nazwa_jednostki)then
local html_modul=require("Module:Html");
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki);
end;
local pudelko_modul=require("Module:Pudełko");
local nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki 2"](frame);
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_jednostki);
self.nazwa_ksiazki=nazwy_modul["NAZWAKSIĄŻKI"](nazwa_jednostki);
self.nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](nazwa_jednostki);
else
local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
self.nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_artykulu;
end;
end;
function p.TabelaListyArtykulowKsiazki(self,frame)
local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
local nazwa_przestrzeni;local nazwa_ksiazki;
if(tabela_listy_danych_analizy_ksiazki.zastepczy)then
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.normalna_nazwa_przestrzeni;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.normalna_nazwa_ksiazki;
else
nazwa_przestrzeni=self.nazwa_przestrzeni;
nazwa_ksiazki=self.nazwa_ksiazki;
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu[nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return nil;end;
local tab_lista_artykulow_w_ksiazce=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_ksiazki];
if(not tab_lista_artykulow_w_ksiazce)then return nil;end;
return tab_lista_artykulow_w_ksiazce.spis;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=frame and ((frame.getParent and ((parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))and frame or frame:getParent()) or frame).args or frame) or {};
end;
function p.Args(self)
return self.args;
end;
function p.PelnaNazwaKsiazki(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..self.nazwa_ksiazki
end;
function p.NazwaArtykuluKsiazki(self,frame)
return self.nazwa_artykulu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.ObliczeniaInformacje(self,frame)
p:AnalizujArgumentySzablonu(frame);
p:ParametryPudelkaKsiazki(frame);
local tab_lista_artykulow_w_ksiazce=p:TabelaListyArtykulowKsiazki(frame);
if(not tab_lista_artykulow_w_ksiazce)then return nil;end;
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.CzyTak(self.args["nagłówek"]);
local tab_artykul_bez_naglowka=(not naglowek) and {} or nil;
self.tab_artykul={};
local html_modul=require("Module:Html");
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=(not naglowek) and html_modul["NazwaStronyAdresu"](artykul_w_bazie[1][1] or artykul_w_bazie[1]) or (artykul_w_bazie[1][1] or artykul_w_bazie[1]);
if(naglowek or not tab_artykul_bez_naglowka[artykul])then
if(not naglowek)then
tab_artykul_bez_naglowka[artykul]=true;
end;
table.insert(self.tab_artykul, parametry_modul.TypeTable(artykul_w_bazie[1]) and {artykul,artykul_w_bazie[1][2],} or artykul);
end;
end;
end;
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.PomiedzyArtykul(self,frame)
self.numer=tonumber(frame.args[1]) or 1;
self.reszta=math.fmod(self.numer,self.len_tab_artykul-2)+1;
return self.tab_artykul[self.reszta+1];
end;
function p.LosowyArtykul(self,frame)
self.numer=tonumber(frame.args[1]) or 1;
self.reszta=math.fmod(self.numer,self.len_tab_artykul)+1;
return self.tab_artykul[self.reszta];
end;
function p.TOCSilnik(lista_elementow_spisu_tresci, atrybuty)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li class=\"toclevel-1 tocsection-1\">'.."[["..element_w_tablicy[1][1].."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..element_w_tablicy[1][2].."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..element_w_tablicy[1][1].."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..element_w_tablicy[1][2].."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..element_w_tablicy[1][1].."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..element_w_tablicy[1][2].."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..element_w_tablicy[1][1].."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..element_w_tablicy[1][2].."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci);
return twor_listy;
end;
function p.TOC(lista_elementow_spisu_tresci,czy_nie_aktualny,toc_czy_tocramka,spis_artykulu,rozciagnij)
local twor_listy=p.TOCSilnik(lista_elementow_spisu_tresci);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local parametry_modul=require("Module:Parametry");
local frame=mw.getCurrentFrame();
local args=frame.args;
local funkcja=args["funkcja"] or "UkrytaWikitabelowaListaMenu";
local wysokosc=parametry_modul.CzyTak(args["wysokość"]) and args["wysokość"] or "700px";
local szerokosc=parametry_modul.CzyTak(args["szerokość"])and args["szerokość"] or "100%";
local spis_tresci=parametry_modul.CzyTak(args["spis treści"])and args["spis treści"] or "Spis treści";
twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:5px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local wikikod_menu='{{Tabela nawigacyjna|styl=display:'..(czy_ukryte and "table" or "none")..';font-size:14px;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|tytuł=<div style="text-align:left;font-size:14px;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:130px;">'..spis_tresci..'</div>|spis='..twor_listy..'|funkcja='..funkcja..'|klasa=spis_treści}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n=Spis treści=\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:10px">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,__Funkcja, __Funkcja2)
uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
local tab_wywolania={};
local function GlownaFunkcja(wywolanie,oznaczenie_szablonu)
local techniczne_modul=require("Module:Techniczne");
local tabela_parametrow_szablonu=techniczne_modul["ParsujWywołanieSzablonu"](wywolanie);
if(not tabela_parametrow_szablonu)then return nil;end;
__Funkcja(tabela_parametrow_szablonu,wywolanie);
if(__Funkcja2)then
__Funkcja2(oznaczenie_szablonu,wywolanie,tabela_parametrow_szablonu,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
for parametrs,wartosc in pairs(tabela_parametrow_szablonu) do
local __min,__max=p.MinMaxSzablon(wartosc);
if((__min~=nil)and(__max~=0)and(__max>=__min))then
for ss=__max,__min,-1 do
local parametr2,ile=mw.ustring.gsub(wartosc,p.OgolnyWzor(ss),p.AnalizaSzablonu(ss));
if((ile)and((tonumber(ile) or 0)>0))then
local iterator2=mw.ustring.gmatch(parametr2,"{{[^{}]+}}");
for wywolanie in iterator2 do
if(not tab_wywolania[ss])then
GlownaFunkcja(wywolanie,ss);
end;
end;
if(not tab_wywolania[ss])then
tab_wywolania[ss]=true;
end;
end;
end;
end;
end;
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_ksiazki,__FUNKCJA)
local pozycja_artykulu=nil;local nazwa=nil;
local pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^%[%]{}]+)|([^%[%]{}]+)%]%]$")
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^%[%]{}]+)%]%]$");
end;
local function Artykul(strona)
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
local parametry=html_modul["ParametryStronyAdresu"](strona);
local naglowek=html_modul["NagłówekStronyAdresu"](strona);
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_ksiazki_strony=nazwy_modul["NAZWAKSIĄŻKI"](strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return;
end;
end;
local id=nil;
local parametry;
if(not pozycja_artykulu)then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"({{[^{}]+}})");
if(link_szablon)then
local techniczne_modul=require("Module:Techniczne");
parametry=techniczne_modul["ParsujWywołanieSzablonu"](link_szablon);
local szablon=parametry[0];
if(szablon=="SpisTreści")then
pozycja_artykulu=parametry[1];
id=true;
elseif(szablon=="Sekcja referencyjna")then
local podstrona=parametry[3] or parametry["podstrona"];
local strona=parametry[1] or parametry["strona"];
if(not strona)then
pozycja_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"]();
else
pozycja_artykulu=(((podstrona) and (podstrona~="")) and (podstrona..((not mw.ustring.match(strona,"^#")) and "/" or "")) or "")..strona;
end;
nazwa=parametry["nazwa"] or parametry[2];
else
if(szablon=="Link wewnętrzny")then
local strona=parametry["strona"];
nazwa=parametry["nazwa"];
pozycja_artykulu=Artykul(strona);
elseif(szablon=="LinkOgólne")then
local strona=parametry[1];
nazwa=parametry[2];
local miano_przestrzeni_nazw=parametry["miano przestrzeni nazw"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=Artykul(((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..parametry[1]);
else
pozycja_artykulu=Artykul(parametry[1])
end;
elseif(szablon=="LinkGłówna")then
pozycja_artykulu=Artykul(parametry[1])
nazwa=parametry[2];
elseif((szablon=="LinkWikijunior")or(szablon=="LinkWikijunior2"))then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
pozycja_artykulu=Artykul(nazwy_np_modul.Wikijunior..":"..parametry[1]);
nazwa=parametry[2];
elseif((szablon=="LinkProjekt")or(szablon=="LinkProjekt2"))then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
pozycja_artykulu=Artykul(nazwy_np_modul.Wikibooks..":"..parametry[1]);
nazwa=parametry[2];
elseif((szablon=="LinkUżytkownik")or(szablon=="LinkUżytkownik2"))then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
pozycja_artykulu=Artykul(nazwy_np_modul.User..":"..parametry[1]);
nazwa=parametry[2];
elseif((__FUNKCJA)and(__FUNKCJA(parametry)))then
return nil,nil,parametry,false,true;
end;
end;
end;
else
local parametry_modul=require("Module:Parametry");
pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
pozycja_artykulu=czy_pozycja_artykulu;
else
pozycja_artykulu=nil;
end;
else
pozycja_artykulu=Artykul(pozycja_artykulu);
end;
end;
return pozycja_artykulu,nazwa,parametry,id,false;
end;
function p.NumerObiektu(frame, nazwa_obiektu)
local pf=frame:getParent();
local parametry_modul=require("Module:Parametry");
local uchwyt_obiektu=(frame.args["uchwyt"])and parametry_modul["Odstępy"](frame.args["uchwyt"]) or nil;
local nazwa_strony;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local techniczne_modul=require("Module:Techniczne");
local nazwa_przestrzeni;local nazwa_ksiazki;local nazwa_artykulu;
nazwa_artykulu=frame.args["nazwa artykułu"];
nazwa_ksiazki=frame.args["nazwa książki"];
local tabela_listy_danych_analizy_ksiazki=mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_ksiazkowych;
if(not parametry_modul.CzyTak{[1]=tabela_listy_danych_analizy_ksiazki,})then
return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu");
end;
local czy_aktualna_strona=nil;
if((not nazwa_artykulu)and(not nazwa_ksiazki))then
czy_aktualna_strona=1;
nazwa_strony="";
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
czy_aktualna_strona=2;
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki;
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu,_=mw.ustring.gsub(nazwa_artykulu,"([_%s]+)"," ");
nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "");
else
nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](nazwa_ksiazki);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_ksiazki);
nazwa_ksiazki=ksiazkowe_modul["NazwaKsiążki"](nazwa_ksiazki);
nazwa_artykulu=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](nazwa_artykulu);
nazwa_artykulu,_=mw.ustring.gsub(nazwa_artykulu,"([_%s]+)"," ");
nazwa_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "");
end;
local link = function(adres_linku,nazwa_linku,klasa,styl)
local czy_klasa=parametry_modul.CzyTak(klasa);
local czy_styl=parametry_modul.CzyTak(styl);
if(czy_klasa or czy_styl)then
spanramka=mw.html.create('span');
if(czy_klasa)then spanramka:attr("class",klasa);end;
if(czy_styl)then spanramka:attr('style',styl);end;
spanramka:wikitext(nazwa_linku);
local kod_html=spanramka:allDone();
return "[["..adres_linku.."|"..tostring(kod_html).."]]";
else
return "[["..adres_linku.."|"..nazwa_linku.."]]";
end;
end;
local wzor = function(uchwyt,numeracja,styl_main,styl_odstepu,pole_odstepu,styl_wzoru,klasa_wzoru,wzor,opis,opis2,klasa_opisu,styl_opisu,styl_opisu_2,wzor_opisu,wzor_opisu_2,styl_alternatywy_opisu,styl_alternatywy_opisu_2,pozycja_numeracji,klasa_numeracji,styl_numeracji,bez_automatu)
divramka=mw.html.create('div');
local parametry_modul=require("Module:Parametry");
local czy_pozycja_numeracji_prawa=parametry_modul.CzyTak(pozycja_numeracji);
if(parametry_modul.CzyTak(uchwyt))then
if(parametry_modul.CzyTak(bez_automatu))then
divramka:attr('id',"wzór_"..uchwyt);
else
if(numeracja)then
divramka:attr('id',"wzór_"..numeracja);
else
divramka:attr('id',"wzór_"..uchwyt);
end;
end;
end;
if(parametry_modul.CzyTak(styl_main))then
divramka:attr('style',styl_main);
end;
local uchwyt_fun=function()
if(parametry_modul.CzyTak(uchwyt))then
local divuchwytramka=mw.html.create('div');
divuchwytramka:attr('class',klasa_numeracji);
divuchwytramka:attr('style',styl_numeracji);
if(parametry_modul.CzyTak(bez_automatu))then
divuchwytramka:wikitext('(',uchwyt..")");
else
if(numeracja)then
divuchwytramka:wikitext('('..numeracja..")");
else
divuchwytramka:wikitext("(Niedopasowany uchwyt: "..uchwyt..")");
end;
end;
divramka:node(divuchwytramka);
end;
end;
local pole_odstepu_fun=function()
divramka:addClass("wzory");
local divramka2=mw.html.create('div');
divramka2:attr('style',styl_odstepu);
divramka2:wikitext(pole_odstepu);
divramka:node(divramka2);
end;
local opis_fun=function(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu)
if(parametry_modul.CzyTak(opis))then
local divramka5=mw.html.create('div')
divramka5:attr('class',klasa_opisu)
divramka5:attr('style',styl_opisu)
divramka5:wikitext(wzor_opisu)
divramka:node(divramka5)
else
local divramka5=mw.html.create('div');
divramka5:attr('style',styl_alternatywy_opisu);
divramka:node(divramka5)
end;
end;
if(not czy_pozycja_numeracji_prawa)then
uchwyt_fun();
else
pole_odstepu_fun();
end;
opis_fun(opis2,styl_opisu_2,wzor_opisu_2,styl_alternatywy_opisu_2);
local divramka4=mw.html.create('div');
divramka4:attr('class',klasa_wzoru);
divramka4:attr('style',styl_wzoru);
divramka4:wikitext(wzor);
divramka:node(divramka4);
opis_fun(opis,styl_opisu,wzor_opisu,styl_alternatywy_opisu);
if(czy_pozycja_numeracji_prawa)then
uchwyt_fun();
else
pole_odstepu_fun();
end;
return tostring(divramka:allDone());
end;
local rysunek=function(uchwyt,numeracja,opis, rysunek, pozycja,rozmiar,klasa,styl,bez_automatu)
local divramka=mw.html.create('div');
divramka:attr('class',klasa);
divramka:attr('style',styl);
local czy_uchwyt=parametry_modul.CzyTak(uchwyt);
if(czy_uchwyt)then
if(numeracja)then
if(parametry_modul.CzyTak(bez_automatu))then
divramka:attr('id',"rysunek_"..uchwyt);
else
divramka:attr('id',"rysunek_"..numeracja);
end;
else
divramka:attr('id',"rysunek_"..uchwyt);
end;
end;
local czy_opis=parametry_modul.CzyTak(opis);
local wywolanie_rysunku="[[File:"..((rysunek)and rysunek or "Przykładowy rysunek.svg").."|thumb|"..(pozycja or "right").."|"..(rozmiar or "200px")..((czy_uchwyt or czy_opis)and ("|"..((parametry_modul.CzyTak(uchwyt))and "(Rys. "..((numeracja)and (parametry_modul.CzyTak(bez_automatu) and uchwyt or numeracja) or "Niedopasowany uchwyt: "..uchwyt)..")" or "").." "..opis) or "").."]]";
divramka:wikitext(wywolanie_rysunku);
return tostring(divramka:allDone());
end;
local wypowiedzenie = function(uchwyt,przedrostek,numeracja,klasa,styl,przedrostek2,rodzaj,kogo,czego,jakie,styl_naglowka,styl_tekstu,tekst,bez_automatu)
local divramka=mw.html.create('div');
if(parametry_modul.CzyTak(uchwyt))then
if(parametry_modul.CzyTak(bez_automatu))then
divramka:attr('id',przedrostek.."_"..uchwyt);
else
divramka:attr('id',przedrostek.."_"..(numeracja or uchwyt));
end;
end;
divramka:attr('class',klasa);
divramka:attr('style',styl);
local wikitext="";
if(parametry_modul.CzyTak(uchwyt))then
if(parametry_modul.CzyTak(bez_automatu))then
wikitext="("..przedrostek2.." "..uchwyt..")";
else
if(numeracja)then
wikitext="("..przedrostek2.." "..numeracja..")";
else
wikitext="("..przedrostek2.." Niedopawany uchwyt: "..uchwyt..")";
end;
end;
end;
if(parametry_modul.CzyTak(styl_naglowka))then
local spanramka=mw.html.create('span');
spanramka:attr('style',styl_naglowka);
spanramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext);
divramka:node(spanramka);
else
divramka:wikitext(rodzaj.." "..kogo.." "..czego.." "..jakie.." "..wikitext);
end;
divramka:wikitext('<BR>');
if(parametry_modul.CzyTak(styl_tekstu))then
local spanramka=mw.html.create('span');
spanramka:attr('style',styl_tekstu);
spanramka:wikitext(tekst);
divramka:node(spanramka);
else
divramka:wikitext(tekst);
end;
return tostring(divramka:allDone());
end;
local punkty = function(uchwyt,numeracja,przedrostek_id,klasa,styl,prefiks,bez_automatu)
local spanramka=mw.html.create('sup');
spanramka:attr('style',klasa);
if(parametry_modul.CzyTak(uchwyt))then
if(parametry_modul.CzyTak(bez_automatu))then
spanramka:attr('id',przedrostek_id.."_"..uchwyt);
else
if(parametry_modul.CzyTak(numeracja))then
spanramka:attr('id',przedrostek_id.."_"..numeracja);
else
spanramka:attr('id',przedrostek_id.."_"..uchwyt);
end;
end;
end;
spanramka:attr('style',styl);
local smallramka=mw.html.create('small');
if(parametry_modul.CzyTak(uchwyt))then
if(parametry_modul.CzyTak(bez_automatu))then
smallramka:wikitext(prefiks..": "..uchwyt);
else
if(parametry_modul.CzyTak(numeracja))then
smallramka:wikitext('['..prefiks..": "..numeracja..']');
else
smallramka:wikitext('['..prefiks..": Niedopsowany uchwyt: "..uchwyt..']');
end;
end;
else
smallramka:wikitext('['..prefiks..": Niedopasowany uchwyt: brak uchwytu]");
end;
spanramka:node(smallramka);
return tostring(spanramka:allDone());
end;
local nazwa_strony_fun=function(nazwa_strony)
if((tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(tabela_listy_danych_analizy_ksiazki.nazwa_ksiazki==nazwa_ksiazki)
and (tabela_listy_danych_analizy_ksiazki.nazwa_artykulu==nazwa_artykulu))then
return "";
end;
return nazwa_strony;
end;
if(parametry_modul.CzyTak(frame.args["bez automatu"]))then
if(frame.args["obiekt"])then
if(frame.args["obiekt"]=="link")then
local nazwa_strony=nazwa_strony_fun(nazwa_strony);
if(uchwyt_obiektu)then
return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"]..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")";
else
return "("..link(nazwa_strony.."#"..frame.args["id"].."_".."Nieznany uchwyt",frame.args["przedrostek"].."Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")";
end;
elseif(frame.args["obiekt"]=="wzór")then
return wzor(uchwyt_obiektu,uchwyt_obiektu,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="rysunek")then
return rysunek(uchwyt_obiektu,uchwyt_obiektu,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="wypowiedzenie")then
return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],uchwyt_obiektu,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="punkt")then
return punkty(uchwyt_obiektu,uchwyt_obiektu,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]);
else
return uchwyt_obiektu;
end;
else
return uchwyt_obiektu;
end;
end;
local tabela_listy_uchwytow_i_numeracji_na_stronie;
if(czy_aktualna_strona==nil)then
local dane_analizy_artykulu=tabela_listy_danych_analizy_ksiazki.dane_analizy_artykulu;
if(dane_analizy_artykulu)then
local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni=dane_analizy_artykulu[nazwa_przestrzeni];
if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni)then
local tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazkach_w_danej_przestrzeni[nazwa_ksiazki];
if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then
local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_artykolow;
if(lista_artykolow)then
local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu]
if(tabela_listy_analizy_na_stronie)then
tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje;
end;
end;
end;
end;
end;
elseif(czy_aktualna_strona==1)then
tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykolu;
if(not parametry_modul.CzyTak{[1]=tabela_listy_uchwytow_i_numeracji_na_stronie,})then
return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu");
end;
elseif(czy_aktualna_strona==2)then
tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
if(not parametry_modul.CzyTak{[1]=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce,})then
return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu");
end;
if(tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce)then
local lista_artykolow=tabela_listy_uchwytow_i_numeracji_obiektow_w_ksiazce.lista_artykolow;
if(lista_artykolow)then
local tabela_listy_analizy_na_stronie=lista_artykolow[nazwa_artykulu]
if(tabela_listy_analizy_na_stronie)then
tabela_listy_uchwytow_i_numeracji_na_stronie=tabela_listy_analizy_na_stronie.uchwyty_i_numeracje;
end;
end;
end;
end;
if(tabela_listy_uchwytow_i_numeracji_na_stronie)then
local spis_uchwytow=tabela_listy_uchwytow_i_numeracji_na_stronie[nazwa_obiektu];
if(spis_uchwytow)then
if((uchwyt_obiektu)and(uchwyt_obiektu~=""))then
for _, dany_artykul in ipairs(spis_uchwytow)do
if(dany_artykul[1]==uchwyt_obiektu)then
if(nazwa_obiektu~="Śródtytuł")then
if(frame.args["obiekt"])then
if(frame.args["obiekt"]=="link")then
local nazwa_strony=nazwa_strony_fun(nazwa_strony);
if(not dany_artykul[2])then
return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"].."Niedopasowany uchwyt: "..uchwyt_obiektu,frame.args["klasa"],frame.args["styl"])..")";
end;
return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..dany_artykul[2],frame.args["przedrostek"]..dany_artykul[2],frame.args["klasa"],frame.args["styl"])..")";
elseif(frame.args["obiekt"]=="wzór")then
return wzor(uchwyt_obiektu,dany_artykul[2],frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="rysunek")then
return rysunek(uchwyt_obiektu,dany_artykul[2],frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="wypowiedzenie")then
return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],dany_artykul[2],frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="punkt")then
return punkty(uchwyt_obiektu,dany_artykul[2],frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]);
else
return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"));
end;
else
return ((dany_artykul[2])and dany_artykul[2] or "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"));
end;
else
if(dany_artykul[2])then
local tytul_szablonu=frame.args["nazwa szablonu"] or techniczne_modul.NazwaSzablonu(frame:getParent():getTitle());
if(tytul_szablonu=="LinkŚródtytuł")then
return link(dany_artykul[2][1],dany_artykul[2][2],frame.args["klasa"],frame.args["styl"])
elseif(tytul_szablonu=="LinkŚródtytułTutaj")then
return link(dany_artykul[2][1],"tutaj",frame.args["klasa"],frame.args["styl"])
end;
end;
end;
end;
end;
end;
end;
end;
if(frame.args["obiekt"])then
if(frame.args["obiekt"]=="link")then
local nazwa_strony=nazwa_strony_fun(nazwa_strony);
return "("..link(nazwa_strony.."#"..frame.args["id"].."_"..uchwyt_obiektu,frame.args["przedrostek"].."Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu"),frame.args["klasa"],frame.args["styl"])..")";
elseif(frame.args["obiekt"]=="wzór")then
return wzor(uchwyt_obiektu,nil,frame.args["styl główny"],frame.args["styl odstępu"],frame.args["pole odstępu"],frame.args["styl wzoru"],frame.args["klasa wzoru"],frame.args["wzór"],frame.args["opis"],frame.args["opis 2"],frame.args["klasa opisu"],frame.args["styl opisu"],frame.args["styl opisu 2"],frame.args["wzór opisu"],frame.args["wzór opisu 2"],frame.args["styl alternatywy opisu"],frame.args["styl alternatywy opisu 2"],frame.args["pozycja numeracji"],frame.args["klasa numeracji"],frame.args["styl numeracji"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="rysunek")then
return rysunek(uchwyt_obiektu,nil,frame.args["opis"],frame.args["rysunek"],frame.args["pozycja"],frame.args["rozmiar"],frame.args["klasa"],frame.args["styl"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="wypowiedzenie")then
return wypowiedzenie(uchwyt_obiektu,frame.args["przedrostek id"],nil,frame.args["klasa"],frame.args["styl"],frame.args["przedrostek numeracji"],frame.args["rodzaj"],frame.args["kogo"],frame.args["czego"],frame.args["jakie"],frame.args["styl nagłówka"],frame.args["styl tekstu"],frame.args["tekst"],frame.args["bez automatu"]);
elseif(frame.args["obiekt"]=="punkt")then
return punkty(uchwyt_obiektu,nil,frame.args["przedrostek_id"],frame.args["klasa"],frame.args["styl"],frame.args["prefiks"],frame.args["bez automatu"]);
else
return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu");
end;
else
return "Niedopasowany uchwyt: "..((parametry_modul.CzyTak(uchwyt_obiektu))and uchwyt_obiektu or "brak uchwytu");
end;
end;
return p;