Moduł:Szablonowe
Zobacz podstrony tego modułu.
|
local p={};
--zamykanie
local znak_127=mw.loadData("Module:Html/dane").znak_127;
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "(%a+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."'"`UNIQ%-%-"..(co or "(%a+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu)
local wzor="%%7F'"`UNIQ%-%-"..(co or "(%a+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'%%7F";
return wzor;
end;
function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer)
local wikikodnumer="%7F'"`UNIQ--"..kod.."-"..numer.."-QINU`"'%7F";
return wikikodnumer;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec)
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec);
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_analizy_obiektow_strony_dany_modul={};
tablica_analizy_obiektow_strony_dany_modul["MATH"]={};
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local parametry_modul=require("Module:Parametry");
local function NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt)
local __max=0;
for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do
if(parametry_modul.TypeNumber(numer))then
__max=math.max(__max,numer);
end;
end;
return __max+1;
end;
numer_szablonu={};
--numer_szablonu["ŹRÓDŁO"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"ŹRÓDŁO");
--numer_szablonu["GALERIA"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"GALERIA");
--numer_szablonu["MAPAOBRAZU"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"MAPAOBRAZU");
numer_szablonu["SZABLON"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"SZABLON");
numer_szablonu["LINKW"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"LINKW");
numer_szablonu["LINKZ"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"LINKZ");
numer_szablonu["ZMIENNA"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"ZMIENNA");
numer_szablonu["WIKITABELA"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA");
--numer_szablonu["NOWIKI"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"NOWIKI");
--numer_szablonu["MATH"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"MATH");
--numer_szablonu["PRE"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"PRE");
numer_szablonu["INNEPRE"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"INNEPRE");
numer_szablonu["ZNACZNIK"]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK");
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
return numer_szablonu;
end;
function p.KodSzablonuKodowaniaTekstu(szablon)
if(mw.ustring.match(szablon,"^%[%[[^%[%]]+%]%]$"))then
return "LINKW";
elseif(mw.ustring.match(szablon,"^%[[^%[%]]+%]$"))then
return "LINKZ";
elseif(mw.ustring.match(szablon,"^{{{[^{}]-}}}$"))then
return "ZMIENNA";
elseif(mw.ustring.match(szablon,"^{{[^{}]-}}$"))then
return "SZABLON";
elseif(mw.ustring.match(szablon,"^{|.-|}$"))then
return "WIKITABELA";
elseif(mw.ustring.match(szablon,"^[^%S\n]+[^\n]*"))then
return "INNEPRE";
elseif((mw.ustring.match(szablon,"^<[^<>]+>.-</[^<>]+>$"))or(mw.ustring.match(szablon,"^<[^<>]+/>$")))then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,nil,nil);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or "ZNACZNIK";
end;
return;
end;
function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu()
return {["SZABLON"]={1,2,3,4,5,0,-1,-2,},["LINKW"]={-3,},["ZNACZNIK"]={100,},["MATH"]={101,},["PRE"]={102,},["ŹRÓDŁO"]={103,},["NOWIKI"]={104,},};
end;
function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun)
local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do
for kod,wartosc in pairs(tab_obiekt)do
local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica();
local tab_wartosc=tablica[kod];
if(tab_wartosc)then
if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then
if(tab_wartosc[2])then
for obiekt_tab,tab_kod in pairs(tab_analiza)do
if(obiekt_tab==obiekt)then
for _,liczba in ipairs(tab_kod)do
local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba];
if(tab_liczba)then
tab_liczba[kod]=nil;
tab_wartosc[2]=false;
end;
end;
end;
end;
end;
else
tablica[kod]=nil;
end;
end;
end;
end;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
----
local parametry_modul=require("Module:Parametry");
----
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare)
local iter=true;local iter_fun;
if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then
iter_fun=function()
local iter=function()
return nil;
end;
return iter;
end;
else
iter_fun=function()
if((not obiekt)and(not kod))then
local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
return iter;
else
local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil;
local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu;
if(not szablon)then
local iter=function()
return nil;
end;
return iter;
else
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
return iter;
end;
end;
end;
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end;
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon);
if(__FUNKCJA2)then
repeat
local czy_dalej=nil;
local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not jest_naglowek)then
--if(poziom_iteracji>0)then
-- return nil;
--else
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_dalej=true;
--end;
end;
until (not czy_dalej);
end;
----
tak=true;
if(__FUNKCJA)then
local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(not wynik)then
czy_jedno=true;
return nil;
else
szablon=wynik;
if(tekst)then
tekst_rozwiniety_calego_artykulu=tekst;
end;
end;
end;
iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE"));
return szablon,obiekt,kod,poziom_iteracji;
end;
if(not tak)then
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
local szablon,obiekt,kod,poziom_iteracji=iter2();
if(czy_jedno)then return nil;end;
if((not szablon)or(not kod)or(not obiekt))then
tak=nil;
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
return szablon,obiekt,kod,poziom_iteracji;
end;
end;
end;
return Iterator;
end;
return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local tab_usun={};
local szablon2=nil;
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji)
if((szablon2)and(tab_usun)and(tab_usun[obiekt])and(tab_usun[obiekt][kod]))then
return szablon2;
else
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=funkcja6 and funkcja6(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or szablon;
return szablon;
end;
end);
local poziom_iteracji_poprz=-1;
local tab_dane=nil;
for szablon,obiekt,kod,poziom_iteracji in iterator do
if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end;
szablon2=nil;local wynik;local analiza;
if(__funkcja1)then
szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if((analiza)and(__funkcja7))then
local funkcja_temp;local tak_specjalne=false;
if(tab_dane)then
local tak=true;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local szablon_temp=tab_pos[1];local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]));
if(not tak)then
local Typ=function()
__funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp);
end;
if(not funkcja_temp)then funkcja_temp=Typ;end;
if(__funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp) or((not __funkcja8)and((obiekt_temp=="SZABLON")or(obiekt_temp=="LINKW"))))then
tak_specjalne=true;
end;
break;
end;
end;
end;
end;
if(tak_specjalne)then
wynik=true;
elseif(parametry_modul.TypeFunction(szablon2))then
szablon2=szablon2();
if(funkcja_temp)then funkcja_temp();end;
else
if(funkcja_temp)then funkcja_temp();end;
end;
end;
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if((not tab_dane)or(#tab_dane==0))then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local tak=true;local tab_wolne;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])));
if(not tak)then
tab_wolne=tab_pos;
break;
end;
end;
end;
if(tak)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3];
local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst;
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
end;
end;
if(__funkcja2)then
local tak=__funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(tak)then return tekst_rozwiniety_calego_artykulu;end;
end;
end;
if(not tab_dane)then tab_dane={};end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_dane);
end;
table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji});
if(__funkcja2)then
local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(tak)then return tekst_rozwiniety_calego_artykulu;end;
end;
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local techniczne_modul=require("Module:Techniczne");
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5);
local techniczne_modul=require("Module:techniczne");
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={};
for szablon,obiekt,kod,poziom_iteracji in iterator do
local function ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzic)
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul);
if(kod_kodowy_wynik)then
local function ModyfikacjaBazyKodowoSzablonowa()
if(dziecko_zmodyfikowane)then
if((obiekt_zmodyfikowany)and(kod_zmodyfikowany))then
if((obiekt_zmodyfikowany~=obiekt)or(kod_zmodyfikowany~=kod))then
if(not tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany])then
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany]={};
end;
tablica_analizy_obiektow_strony_dany_modul[obiekt_zmodyfikowany][kod_zmodyfikowany]=dziecko_zmodyfikowane;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
end;
end;
end;
if(poziom_iteracji>0)then
if(not szablon_rodzica_zmodyfikowany)then
local ile;
local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica];
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica;
ModyfikacjaBazyKodowoSzablonowa();
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
ModyfikacjaBazyKodowoSzablonowa();
end;
else
local ile;
tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowa();
end;
end;
elseif(szablon_rodzica_zmodyfikowany)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=szablon_rodzica_zmodyfikowany;
end;
end;
if(poziom_iteracji==0)then
ZamienianieKodowe(nil,nil,nil,nil);
else
for i=#tab_poziom_obiekt,1,-1 do
local tab=tab_poziom_obiekt[i];
local poziom_iteracji_rodzica=tab[4];
if(poziom_iteracji_rodzica<poziom_iteracji)then
local szablon_rodzica=tab[1];
local obiekt_rodzica=tab[2];
local kod_rodzica=tab[3];
ZamienianieKodowe(szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica);
break;
end;
end;
end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,});
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(poziom_iteracji==0)then
tablica_szablonow_z_naglowkami=nil;
tab_sam=nil;
else
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
end;
----
local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(wynik)then
if(sam_obiekt and sam_kod)then
return false;
end;
end
local czy_nie_wyzej=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod)
if(czy_nie_wyzej)then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end;
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then
if(poziom_iteracji_poprz>poziom_iteracji2)then
for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji2)then
elseif(poziom_iteracji_poprz==poziom_iteracji2)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{obiekt2,kod2});
poziom_iteracji_poprz=poziom_iteracji2;
czy_nie_wyzej=false;
else
for _,tab in ipairs(tab_poziom_obiekt)do
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end;
tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true;
end;
if(sam_obiekt and sam_kod)then
if(not tab_sam)then tab_sam={};end;
if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end;
tab_sam[sam_obiekt][sam_kod]=true;
czy_nie_wyzej=true;
else
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end;
tablica_szablonow_z_naglowkami[obiekt2][kod2]=true;
czy_nie_wyzej=false;
end;
---poziom_iteracji_poprz=poziom_iteracji2;
end;
end;
if(wynik)then return true;end;
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
return nil;
end,__funkcja4,__funkcja5);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,nil,function(nazwa_szablonu,tabela_modyfikatorow)
return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end,tablica_danych_parametrow_szablonu_strony,kod);
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(__FUNKCJA)then
local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then return;end;
end;
local techniczne_modul=require("Module:Techniczne");
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
local html_modul=require("Module:Html");
nazwa_szablonu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_szablonu);
local parametry_modul=require("Module:Parametry");
nazwa_szablonu=parametry_modul["Odstępy"]{[1]=nazwa_szablonu,[2]="tak",};
nazwa_szablonu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,},tablica_danych_parametrow_szablonu_strony,kod);
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return;
end;
end;
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
local tekst;
if((not czy_niekodowane)and(__FUNKCJA3))then
tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(not tekst)then
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA);
end;
else
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA);
end;
if(not tekst)then return;end;
if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end;
tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(czy_nie_brak_parametrow)then
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(not wartosc_zmiennej)then
if(wartosc_domyslna)then return wartosc_domyslna;end;
local html_modul=require("Module:Html");
local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon);
return szablon;
end;
return wartosc_zmiennej;
end;
end;
end,
function()
return numer_szablonu;
end);
return tekst;
end;
end;
end;
function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu)
local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self);
tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {};
local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
----
tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {};
local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_danych_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(not tablica_analizy_obiektow_strony_dany_modul)then
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
---
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA);
end);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
----
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2)
local html_modul=require("Module:Html");
nazwa=html_modul.DecodeHtml(nazwa,true);
local rezultat=nil;
if(__FUNKCJA)then
local nazwa_rozwinieta;
nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa);
nazwa=nazwa_rozwinieta or nazwa;
end;
local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa);
nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa;
if(not tabela_modyfikatorow)then return nazwa;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
if(nazwa_przestrzeni)then
if(nazwa_przestrzeni=="")then
if(tabela_modyfikatorow["#invoke:"])then
nazwa="Module:"..nazwa;
elseif(tabela_modyfikatorow["int:"])then
nazwa="MediaWiki:"..nazwa;
end;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then
nazwa="Module:"..nazwa;
elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then
nazwa="MediaWiki:"..nazwa;
end;
end;
end;
nazwa=html_modul.EncodeId(nazwa);
return nazwa,tabela_modyfikatorow;
end;
p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony;
end;
end;
end;
if(not czy_szablon)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_szablon,};
local nazwa_szablonu;
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]");
if((czy_nie_dwukropek)or(czy_szablon==""))then
local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",};
nazwa_szablonu=mw.getContentLanguage():ucfirst(czy_szablon);
else
nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon);
end;
elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then
nazwa_szablonu=nazwy_modul["NAZWASTRONY"]{nazwa=czy_szablon,};
else
nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu;
end;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
----
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa");
----
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
----
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa_szablonu,};
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]");
if(czy_nie_dwukropek)then
local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",};
pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..mw.getContentLanguage():ucfirst(nazwa_szablonu);
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu);
end;
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu;
end;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
local klucz_przestrzeni_niekanoniczna;
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(czy_biezaca)then
klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,};
else
klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
end;
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
else
pelna_nazwa_szablonu=nazwa_szablonu;
end;
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]{nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
return pelna_nazwa_szablonu;
end;
p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami;
end;
end;
end;
local czy_z_parametrami;
local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
if(not czy_szablon or not zawartosc)then
czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$");
if(not czy_szablon)then return;end;
czy_z_parametrami=false;
else
czy_z_parametrami=true;
end;
--czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon;
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2);
local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow;
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami;
end;
return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
local nazwa_parsowania=nil;local modyfikatory_parsowania=nil;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then
if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
end;
end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
if((not nazwa_parsowania)or(not modyfikatory_parsowania))then
local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2);
nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna);
return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna;
else
return nazwa_parsowania,modyfikatory_parsowania;
end;
end;
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$");
if(not wywolanie_bez_parametrow)then
local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$");
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$");
local tabela_parametrow_szablonu={};
tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
else
local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^{}|]-)%s*}}$"));
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local tabela_parametrow_szablonu={};
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane);
end;
return nil;
end;
function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania.."\n","^([^|=]-)$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany);
return tworzona_tabela;
else
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy)
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe;
local modyfikatory="";
local tab_mod=nil;
local function PojedynczeModyfikatory(pole,modyfikatory)
for modyfikator,tab in pairs(tab_modyfikatory) do
local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$");
if(modyfikator_uzyty)then
if(not tab_mod)then tab_mod={};end;
if(tab_mod[modyfikator])then
return pole,modyfikatory;
end;
tab_mod[modyfikator]=true;
modyfikatory=modyfikatory..modyfikator_uzyty;
return PojedynczeModyfikatory(pole_dalej,modyfikatory)
end;
end;
return pole,modyfikatory;
end;
local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory);
return pole_ostateczne,modyfikatory_ostateczne,tab_mod;
end;
function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#switch:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#tag:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon;
end;
end;
end;
local function RozpatrywanieSzablonowe()
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["int:"])
or(tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#tag:"])
or(tabela_modyfikatorow["#switch:"])
or(tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["gender:"])
)then
return false;
end;
end;
if((nazwa_szablonu)and(nazwa_szablonu~=""))then
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end;
if(tabela_parametrow_szablonu)then
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
if(czy_nie_brak_parametrow)then return true;end;
end;
return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false);
end;
return true;
end;
local wynik=RozpatrywanieSzablonowe();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik;
end;
return wynik;
end;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane)
local parametry_modul=require("Module:Parametry");
local tablica_obiektow_strony_danych_kodow_specjalnych_modul={};
local tab_grupa={};
local math_numer=0;local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
elseif(obiekt=="MATH")then
math_numer=math_numer+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer);
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul;
end;
function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_CZY_W_LINKU)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
if(nazwa_szablonu=="R")then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..tab_grupa[grupa].."]"
elseif(nazwa_szablonu=="U")then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..grupa.." "..tab_grupa[grupa].."]";
elseif(nazwa_szablonu=="Ref")then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty);
end;
end;
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty);
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
if(__FUNKCJA_INNE_OPERACJE2)then
return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
return szablon;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_CZY_W_LINKU);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki;
for szablon,obiekt,kod in iterator do
if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
for obiekt,kod in iter do
if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end;
tablica_kodow[obiekt][kod]=true;
tak=true;
end;
end;
end;
--if(not tak)then return tekst_rozwiniety_calego_artykulu;end;
local html_modul=require("Module:Html");
--local frame=mw.getCurrentFrame();
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2)
if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then
if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then
szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=mw.ustring.match(szablon_rozwiniete,"^%[%[.-[%[%]].-%]%]$")
or mw.ustring.match(szablon_rozwiniete,"^%[%[%s*%]%]$");
if(czy_nie_linkw)then return szablon2;end;
elseif(obiekt2=="LINKZ")then
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkz=mw.ustring.match(szablon_rozwiniete,"^%[(.-[%[%]].-)%]$");
if(czy_nie_linkz)then return szablon2;end;
local szablon_linkz=mw.ustring.match(szablon_rozwiniete,"^%[(%S+).-%]$");
if(szablon_linkz)then
local czy_linkz=html_modul["SprawdźURL"](szablon_linkz);
if(not czy_linkz)then return szablon2;end;
else
return szablon2;
end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
p["PokazanieWywołaniaSzablonu"]=function(szablon, args)
local result = {};
table.insert(result, mw.text.nowiki("{{"));
if mw.isSubsting() then
table.insert(result, "subst:");
end;
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|");
table.insert(result, tostring(k));
table.insert(result, "=");
table.insert(result, mw.text.nowiki(v));
else
table.insert(result, "|");
table.insert(result, mw.text.nowiki(v));
end;
end;
end;
table.insert(result, mw.text.nowiki("}}"));
return table.concat(result);
end;
function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony)
local result={};
table.insert(result,((jako_szablony) and "{{((}}" or "{{"));
for name,_ in pairs(modyfikatory or {})do
table.insert(result,name);
end;
table.insert(result,nazwa);
for name,value in pairs(args or {})do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value);
end;
table.insert(result,((jako_szablony) and "{{))}}" or "}}"));
return table.concat(result,"");
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
else
return nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
end;
end;
local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu)
local liczba_obiektu=liczba_obiektu or 100;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika;
end;
end;
end;
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<(%a+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),zawartosc,nil;
end;
----
local nazwa=mw.ustring.match(znacznik,"^%s*<(%a+)%s*/?%s*>%s*$");
if(nazwa)then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),nil,nil;
end;
----
local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<(%a+)%s+([^<>\"]-\".-\"[^<>\"]-)%s*>(.-)</(%1)%s*>%s*$");
----
if((not nazwa)or(not atrybuty)or(not zawartosc))then
nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<(%a+)%s+([^<>]-)%s*>(.-)</(%a+)%s*>%s*$");
if((not nazwa)or(not atrybuty) or (not zawartosc))then
nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<(%a+)%s+([^<>]-)%s*/?%s*>%s*$");
if((not nazwa)or(not atrybuty))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return nil,nil,nil;
end;
end;
end;
-----
local techniczne_modul=require("Module:Techniczne");
local tab={};
atrybuty=" "..atrybuty.." ";
while(true)do
local szablon,name,value=mw.ustring.match(atrybuty,"%s+((%a+)%s*=%s*[^\\]?\"(.-[^\\]?)\")%s+");
if((not szablon)or(not name)or(not value))then break;end;
tab[name]=value;
szablon="%s+"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon).."%s+";
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local szablon,name,value=mw.ustring.match(atrybuty,"%s+((%a+)%s*=%s*(%a+))%s+");
if((not szablon)or(not name)or(not value))then break;end;
tab[name]=value;
szablon="%s+"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon).."%s+";
atrybuty=mw.ustring.gsub(atrybuty,szablon," ");
end;
while(true)do
local name=mw.ustring.match(atrybuty,"%s+(%a+)%s+");
if(not name)then break;end;
tab[name]="true";
name="%s+"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name).."%s+";
atrybuty=mw.ustring.gsub(atrybuty,name," ");
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab;
end;
return mw.ustring.lower(nazwa),zawartosc,tab;
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,100);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,101);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,102);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,103);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_danych_parametrow_szablonu_strony,kod,104);
end;
function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachOrazZnacznikachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2)
----
local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
--and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry;
----
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if((__FUNKCJA1)and(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
----
local techniczne_modul=require("Module:Techniczne");
if(not tab_pop)then
if((kod)and(tablica_danych_parametrow_szablonu_strony))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA2)and(tabela_modyfikatorow["#tag:"]))then
nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu);
return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
end;
p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("tekst");
local pattern=PobierzParametr(2) or PobierzParametr("wzór");
local szablon=PobierzParametr(3) or PobierzParametr("szablon");
local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami");
----
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
----
local iter=mw.ustring.gmatch(tekst,pattern);
for nazwa_szablonowa in iter do
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa);
local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu==szablon)then
return "tak";
end;
end;
end;
return nil;
end;
return p;