Uwaga |
---|
Moduł:Techniczne
Przejdź do nawigacji
Przejdź do wyszukiwania
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Techniczne/opis
local p={};
p["ParsujWywołanieSzablonu"] = function(wywolanie_szablonu)
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-}}$");
if(not wywolanie_bez_parametrow)then
local parametry_szablonu={};
parametry_szablonu[0]=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^{}|]-)%s*|.-}}$"));
if(parametry_szablonu[0])then
return Parametry(wywolanie_szablonu,parametry_szablonu,"");
else return nil;end;
else
local parametry_szablonu={};
parametry_szablonu[0]=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^{}|]-)%s*}}$"));
if(parametry_szablonu[0])then
return parametry_szablonu;
else return nil;end;
end;
end;
function Parametry(wywolanie_szablonu, parametry_szablonu, tekst_do_rozwazania)
if(parametry_szablonu)then
local tekst_do_rozwazania2=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-|"..tekst_do_rozwazania.."%s*([^{}|]-)%s*|.*}}$");
if(tekst_do_rozwazania2)then
if(tekst_do_rozwazania~="")then
parametry_szablonu=ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
if(parametry_szablonu)then
return Parametry(wywolanie_szablonu,parametry_szablonu, tekst_do_rozwazania.."%s*[^{}|]-%s*|");
else
return nil;
end;
else
parametry_szablonu=ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
if(parametry_szablonu)then
return Parametry(wywolanie_szablonu,parametry_szablonu, "%s*[^{}|]-%s*|");
else
return nil;
end;
end;
end;
tekst_do_rozwazania2=mw.ustring.match(wywolanie_szablonu,"^{{[^{}|]-|"..tekst_do_rozwazania.."%s*([^{}|]-)%s*}}$")
if(tekst_do_rozwazania2)then
return ZbierzParametry(parametry_szablonu, tekst_do_rozwazania2);
else
return nil;
end;
end;
return nil;
end;
function ZbierzParametry(tworzona_tabela, kawalek_wywolania)
local kawalek_wywolania2=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*$");
if(kawalek_wywolania2)then
tworzona_tabela[#tworzona_tabela+1]=mw.text.trim(kawalek_wywolania2);
return tworzona_tabela;
else
local kawalek_wywolania21,kawalek_wywolania22=mw.ustring.match(kawalek_wywolania,"^%s*([^|{}=]-)%s*=%s*([^|{}]-)%s*$");
if((kawalek_wywolania21)and(kawalek_wywolania22))then
for nazwa_elementu_tworzonej_tabeli, _ in pairs(tworzona_tabela) do
if(type(nazwa_elementu_tworzonej_tabeli)=="string")then
if(nazwa_elementu_tworzonej_tabeli==kawalek_wywolania21)then return nil; end;
else
local nazwa_elementu_tworzonej_tabeli=tworzona_tabela[tonumber(kawalek_wywolania21)];
if(nazwa_elementu_tworzonej_tabeli)then return nil;end;
end;
end;
if(not mw.ustring.match(kawalek_wywolania21,"^%d+$"))then
tworzona_tabela[kawalek_wywolania21]=mw.text.trim(kawalek_wywolania22);
return tworzona_tabela;
else
tworzona_tabela[tonumber(kawalek_wywolania21)]=mw.text.trim(kawalek_wywolania22);
return tworzona_tabela;
end;
else
return nil;
end;
end;
return nil;
end;
p["PokażSzablon"]=function(szablon, args)
local result = {}
local flags = {}
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.NazwaSzablonu(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 ":"..nazwa;
else
return nazwa;
end;
end;
p["Pierwszy niepusty"]= function(frame)
local parametry_modul=require("Module:Parametry");
local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
local i=1;
local parametry_modul=require("Module:Parametry");
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNumerowanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return "";end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
return;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame)or nil;
local pelna_nazwa_strony=czy and (args["nazwa"] or args[1]) or (not czy and frame);
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:%1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony0=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony2=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local patternopis=mw.ustring.gsub(pelna_nazwa_strony0,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony2,"^"..patternopis.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony2);
local przetworzona_nazwa_strony,_=mw.ustring.gsub(nazwa_strony,"(%%)","%%%%");
przetworzona_nazwa_strony,_=mw.ustring.gsub(przetworzona_nazwa_strony,"/%s*$","");
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony2;
end;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or nil;
local nazwa=czy and (args["nazwa"] or args[1]) or (not czy and frame);
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",function (s) return ((mw.ustring.match(s,"^%a$"))and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")or s);end )
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
return wzor;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or nil;
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=czy and (args["nazwa"] or args[1]) or (not czy and frame);
local uchwyt_przestrzeni_nazw;
if(mw.ustring.match(nazwa_przestrzeni_nazw_lub_jego_identyfikator,"^%s*[%+%-]?%d+%s*$"))then
local identyfikator,_=mw.ustring.match(nazwa_przestrzeni_nazw_lub_jego_identyfikator,"^%s*([%+%-]?%d+)%s*$");
uchwyt_przestrzeni_nazw=mw.site.namespaces[tonumber(mw.text.trim(identyfikator))];
else
uchwyt_przestrzeni_nazw=mw.site.namespaces[nazwa_przestrzeni_nazw_lub_jego_identyfikator];
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or nil;
local strona=czy and (args["nazwa"] or args[1]) or (not czy and frame);
local wzor,_=mw.ustring.gsub(strona,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
return wzor;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or nil;
args=czy and args or ((not czy and frame~=nil)and {frame,} or {});
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony = mw.title.makeTitle('',nazwa_strony);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]=uchwyt_strony;
if(((uchwyt_strony~=nil)and(uchwyt_strony.exists)))then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["UrlBezProtokołu"]=function(url)
return mw.ustring.gsub(url,"^(%a+:)(//)","%2");
end;
p["WyświetlajKodySpecjalne"]=function(frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local args=czy and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or nil;
local techniczne_modul=require("Module:Techniczne");
local text=czy and (args["nazwa"] or args[1]) or (not czy and frame);
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local przestrzen;local nazwa;
if (type(frame)=="table") then
local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
przestrzen=args["miano przestrzeni nazw"] or args["przestrzeń"] or "Template";
nazwa=args["nazwa strony"] or args["nazwa"] or args[1];
elseif(frame)then
przestrzen="Template";
nazwa=frame;
else
return;
end;
local title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.*</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.*)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
local nko=html_modul.KodHTMLZnaku("{");
local nkz=html_modul.KodHTMLZnaku("}");
local k=html_modul.KodHTMLZnaku("|");
local r=html_modul.KodHTMLZnaku("=");
local s=1;
repeat
repeat
text=mw.ustring.gsub(text,"{{{([^{}|]+)|([^{}]*)}}}",nko..nko..nko.."%1"..k.."%2"..nkz..nkz..nkz);
text=mw.ustring.gsub(text,"{{{([^{}|]+)}}}",nko..nko..nko.."%1"..nkz..nkz..nkz);
until not(mw.ustring.match(text,"{{{([^{}|]+)|([^{}]*)}}}") or mw.ustring.match(text,"{{{([^{}|]+)}}}"));
text=mw.ustring.gsub(text,"{{([^{}]+)}}","&#@p"..s..";%1&#@k"..s..";");
repeat
text=mw.ustring.gsub(text,"&#@p"..s..";([^|]-)|(.-)&#@k"..s..";","&#@p"..s..";%1&#@s"..s..";%2&#@k"..s..";");
until not mw.ustring.match(text,"&#@p"..s..";([^|]-)|(.-)&#@k"..s..";");
s=s+1;
until not (mw.ustring.match(text,"{{[^{}]+}}") or (mw.ustring.match(text,"{{{([^{}|]+)|([^{}]*)}}}") or mw.ustring.match(text,"{{{([^{}|]+)}}}")));
for w=1,s-1,1 do
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";[^#{}|].-)&#@s"..w..";(.-".."&#@k"..w..";)","%1|%2");
until not mw.ustring.match(text,"(&#@p"..w..";[^#{}|].-)&#@s"..w..";(.-".."&#@k"..w..";)");
text=mw.ustring.gsub(text,"&#@p"..w..";([^#{}|].-)".."&#@k"..w..";","{{s|%1}}");
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";#invoke:.-)&#@s"..w..";(.-".."&#@k"..w..";)","%1|%2");
until not mw.ustring.match(text,"(&#@p"..w..";#invoke:.-)&#@s"..w..";(.-".."&#@k"..w..";)");
text=mw.ustring.gsub(text,"&#@p"..w..";#invoke:(.-)".."&#@k"..w..";","{{m|%1}}");
repeat
text=mw.ustring.gsub(text,"(&#@p"..w..";#%w+:.-)&#@s"..s..";(.-".."&#@k"..w..";)","%1"..k.."%2");
until not mw.ustring.match(text,"(&#@p"..w..";#%w+:.-)&#@s"..s..";(.-".."&#@k"..w..";)")
text=mw.ustring.gsub(text,"&#@p"..w..";(#%w+:.-)".."&#@k"..w..";",nko..nko.."%1"..nkz..nkz);
end;
text=mw.ustring.gsub(text,"=",r)
local mniejszy=html_modul.KodHTMLZnaku("<");
local wiekszy=html_modul.KodHTMLZnaku(">");
text=mw.ustring.gsub(text,"<",mniejszy);
text=mw.ustring.gsub(text,">",wiekszy)
local kwaratowy_lewy=html_modul.KodHTMLZnaku("[");
local kwadratowy_prawy=html_modul.KodHTMLZnaku("]");
local kreska_pionowa=html_modul.KodHTMLZnaku("|");
text=mw.ustring.gsub(text,"%[%[([^%[%]|]*)|([^%[%]]*)%]%]",kwaratowy_lewy..kwaratowy_lewy.."%1"..kreska_pionowa.."%2"..kwadratowy_prawy..kwadratowy_prawy);
text=mw.ustring.gsub(text,"%[%[([^%[%]|]*)%]%]",kwaratowy_lewy..kwaratowy_lewy.."%1"..kwadratowy_prawy..kwadratowy_prawy);
text=mw.ustring.gsub(text,"\n#","\n"..hash);
text=mw.ustring.gsub(text,"^#",hash);
text=frame:getParent():preprocess(text);
return text;
end;
p["WikikodStrony"]=function(frame)
local parametry_modul=require("Module:Parametry");
local przestrzen;local nazwa;
if (type(frame)=="table") then
local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
przestrzen=args["miano przestrzeni nazw"] or args["przestrzeń"] or "Template";
nazwa=args["nazwa strony"] or args["nazwa"] or args[1];
elseif(frame)then
przestrzen="Template";
nazwa=frame;
else
return;
end;
local title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.*</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.*)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
p["RozwiniętyWikikodStrony"]=function (frame)
local parametry_modul=require("Module:Parametry");
local czy=(type(frame)=="table");
local czy_wyspecjalizowana=(czy and frame.args) and parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) or false;
local przestrzen;local nazwa;local args;
if czy then
args=frame and ((frame.getParent and (czy_wyspecjalizowana and frame or frame:getParent()) or frame).args or frame) or nil;
przestrzen=args["Miano przestrzeni nazw"] or args["Przestrzeń"] or "Template";
nazwa=args["Nazwa strony"] or args["Nazwa"];
elseif(frame)then
przestrzen="Template";
nazwa=frame;
else
return;
end;
local title=mw.title.makeTitle(przestrzen,nazwa);
if((not title)or (not title.exists))then return;end;
local text=title:getContent();
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.*</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.*)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={["Nazwa strony"]=true,["Nazwa"]=true,["Miano przestrzeni nazw"]=true,["Przestrzeń"]=true,};
if czy_wyspecjalizowana then
bezkluczy["wyspecjalizowana"]=true;
bezkluczy["nie rozwiń"]=true;
end;
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
local czy2=(czy and frame.args);
text=(czy2 and (not parametry_modul.CzyTak(frame.args["nie rozwiń"])) or (not czy2 and true)) and frame2:preprocess(text) or text;
return text;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local tekst;
if (type(frame)=="table") then
local parametry_modul=require("Module:Parametry");
local args=frame and ((frame.getParent and (parametry_modul.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame).args or frame) or {};
tekst=args["tekst"] or args[1];
else
tekst=frame;
end;
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local h=html_modul.KodHTMLZnaku("#");
local s=html_modul.KodHTMLZnaku(";");
tekst,_=mw.ustring.gsub(tekst,"&#(%d+);",i..h.."%1"..s);
tekst,_=mw.ustring.gsub(tekst,"&(%a+);",i.."%1"..s);
tekst="<nowiki>"..tekst.."</nowiki>";
local ramka_modul=require("Module:Ramka");
local frame2=frame:getParent():newChild{args={[1]=tekst,}}
tekst=ramka_modul["Rozwiń"](frame2);
return tekst;
end;
return p;