Moduł:Html
Przejdź do nawigacji
Przejdź do wyszukiwania
Zobacz podstrony tego modułu.
|
local p={};
function p.TransformacjaKlasyZnakowej(wyrazenie_do_transformacji)
wyrazenie_do_transformacji=mw.ustring.gsub(wyrazenie_do_transformacji,"([%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
return wyrazenie_do_transformacji;
end;
p["TransformacjaKoduZnakuDoZnakuŁancucha"]=function(wyrazenie_do_transformacji)
return mw.ustring.gsub(wyrazenie_do_transformacji,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end)
end;
function p.ZnakiSpecjalneWikiLinku(ciag)
local tab_nawiasy={
["{"]="&#"..mw.ustring.byte("{")..";",
["}"]="&#"..mw.ustring.byte("}")..";",
["|"]="&#"..mw.ustring.byte("|")..";",
}
ciag,_=mw.ustring.gsub(ciag,"([{}|])",tab_nawiasy);
return ciag;
end;
function p.KodHTMLZnaku(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local znak=PobierzParametr(1);
local czy_kod_znaku=PobierzParametr(2);
local czy_tak=parametry_modul["CzyTakCiąg"](czy_kod_znaku);
if(czy_tak)then
return "&#"..tostring(mw.ustring.byte(znak))..";";
else
return "&#"..tostring(mw.ustring.byte(znak))..";";
end;
end;
p["KodyHTMLZnakówWikiCiągu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local ciag_znakow=PobierzParametr(1);
local czy_kod_znaku=PobierzParametr(2);
local tabznakow={
["|"]=p.KodHTMLZnaku{"|",czy_kod_znaku,},
["["]=p.KodHTMLZnaku{"[",czy_kod_znaku,},
["]"]=p.KodHTMLZnaku{"]",czy_kod_znaku,},
["{"]=p.KodHTMLZnaku{"{",czy_kod_znaku,},
["}"]=p.KodHTMLZnaku{"}",czy_kod_znaku,},
["<"]=p.KodHTMLZnaku{"<",czy_kod_znaku,},
[">"]=p.KodHTMLZnaku{">",czy_kod_znaku,},
["="]=p.KodHTMLZnaku{"=",czy_kod_znaku,},
["/"]=p.KodHTMLZnaku{"/",czy_kod_znaku,},
};
local ciag,_=mw.ustring.gsub(ciag_znakow,"(.)",tabznakow);
return ciag;
end;
function p.EncodeWiki(parametr)
local parametr,_=mw.ustring.gsub(parametr,"[_%s]+","_");
if((not mw.ustring.match(parametr,"&(%d+);"))and(not mw.ustring.match(parametr,"&%a+;")))then
parametr=mw.text.encode(parametr);
end;
return parametr;
end;
function p.DecodeWiki(parametr)
local parametr,_ = mw.ustring.gsub(parametr,"[_%s]+"," ");
parametr=mw.text.decode(parametr);
local html_modul=require("Module:Html");
parametr=html_modul["TransformacjaKoduZnakuDoZnakuŁancucha"](parametr);
return parametr;
end;
function p.IsEncodedHtml(parametr,encode,encode_real)
return ((encode_real)and(mw.ustring.match(parametr,"^[%w%p%s]*$")and(mw.ustring.match(parametr,"[^%%]"))))
or((encode)and(mw.ustring.match(parametr,"^[^%%]*$")))
or(((not encode_real)or((encode_real)and(mw.ustring.match(parametr,"^[%w%s%p%%]*$"))))
and(mw.ustring.match(parametr,"%%%x%x"))
and(not mw.ustring.match(parametr,"%%$"))
and(not mw.ustring.match(parametr,"%%.$"))
and(not mw.ustring.match(parametr,"%%[^%x]."))
and(not mw.ustring.match(parametr,"%%.[^%x]")));
end;
function p.EncodeHtml(parametr,encode,encode_real)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
return p.EncodeWiki(parametr);
end;
return mw.uri.encode(parametr,"WIKI");
end;
function p.DecodeHtml(parametr,spacje,encode,encode_real)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
if(spacje)then
return p.DecodeWiki(mw.uri.decode(parametr,"WIKI"));
else
return p.EncodeWiki(mw.uri.decode(parametr,"WIKI"));
end;
end;
if(spacje)then
return p.DecodeWiki(parametr);
else
return p.EncodeWiki(parametr);
end;
end;
function p.EncodeParametryHtml(parametr)
local parametr,_=mw.ustring.gsub(parametr,"^([^=]*)=([^&]*)", function(a,b)return p.EncodeHtml(a).."="..p.EncodeHtml(b);end);
parametr,_=mw.ustring.gsub(parametr,"&([^=]*)=([^&]*)", function(a,b)return "&"..p.EncodeHtml(a).."="..p.EncodeHtml(b);end);
return parametr;
end;
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslnikie)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
local naglowek=mw.ustring.match(nazwa_jednostki,"^[^#]*#(.*)$");
naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",[3]=((not czy_nie_dolne_myslnikie)and "tak" or nil),};
return naglowek;
end;
p["ParametryStronyAdresu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
local bez_naglowka,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1");
local parametry=mw.ustring.match(bez_naglowka,"^.-%?([^&]+=[^&]*.*)$");
return parametry;
end;
p["NazwaStronyAdresu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1");
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^(.-)%?[^&]+=[^&]*.*$","%1");
local html_modul=require("Module:Html");
local czy_url=html_modul["SprawdźURL"](nazwa_jednostki);
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",[3]=czy_url and true or false,};
return nazwa_jednostki;
end;
p["NazwaStronyZParametrówStronyAdresu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local parametry_strony=PobierzParametr("parametry") or PobierzParametr(1);
if(parametry_modul.CzyTak(parametry_strony))then
local nazwa_strony_linku;
if(mw.ustring.match(parametry_strony,"^title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^title=([^&]+)&?.*$");
parametry_strony,_=mw.ustring.gsub(parametry_strony,"^title=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&title=([^&]+)&?.*$");
parametry_strony,_=mw.ustring.gsub(parametry_strony,"&title=([^&]+).*$","");
end;
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_strony_linku,[2]="tak",};
return nazwa_strony_linku,parametry_strony;
else
return nil;
end;
end;
p["PoprawAdresNagłówkaStronyAdresu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",};
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]-)%s*#%s*","%1#");
return nazwa_jednostki;
end;
p["URLStrona"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
local z_ukosnikiem=parametry_modul.CzyTak(PobierzParametr("ukośnik") or PobierzParametr(2));
local serwer,nazwa=mw.ustring.match(url,"^//([a-zA-Z0-9_%+%-%.]+)"..((z_ukosnikiem) and "/" or "").."(/?.*)$");
return serwer,nazwa;
end;
p["UrlBezProtokołu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
return mw.ustring.gsub(url,"^(%a+:)(//)","%2");
end;
local function checkUri(uri)
local urilen = #uri
for _,v in ipairs(mw.loadData("Module:Html/dane").obslugiwaneUriSchematy) do
if (#v < urilen) and (string.lower(string.sub(uri,1, #v)) == v) then
return not string.match(uri, '%s')
end
end
end;
p["SprawdźURL"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
return checkUri(url);
end;
return p;