Moduł:Szablonowe
Przejdź do nawigacji
Przejdź do wyszukiwania
Zobacz podstrony tego modułu.
|
local p={};
--zamykanie
p.znak_127=mw.ustring.char(127);
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=p.znak_127.."'\"`UNIQ%-%-"..(co or "(%a+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..p.znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=p.znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..p.znak_127;
return wikikodnumer;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=p.znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..p.znak_127;
return wikikodnumer;
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_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_poczatek,__FUNKCJA_koniec)
local numer_szablonu;
local html_modul=require("Module:Html");
local function InicjujNumeryPoczatkoweObiektowSzablonow()
if(not __FUNKCJA3)then
numer_szablonu={};
numer_szablonu["ŹRÓDŁO"]=1;
numer_szablonu["GALERIA"]=1;
numer_szablonu["MAPAOBRAZU"]=1;
numer_szablonu["SZABLON"]=1;
numer_szablonu["LINKW"]=1;
numer_szablonu["LINKZ"]=1;
numer_szablonu["ZMIENNA"]=1;
numer_szablonu["NOWIKI"]=1;
numer_szablonu["MATH"]=1;
numer_szablonu["PRE"]=1;
numer_szablonu["INNEPRE"]=1;
numer_szablonu["ZNACZNIK"]=1;
numer_szablonu["WIKITABELA"]=1;
else
numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul);
end;
end;
local PREWSTAWIAJACA=nil;local czy_wynik=true;
local function ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,co)
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_obiektow_strony_dany_modul,numer_szablonu);
if(wynik)then
numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1;
wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik;
return wynik,false;
end;
end;
if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end;
local kod=p.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]);
tablica_obiektow_strony_dany_modul[co or "SZABLON"][numer_szablonu[co or "SZABLON"]]=szablon;
numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1;
return kod,true;
end;
local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu)
local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2;
local czy_pierwszy_raz=nil;
local html_modul=require("Module:Html");
local techniczne_modul=require("Module:Techniczne");
local tab_licznik_poczatek={};
local tab_licznik_koniec={};
local tab_element={};
local ObiektFun=function(nazwa)
if(nazwa=="nowiki")then return "NOWIKI";end;
if(nazwa=="pre")then return "PRE";end;
if((nazwa=="source")or(nazwa=="syntaxhighlight"))then return "ŹRÓDŁO";end;
if(nazwa=="math")then return "MATH";end;
if(nazwa=="gallery")then return "GALERIA";end;
if(nazwa=="imagemap")then return "MAPAOBRAZU";end;
return "ZNACZNIK";
end;
local INNEPRE=function(tekst_artykulu,czy_poczt)
if(not czy_poczt)then
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"^([^%S\n][^\n]*)",function(szablon)
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"INNEPRE");
end);
end;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"\n([^%S\n][^\n]*)",function(szablon)
return "\n"..ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"INNEPRE");
end);
return tekst_artykulu;
end;
local tab_znaczniki={};
local tab_numerki={};
local function PreprocesorSzablonow(tekst_artykulu)
tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,"(</?%a+%s+)([^<>\"]-\".-\"[^<>\"]-)(/?>)",function(szablon1,szablon2,szablon3)
if(not tab_element["ATRYBUTY"])then tab_element["ATRYBUTY"]={};end;
tab_element["ATRYBUTY"][#tab_element["ATRYBUTY"]+1]=szablon2;
local ile=#tab_element["ATRYBUTY"];
szablon2=p.NormaKoduKodowaniaTekstu("ATRYBUTY",ile);
return szablon1..szablon2..szablon3;
end);
--tekst_artykulu,ile_naprawy_znacznikow_4=mw.ustring.gsub(tekst_artykulu,"(</?)(%a+)(%s*[^<>]-%s*/?%s*>)",function(szablon1,szablon2,szablon3)
-- szablon2=mw.ustring.lower(szablon2);
-- return szablon1..szablon2..szablon3;
--end);
tekst_artykulu,ile_naprawy_znacznikow_1=mw.ustring.gsub(tekst_artykulu,"(<(/?)([^<>]*)>)",function(szablon,koniec,tekst)
if((not mw.ustring.match(tekst,"^%a+$"))and(not mw.ustring.match(tekst,"^%a+%s+.*$")))then
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],"<"..koniec);
local ile1=#tab_element["INNE"];
table.insert(tab_element["INNE"],">");
local ile2=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile1)..tekst..p.NormaKoduKodowaniaTekstu("INNE",ile2);
end;
end);
tekst_artykulu,ile_naprawy_znacznikow_2=mw.ustring.gsub(tekst_artykulu,"<(/?)(%a+)([^<>]-%s*)>",function(koniec,nazwa,tekst)
-----
if(koniec=="")then
local nazwa=mw.ustring.lower(nazwa);
table.insert(tab_znaczniki,nazwa);
local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$");
if(koniec_samozamykajacy=="/")then
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
end;
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end;
table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]);
local licznik=tab_licznik_poczatek[nazwa];
local szablon=nazwa..tekst;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
local jak=(typ~="ZNACZNIK")and "innebegin" or "begin";
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "<"..p.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
--return "<"..nazwa..tekst.."#LICZNIK:"..tab_licznik[nazwa]..">";
else
local nazwa=mw.ustring.lower(nazwa);
tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1;
local licznik;
if(#tab_znaczniki>0)then
if(tab_znaczniki[#tab_znaczniki]~=nazwa)then
local koniec=0;
for i=#tab_znaczniki-1,1,-1 do
if(tab_znaczniki[i]==nazwa)then
koniec=i;
break;
end;
end;
if(koniec>0)then
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
for i=koniec+1,#tab_znaczniki,1 do
tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1;
end;
for i=koniec,#tab_znaczniki,1 do
table.remove(tab_numerki[tab_znaczniki[i]]);
end;
for i=#tab_znaczniki,koniec,-1 do
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_poczatek[nazwa];
end;
else
licznik=tab_numerki[nazwa][#tab_numerki[nazwa]];
table.remove(tab_numerki[nazwa]);
table.remove(tab_znaczniki);
end;
else
tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1;
licznik=tab_licznik_koniec[nazwa];
end;
local szablon=nazwa..tekst;
if(not tab_element)then tab_element={};end;
local typ=ObiektFun(nazwa);
local jak=(typ~="ZNACZNIK")and "inneend" or "end";
if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end;
tab_element[nazwa..jak][licznik]=szablon;
return "</"..p.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">";
--return "</"..nazwa..tekst.."#LICZNIK:"..licznik..">";
end;
end);
function AnalizujDomykajace(tekst_artykulu,jak)
local tekst_artykulu,ile_znacznik_domykajacy=mw.ustring.gsub(tekst_artykulu,"<("..p.NormaWzoruKodowaniaTekstu("(%a+)"..jak.."begin","(%d+)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod)
local nazwa_przed=p.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^(%a+)(%s*)(.-)%s*(/?)%s*$");
nazwa=mw.ustring.lower(nazwa);
if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then
local szablon="<"..nazwa_przed..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
return nil;
end);
return tekst_artykulu;
end;
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne");
tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"");
----
return tekst_artykulu;
end;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
local NiedokonczoneElementyWikikodu;
local function Kompilacja(tekst_artykulu)
----
local ZamianaLINKWNaLINKZ=function(zawartosc)
local czy_url=html_modul["SprawdźURL"](zawartosc);
if(czy_url)then
local szablon="["..zawartosc.."]";
return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"LINKZ").."]"
else
local szablon="[["..zawartosc.."]]";
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"LINKW")
end;
end;
local function InneElementyWikikodu(tekst_artykulu)
local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela;
local function Szablon(szablon,obiekt,czy_linkw)
szablon=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element);
if(czy_linkw)then
local zawartosc=mw.ustring.match(szablon,"^%[%[(.+)%]%]$");
return ZamianaLINKWNaLINKZ(zawartosc);
else
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,obiekt)
end;
end;
repeat
tekst_artykulu,ile_linkw=mw.ustring.gsub(tekst_artykulu,"(%[%[[^%[%]{}<>]+%]%])",function(szablon) return Szablon(szablon,"LINKW",true);end);
tekst_artykulu,ile_linkz=mw.ustring.gsub(tekst_artykulu,"(%[[^%[%]{}<>]+%])",function(szablon) return Szablon(szablon,"LINKZ");end);
repeat
tekst_artykulu,ile_var=mw.ustring.gsub(tekst_artykulu,"({{{[^%[%]{}<>]-}}})",function(szablon) return Szablon(szablon,"ZMIENNA");end);
until (ile_var==0);
tekst_artykulu,ile_template=mw.ustring.gsub(tekst_artykulu,"({{[^%[%]{}<>]-}})",function(szablon) return Szablon(szablon,"SZABLON");end);
tekst_artykulu,ile_wikitabela=mw.ustring.gsub(tekst_artykulu,"({|[^%[%]{}<>]-|})",function(szablon) return Szablon(szablon,"WIKITABELA");end);
until ((ile_linkw==0)and(ile_linkz==0)and(ile_template==0)and(ile_wikitabela==0));
return tekst_artykulu;
end;
NiedokonczoneElementyWikikodu=function(tekst_artykulu)
local ile_znacznik_niedomykajacy_1;local ile_znacznik_nieotwierajacy_1;local ile_znacznik_niedomykajacy_2;local ile_znacznik_nieotwierajacy_2;local ile_wikitabela;
repeat
local function DomykajaceIOdtwierajace(tekst_artykulu,jak)
local ile_znacznik_niedomykajacy;local ile_znacznik_nieotwierajacy;
tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..p.NormaWzoruKodowaniaTekstu("(%a+)"..jak.."begin","(%d+)")..")>([^<>{}]-)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc)
local nazwa_przed=p.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
zawartosc=INNEPRE(zawartosc,true);
zawartosc=p.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^(%a+)(%s*)(.-)%s*$");
local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"ZNACZNIK");
end);
tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^([^<>{}]-)</("..p.NormaWzoruKodowaniaTekstu("(%a+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod)
local nazwa_po=p.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
zawartosc=INNEPRE(zawartosc);
zawartosc=p.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^(%a+)(%s*)(.-)%s*$");
local szablon="<"..nazwa..">"..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,"ZNACZNIK");
end);
return tekst_artykulu,ile_znacznik_niedomykajacy,ile_znacznik_nieotwierajacy;
end;
tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_znacznik_nieotwierajacy_1=DomykajaceIOdtwierajace(tekst_artykulu,"inne");
tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_znacznik_nieotwierajacy_2=DomykajaceIOdtwierajace(tekst_artykulu,"");
tekst_artykulu,ile_wikitabela_1=mw.ustring.gsub(tekst_artykulu,"({|[^{}<>]-)$",function(szablon)
szablon=INNEPRE(szablon,true);
return ZamienObiektSzablonuKodem(self,szablon.."|}",tablica_obiektow_strony_dany_modul,"WIKITABELA");
end);
tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^([^{}<>]-|})",function(szablon)
szablon=INNEPRE(szablon);
return ZamienObiektSzablonuKodem(self,"{|"..szablon,tablica_obiektow_strony_dany_modul,"WIKITABELA");
end);
until ((ile_znacznik_niedomykajacy_1==0)and(ile_znacznik_nieotwierajacy_1==0)and(ile_znacznik_niedomykajacy_2==0)and(ile_znacznik_nieotwierajacy_2==0)and(ile_wikitabela_1==0)and(ile_wikitabela_2==0));
return tekst_artykulu;
end;
local function ZnieklasyfikowaneZnaki(tekst_artykulu)
local ile_naprawy_znacznikow_1;local ile_naprawy_znacznikow_2;local ile_naprawy_znacznikow_3;local ile_naprawy_znacznikow_4;local ile_naprawy_znacznikow_5;local ile_naprawy_znacznikow_6;local ile_naprawy_znacznikow_7;local ile_naprawy_znacznikow_8;local ile_naprawy_znacznikow_9;local ile_naprawy_znacznikow_10;local ile_naprawy_znacznikow_11;
repeat
tekst_artykulu,ile_naprawy_znacznikow_1=mw.ustring.gsub(tekst_artykulu,"^(%[+%]+)",function(tekst)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst);
local ile=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile);
end);
tekst_artykulu,ile_naprawy_znacznikow_2=mw.ustring.gsub(tekst_artykulu,"(<)([^>]*<)",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst1);
local ile=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst2;
end);
tekst_artykulu,ile_naprawy_znacznikow_3=mw.ustring.gsub(tekst_artykulu,"(>[^<]*)(>)",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile);
end);
tekst_artykulu,ile_naprawy_znacznikow_4=mw.ustring.gsub(tekst_artykulu,"(<)([^>]*)$",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst1);
local ile=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst2;
end);
tekst_artykulu,ile_naprawy_znacznikow_5=mw.ustring.gsub(tekst_artykulu,"^([^<]*)(>)",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile);
end);
tekst_artykulu,ile_naprawy_znacznikow_6=mw.ustring.gsub(tekst_artykulu,"([^{])({)([^|{])",function(tekst1,tekst2,tekst3)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst3;
end);
tekst_artykulu,ile_naprawy_znacznikow_7=mw.ustring.gsub(tekst_artykulu,"([^|}])(})([^}])",function(tekst1,tekst2,tekst3)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst3;
end);
tekst_artykulu,ile_naprawy_znacznikow_8=mw.ustring.gsub(tekst_artykulu,"^({)([^|{])",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst1);
local ile=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst2;
end);
tekst_artykulu,ile_naprawy_znacznikow_9=mw.ustring.gsub(tekst_artykulu,"([^|}])(})$",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile);
end);
tekst_artykulu,ile_naprawy_znacznikow_10=mw.ustring.gsub(tekst_artykulu,"(%[)([^%]]*)$",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst1);
local ile=#tab_element["INNE"];
return p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst2;
end);
tekst_artykulu,ile_naprawy_znacznikow_11=mw.ustring.gsub(tekst_artykulu,"^([^%[]*)(%])",function(tekst1,tekst2)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile);
end);
tekst_artykulu,ile_naprawy_znacznikow_12=mw.ustring.gsub(tekst_artykulu,"^([^%[%]]*)(%[+)([^%[%]]*%[)",function(tekst1,tekst2,tekst3)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst3;
end);
tekst_artykulu,ile_naprawy_znacznikow_13=mw.ustring.gsub(tekst_artykulu,"(%][^%[%]]*)(%]+)([^%[%]]*)$",function(tekst1,tekst2,tekst3)
if(not tab_element)then tab_element={};end;
if(not tab_element["INNE"])then tab_element["INNE"]={};end;
table.insert(tab_element["INNE"],tekst2);
local ile=#tab_element["INNE"];
return tekst1..p.NormaKoduKodowaniaTekstu("INNE",ile)..tekst3;
end);
until ((ile_naprawy_znacznikow_1==0)and(ile_naprawy_znacznikow_2==0)and(ile_naprawy_znacznikow_3==0)and(ile_naprawy_znacznikow_4==0)and(ile_naprawy_znacznikow_5==0)and(ile_naprawy_znacznikow_6==0)and(ile_naprawy_znacznikow_7==0)and(ile_naprawy_znacznikow_8==0)and(ile_naprawy_znacznikow_9==0)and(ile_naprawy_znacznikow_10==0)and(ile_naprawy_znacznikow_11==0)and(ile_naprawy_znacznikow_12==0)and(ile_naprawy_znacznikow_13==0));
return tekst_artykulu;
end;
local function ZNACZNIKI(tekst_artykulu,jak)
local ile_odjac_znacznik_niedomykajacy=0;
local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..p.NormaWzoruKodowaniaTekstu("(%a+)"..jak.."begin","(%d+)")..")>(.-)</("..p.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2)
local nazwa_przed=p.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element);
local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^(%a+)(%s*)(.-)%s*$");
nazwa=mw.ustring.lower(nazwa);
local function TenZnacznik()
local nazwa_po=p.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element);
zawartosc=p.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(jak=="")then
zawartosc=INNEPRE(zawartosc,true);
end;
local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">";
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,ObiektFun(nazwa));
end;
if(not mw.ustring.match(atrybuty,"^%s*$"))then
if(odstepy~="")then
if((jak~="")or(not mw.ustring.match(zawartosc,"[<>{}]")))then
return TenZnacznik();
end;
end;
else
if((jak~="")or(not mw.ustring.match(zawartosc,"[<>{}]")))then
return TenZnacznik();
end;
end;
----
local ile_zastapione;local ile_pominiete;
zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak);
zawartosc=ZnieklasyfikowaneZnaki(zawartosc);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
zawartosc=InneElementyWikikodu(zawartosc);
if(not mw.ustring.match(zawartosc,"[<>{}]"))then
return TenZnacznik();
else
ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1;
local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">";
return szablon;
end;
end);
return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
end;
----
local function PracePrzygotowywujace(tekst_artykulu)
local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela;
local function Szablon(zawartosc,przed,po,obiekt,czy_linkw)
zawartosc=ZnieklasyfikowaneZnaki(zawartosc);
zawartosc=NiedokonczoneElementyWikikodu(zawartosc);
local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy;
zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,"");
zawartosc=InneElementyWikikodu(zawartosc);
zawartosc=p.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element);
if(czy_linkw)then
return ZamianaLINKWNaLINKZ(zawartosc);
else
local szablon=przed..zawartosc..po;
return ZamienObiektSzablonuKodem(self,szablon,tablica_obiektow_strony_dany_modul,obiekt);
end;
end;
repeat
tekst_artykulu,ile_linkw=mw.ustring.gsub(tekst_artykulu,"%[%[([^%[%]]+)%]%]",function(szablon)
return Szablon(szablon,"[[","]]","LINKW",true);
end);
tekst_artykulu,ile_linkz=mw.ustring.gsub(tekst_artykulu,"%[([^%[%]]+)%]",function(szablon)
return Szablon(szablon,"[","]","LINKZ");
end);
repeat
tekst_artykulu,ile_var=mw.ustring.gsub(tekst_artykulu,"{{{([^{}]-)}}}",function(szablon)
return Szablon(szablon,"{{{","}}}","ZMIENNA");
end);
until (ile_var==0);
tekst_artykulu,ile_template=mw.ustring.gsub(tekst_artykulu,"{{([^{}]-)}}",function(szablon)
return Szablon(szablon,"{{","}}","SZABLON");
end);
tekst_artykulu,ile_wikitabela=mw.ustring.gsub(tekst_artykulu,"{|([^{}]-)|}",function(szablon)
return Szablon(szablon,"{|","|}","WIKITABELA");
end);
until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0));
return tekst_artykulu;
end;
----
local ile_odjac_znacznik_niedomykajacy_1;
tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne");
ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1;
tekst_artykulu=PracePrzygotowywujace(tekst_artykulu);
----
local ile_odjac_znacznik_niedomykajacy_2;
tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,"");
return tekst_artykulu;
end;
PREWSTAWIAJACA=function(tekst_artykulu)
czy_wynik=nil;
tekst_artykulu=PreprocesorSzablonow(tekst_artykulu);
tekst_artykulu=Kompilacja(tekst_artykulu);
czy_wynik=true;
return tekst_artykulu;
end;
tekst_artykulu=Kompilacja(tekst_artykulu)
local function PoczatekKoniecTekst(tekst_artykulu)
local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul) or nil);
local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul) or nil);
if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then
tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek;
tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec;
tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or "");
end;
return tekst_artykulu;
end;
tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu);
local function PraceKoncowe(tekst_artykulu)
tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu);
return tekst_artykulu;
end;
tekst_artykulu=PraceKoncowe(tekst_artykulu);
tekst_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element);
tekst_artykulu=INNEPRE(tekst_artykulu);
tekst_artykulu=p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_obiektow_strony_dany_modul);
return tekst_artykulu;
end;
function UstawieniaPoczatkoweObiektowSzablonow()
if(not tablica_obiektow_strony_dany_modul)then
if(not self.tablica_obiektow_strony_dany_modul)then self.tablica_obiektow_strony_dany_modul={};end;
if(not self.tablica_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_obiektow_strony_dany_modul[nazwa_modulu]={};end;
---
tablica_obiektow_strony_dany_modul=self.tablica_obiektow_strony_dany_modul[nazwa_modulu];
end;
InicjujNumeryPoczatkoweObiektowSzablonow();
if(not __FUNKCJA3)then
tablica_obiektow_strony_dany_modul["ŹRÓDŁO"]={};
tablica_obiektow_strony_dany_modul["GALERIA"]={};
tablica_obiektow_strony_dany_modul["MAPAOBRAZU"]={};
tablica_obiektow_strony_dany_modul["SZABLON"]={};
tablica_obiektow_strony_dany_modul["LINKW"]={};
tablica_obiektow_strony_dany_modul["LINKZ"]={};
tablica_obiektow_strony_dany_modul["ZMIENNA"]={};
tablica_obiektow_strony_dany_modul["WIKITABELA"]={};
tablica_obiektow_strony_dany_modul["NOWIKI"]={};
tablica_obiektow_strony_dany_modul["MATH"]={};
tablica_obiektow_strony_dany_modul["PRE"]={};
tablica_obiektow_strony_dany_modul["INNEPRE"]={};
tablica_obiektow_strony_dany_modul["ZNACZNIK"]={};
end;
end;
----
UstawieniaPoczatkoweObiektowSzablonow();
---
tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu);
return tekst_artykulu;
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_obiektow_strony_dany_modul_uzyskany=nil;
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
if(not tablica_obiektow_strony_dany_modul_uzyskany)then tablica_obiektow_strony_dany_modul_uzyskany={};end;
if(not tablica_obiektow_strony_dany_modul_uzyskany["MATH"])then tablica_obiektow_strony_dany_modul_uzyskany["MATH"]={};end;
tablica_obiektow_strony_dany_modul_uzyskany["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_obiektow_strony_dany_modul_uzyskany;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_obiektow_strony_dany_modul)
if(not tablica_obiektow_strony_dany_modul)then tablica_obiektow_strony_dany_modul=self.tablica_obiektow_strony_dany_modul[nazwa_modulu];end;
local parametry_modul=require("Module:Parametry");
function NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,obiekt)
local __max=0;
for numer,_ in pairs(tablica_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_obiektow_strony_dany_modul,"ŹRÓDŁO");
numer_szablonu["GALERIA"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"GALERIA");
numer_szablonu["MAPAOBRAZU"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"MAPAOBRAZU");
numer_szablonu["SZABLON"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"SZABLON");
numer_szablonu["LINKW"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"LINKW");
numer_szablonu["LINKZ"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"LINKZ");
numer_szablonu["ZMIENNA"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"ZMIENNA");
numer_szablonu["WIKITABELA"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"WIKITABELA");
numer_szablonu["NOWIKI"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"NOWIKI");
numer_szablonu["MATH"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"MATH");
numer_szablonu["PRE"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"PRE");
numer_szablonu["INNEPRE"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"INNEPRE");
numer_szablonu["ZNACZNIK"]=NumerSzablonuObiektu(tablica_obiektow_strony_dany_modul,"ZNACZNIK");
return numer_szablonu;
end;
function p.KodSzablonuKodowaniaTekstu(szablon)
if(mw.ustring.match(szablon,"^<[Pp][Rr][Ee]%s*[^<>]*>.-</[Pp][Rr][Ee]%s*>$"))then
return "PRE";
elseif(mw.ustring.match(szablon,"^<[Nn][Oo][Ww][Ii][Kk][Ii]%s*[^<>]*>.-</[Nn][Oo][Ww][Ii][Kk][Ii]%s*>$"))then
return "NOWIKI";
elseif(mw.ustring.match(szablon,"^<[Mm][Aa][Tt][Hh]%s*[^<>]*>.-</[Mm][Aa][Tt][Hh]%s*>$"))then
return "MATH";
elseif((mw.ustring.match(szablon,"^<[Ss][Yy][Nn][Tt][Aa][Xx][Hh][Ii][Gg][Hh][Ll][Ii][Gg][Hh][Tt]%s*[^<>]*>.-</[Ss][Yy][Nn][Tt][Aa][Xx][Hh][Ii][Gg][Hh][Ll][Ii][Gg][Hh][Tt]>$"))
or(mw.ustring.match(szablon,"^<[Ss][Oo][Uu][Rr][Cc][Ee]%s*[^<>]*>.-</[Ss][Oo][Uu][Rr][Cc][Ee]>$"))
)then
return "ŹRÓDŁO";
elseif(mw.ustring.match(szablon,"^<[Gg][Aa][Ll][Ll][Ee][Rr][Yy]%s*[^<>]*>.-</[Gg][Aa][Ll][Ll][Ee][Rr][Yy]>$"))then
return "GALERIA";
elseif(mw.ustring.match(szablon,"^<[Ii][Mm][Aa][Gg][Ee][Mm][Aa][Pp]%s*[^<>]*>.-</[Ii][Mm][Aa][Gg][Ee][Mm][Aa][Pp]>$"))then
return "MAPAOBRAZU";
elseif(mw.ustring.match(szablon,"^<[^<>]+>.-</[^<>]>"))then
return "ZNACZNIK";
elseif(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";
end;
return;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3)
if(not tablica_obiektow_strony_dany_modul)then tablica_obiektow_strony_dany_modul=self.tablica_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji)
local iter;
if(tekst_rozwiniety_calego_artykulu=="")then
iter=function()
return function()
return nil;
end;
end;
else
iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_obiektow_strony_dany_modul[obiekt])or(not tablica_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_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_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_obiektow_strony_dany_modul[obiekt])or(not tablica_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_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);
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),tablica_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local techniczne_modul=require("Module:Techniczne");
local iterator,tablica_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5);
local poziom_iteracji_poprz=0;
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;
local szablon2;local wynik;
if(__funkcja1)then
szablon2,wynik=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if(not tab_dane)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
else
local tab_pos=tab_dane[#tab_dane];
local obiekt=tab_pos[1];local kod=tab_pos[2];
local tekst=tablica_obiektow_strony_dany_modul[obiekt][kod];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_obiektow_strony_dany_modul[obiekt][kod]=tekst;
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;
else
if(poziom_iteracji==0)then
if(not tab_dane)then tab_dane={};end;
tab_dane[1]={obiekt,kod};
elseif(poziom_iteracji_poprz<poziom_iteracji)then
if(not tab_dane)then tab_dane={};end;
table.insert(tab_dane,{obiekt,kod});
else
if(tab_dane)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
else
tab_dane={};
end;
table.insert(tab_dane,{obiekt,kod});
end;
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;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_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_obiektow_strony_dany_modul,tablica_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_obiektow_strony_dany_modul,nil,nil,function(szablon,obiekt,kod)
if(czy_nie_wyzej)then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_obiektow_strony_dany_modul,tablica_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;
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;
end;
poziom_iteracji_poprz=poziom_iteracji;
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);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,tablica_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_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
function p.PrzeksztalacanieBazyDanychKodowaniaTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul,wynik,obiekt,kod,poziom_iteracji)
if(not tablica_obiektow_strony_dany_modul)then tablica_obiektow_strony_dany_modul=self.tablica_obiektow_strony_dany_modul[nazwa_modulu];end;
----
--[[local obiekt_wyniku=p.KodSzablonuKodowaniaTekstu(wynik);
if(obiekt_wyniku)then
if(obiekt_wyniku==obiekt)then
return tekst_rozwiniety_calego_artykulu;
end;
tablica_obiektow_strony_dany_modul[obiekt][kod]=nil;
tablica_obiektow_strony_dany_modul[obiekt_wyniku][#tablica_obiektow_strony_dany_modul[obiekt_wyniku]+1]=wynik;
return tekst_rozwiniety_calego_artykulu;
end;]]
if(poziom_iteracji==0)then
tekst_rozwiniety_calego_artykulu,_=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),wynik);
return tekst_rozwiniety_calego_artykulu;
end;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul)
for szablon,obiekt_szablonu,kod_szablonu,poziom_iteracji_szablonu in iterator do
if(poziom_iteracji_szablonu+1==poziom_iteracji)then
if(mw.ustring.match(szablon,p.NormaWzoruKodowaniaTekstu(obiekt,kod)))then
local text,_=mw.ustring.gsub(szablon,p.NormaWzoruKodowaniaTekstu(obiekt,kod),wynik);
tablica_obiektow_strony_dany_modul[obiekt_szablonu][kod_szablonu]=text;
tablica_obiektow_strony_dany_modul[obiekt][kod]=nil;
break;
end;
end;
end;
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,tablica_obiektow_strony_dany_modul,numer_szablonu,tablica_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3)
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_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony) or nazwa_szablonu;
end,tablica_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))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,};
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu);
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);
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);
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_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_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony)
if(not tablica_obiektow_strony_dany_modul)then
if(not self.tablica_obiektow_strony_dany_modul)then self.tablica_obiektow_strony_dany_modul={};end;
if(not self.tablica_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_obiektow_strony_dany_modul=self.tablica_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_parametrow_szablonu_strony=tablica_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3)
local tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_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_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_obiektow_strony_dany_modul,numer_szablonu)
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,tablica_obiektow_strony_dany_modul,numer_szablonu,tablica_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3);
end);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3)
local tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,tablica_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
repeat
local iter=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul);
local czy_wynik=false;
for szablon,obiekt,kod,poziom_iteracji in iter do
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul);
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul,numer_szablonu,tablica_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3);
if(wynik)then
tekst_rozwiniety_calego_artykulu=p.PrzeksztalacanieBazyDanychKodowaniaTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul,wynik,obiekt,kod,poziom_iteracji);
czy_wynik=czy_wynik or wynik;
end;
end;
end;
until(not czy_wynik);
----
return tekst_rozwiniety_calego_artykulu;
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)
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)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;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(nazwa_szablonu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
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;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonuModułuKomunikatu"]=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)
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);
return p["SzablonowaNazwaStrony"](czy_szablon),tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,nie_trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_parametrow_szablonu_strony,kod)
if((tablica_parametrow_szablonu_strony)and(kod))then
local tabela_parametrow_szablonu=tablica_parametrow_szablonu_strony[1] and tablica_parametrow_szablonu_strony[1][kod] or nil;
if(tabela_parametrow_szablonu)then return tabela_parametrow_szablonu.parametry,tabela_parametrow_szablonu.nazwa_szablonu,tabela_parametrow_szablonu.tabela_modyfikatorow;end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
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;
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,nie_trimuj_numerowane);
----
if((tablica_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[1])then tablica_parametrow_szablonu_strony[1]={};end;
tablica_parametrow_szablonu_strony[1][kod]={};
local tab_szablonu=tablica_parametrow_szablonu_strony[1][kod];
tab_szablonu.parametry=tabela_parametrow_szablonu;
tab_szablonu.nazwa_szablonu=nazwa_szablonu;
tab_szablonu.tabela_modyfikatorow=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_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[1])then tablica_parametrow_szablonu_strony[1]={};end;
tablica_parametrow_szablonu_strony[1][kod]={};
local tab_szablonu=tablica_parametrow_szablonu_strony[1][kod];
tab_szablonu.parametry=tabela_parametrow_szablonu;
tab_szablonu.nazwa_szablonu=nazwa_szablonu;
tab_szablonu.tabela_modyfikatorow=tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,nie_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,nie_trimuj_numerowane);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,nie_trimuj_numerowane);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,nie_trimuj_numerowane);
end;
return nil;
end;
function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,nie_trimuj_numerowane)
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania.."\n","^([^|=]-)$");
if(kawalek_wywolania_element_nienazwany)then
tworzona_tabela[#tworzona_tabela+1]=((not nie_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 tab_modyfikatory={
["#invoke:"]={"[%s_]*#[%s_]*invoke[%s_]*:[%s_]*","Module",},
["#if:"]={"[%s_]*#[%s_]*if[%s_]*:[%s_]*",nil,},
["#ifeq:"]={"[%s_]*#[%s_]*ifeq[%s_]*:[%s_]*",nil,},
["#tag:"]={"[%s_]*#[%s_]*tag[%s_]*:[%s_]*",nil,},
["#switch:"]={"[%s_]*#[%s_]*switch[%s_]*:[%s_]*",nil,},
["#property:"]={"[%s_]*#[%s_]*property[%s_]*:[%s_]*",nil,},
["int:"]={"[%s_]*int[%s_]*:[%s_]*","MediaWiki",},
["msg:"]={"[%s_]*msg[%s_]*:[%s_]*","Template",},
["msgnw:"]={"[%s_]*msgnw[%s_]*:[%s_]*","Template"},
["raw:"]={"[%s_]*raw[%s_]*:[%s_]*","Template",},
["subst:"]={"[%s_]*subst[%s_]*:[%s_]*",nil,},
["safesubst:"]={"[%s_]*safesubst[%s_]*:[%s_]*",nil,}
}
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)
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:"])
)then
return false;
end;
end;
if(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;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony)
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_obiektow_strony_dany_modul_uzyskany,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_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.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon,tablica_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_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_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_obiektow_strony_dany_modul_uzyskany,tablica_parametrow_szablonu_strony)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_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;
-----
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].."]";
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(szablon,tablica_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].."]";
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_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_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if((obiekt=="MATH")or(obiekt=="NOWIKI")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))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_obiektow_strony_dany_modul_uzyskany,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_obiektow_strony_dany_modul_uzyskany);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_obiektow_strony_dany_modul_uzyskany);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=mw.ustring.match(szablon_rozwiniete,"^%[%[.-[%[%]].-%]%]$");
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_obiektow_strony_dany_modul_uzyskany);
--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;
function p.WydzielanieNazwyIOpcjiAtrybutowychZeZnacznika(znacznik,tablica_parametrow_szablonu_strony,kod)
if((tablica_parametrow_szablonu_strony)and(kod))then
local tabela_parametrow_znacznika=tablica_parametrow_szablonu_strony[2] and tablica_parametrow_szablonu_strony[2][kod] or nil;
if(tabela_parametrow_znacznika)then
return tabela_parametrow_znacznika.nazwa_znacznika,tabela_parametrow_znacznika.istota_znacznika,tabela_parametrow_znacznika.atrybuty_znacznika;
end;
end;
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<(%a+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[2])then tablica_parametrow_szablonu_strony[2]={};end;
tablica_parametrow_szablonu_strony[2][kod]={};
local tab_znacznika=tablica_parametrow_szablonu_strony[2][kod];
tab_znacznika.nazwa_znacznika=nazwa;
tab_znacznika.istota_znacznika=zawartosc;
tab_znacznika.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_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[2])then tablica_parametrow_szablonu_strony[2]={};end;
tablica_parametrow_szablonu_strony[2][kod]={};
local tab_znacznika=tablica_parametrow_szablonu_strony[2][kod];
tab_znacznika.nazwa_znacznika=nazwa;
tab_znacznika.istota_znacznika=nil;
tab_znacznika.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_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[2])then tablica_parametrow_szablonu_strony[2]={};end;
tablica_parametrow_szablonu_strony[2][kod]={};
local tab_znacznika=tablica_parametrow_szablonu_strony[2][kod];
tab_znacznika.nazwa_znacznika=nil;
tab_znacznika.istota_znacznika=nil;
tab_znacznika.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_parametrow_szablonu_strony)and(kod))then
if(not tablica_parametrow_szablonu_strony[2])then tablica_parametrow_szablonu_strony[2]={};end;
tablica_parametrow_szablonu_strony[2][kod]={};
local tab_znacznika=tablica_parametrow_szablonu_strony[2][kod];
tab_znacznika.nazwa_znacznika=nazwa;
tab_znacznika.istota_znacznika=zawartosc;
tab_znacznika.atrybuty_znacznika=tab;
end;
return mw.ustring.lower(nazwa),zawartosc,tab;
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;