Moduł:Html
Wygląd
|
Zobacz podstrony tego modułu.
|
local p={};
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(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["TransformacjaKoduHtmlDoZnakuCiągu"]=function(wyrazenie_do_transformacji)
local wynik,_=mw.ustring.gsub(wyrazenie_do_transformacji,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end)
return wynik;
end;
function p.ZnakiSpecjalneTaguNowiki(ciag)
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
ciag,_=mw.ustring.gsub(ciag,"([{}|=<>%[%]])",tab_nawiasy);
return ciag;
end;
function p.ZnakiSpecjalneWikiLinku(ciag)
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
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);
if(not parametry_modul.CzyTak(znak))then return "(błąd)";end;
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);
if(not parametry_modul.CzyTak(ciag_znakow))then return "(błąd)";end;
local czy_kod_znaku=PobierzParametr(2);
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_znakowo_kodowa={};
local tabela_znakowa=html_dane_modul.tabela_znakowa;
local ciag,_=mw.ustring.gsub(ciag_znakow,"(.)",function(znak)
if(tabela_znakowa[znak])then
if(tab_znakowo_kodowa[znak])then
return tab_znakowo_kodowa[znak];
end;
tab_znakowo_kodowa[znak]=p.KodHTMLZnaku{znak,czy_kod_znaku};
return tab_znakowo_kodowa[znak];
end;
return nil;
end);
return ciag;
end;
function p.EncodeId(id,bez_transformacji)
id=(not bez_transformacji) and p["TransformacjaKoduHtmlDoZnakuCiągu"](id) or id;
local id,_=mw.ustring.gsub(id,"([{}|%[%]])",function(s)
return "&#"..mw.ustring.byte(s)..";";
end);
return id;
end;
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)
parametr=mw.ustring.gsub(parametr,"","");
return parametr;
end;
function p.EncodeWiki(parametr)
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametry_modul=require("Module:Parametry");
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",[3]="tak",};
parametr=mw.text.encode(parametr);
return parametr;
end;
function p.DecodeWiki(parametr)
parametr=mw.text.decode(parametr);
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametry_modul=require("Module:Parametry");
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",};
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;
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)
znacznik=mw.ustring.gsub(znacznik,"([\"'])(.-)(%1)",function(cudzyslow_otwierajacy,atrybut,cudzyslow_zamykajacy)
local ile1;local ile2;
atrybut,ile1=mw.ustring.gsub(atrybut,"([<>&])",function(a)
return mw.text.encode(a);
end);
atrybut,ile2=mw.ustring.gsub(atrybut,"(\\\")",function(a)
return p["KodyHTMLZnakówWikiCiągu"](a);
end);
if(ile1+ile2>0)then
return cudzyslow_otwierajacy..atrybut..cudzyslow_zamykajacy;
end;
return nil;
end);
return znacznik;
end;
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)
value=mw.ustring.gsub(value,"(&)(%a+)(;)",function(amp,kod_html,srednik)
kod_html=mw.ustring.lower(kod_html);
if((kod_html=="lt")or(kod_html=="gt")or(kod_html=="amp"))then
return mw.text.decode(amp..kod_html..srednik);
end;
return nil;
end);
local lewy_ukosnik=mw.ustring.byte("\\");
local cudzyslow=mw.ustring.byte("\"");
value=mw.ustring.gsub(value,"(&#"..lewy_ukosnik..";&#"..cudzyslow..";)","\\\"");
return value;
end;
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_nie_dolne_myslniki=PobierzParametr("z nie dolnymi z myślnikami") or PobierzParametr(2) or czy_nie_dolne_myslniki;
czy_nie_dolne_myslniki=parametry_modul.CzyTak(czy_nie_dolne_myslniki);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
local naglowek=czy_nie_dolne_myslniki and mw.ustring.match(nazwa_jednostki,"^[^#]*#[%s_]*(.-)[%s_]*$") or mw.ustring.match(nazwa_jednostki,"^[^#]*#(.-)%s*$");
naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",[3]=((not czy_nie_dolne_myslniki)and "tak" or nil),};
return naglowek;
end;
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
if(czy_naprawiaj)then
local bez_naglowka,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]-)[%s_]*#(.*)$","%1");
local parametry=mw.ustring.match(bez_naglowka,"^.-%?[%s_]*([^&]+=[^&]-.-)[%s_]*$");
if(parametry)then
parametry=mw.ustring.gsub(parametry,"[%s_]*=[%s_]*","=") or nil;
parametry=mw.ustring.gsub(parametry,"[%s_]*&[%s_]*","&") or nil;
end;
return parametry;
else
local bez_naglowka,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
local parametry=mw.ustring.match(bez_naglowka,"^.-%?([^&]+=[^&]-.-)%s*$");
return parametry;
end;
end;
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=p.DecodeHtml(nazwa_jednostki,true);
if(czy_naprawiaj)then
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]-)[%s_]*#(.*)$","%1");
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^(.-)[%s_]*%?[^&]+=[^&]*.*$","%1");
else
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
nazwa_jednostki,_=mw.ustring.gsub(nazwa_jednostki,"^(.-)%s*%?[^&]+=[^&]*.*$","%1");
end;
local strony_modul=require("Module:Strony");
local czy_url=strony_modul.SprawdzanieURL(nazwa_jednostki);
czy_url=czy_url and true or (not czy_naprawiaj);
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,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local parametry_strony=PobierzParametr("parametry") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(parametry_modul.CzyTak(parametry_strony))then
local nazwa_strony_linku;
if(czy_naprawiaj)then
if(mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony,_=mw.ustring.gsub(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony,_=mw.ustring.gsub(parametry_strony,"&[%s_]*title[%s_]*=([^&]+).*$","");
end;
else
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;
end;
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_strony_linku,[2]="tak",[3]=(not czy_naprawiaj),};
return nazwa_strony_linku,parametry_strony;
else
return nil;
end;
end;
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
local adres=p["NazwaStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil);
local parametry_strony=p["ParametryStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil);
local naglowek_strony=p["NagłówekStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil);
nazwa_jednostki=adres..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "");
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,"^//+([^%s/]+)"..((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);
url=mw.ustring.gsub(url,"^.*@([^@]+)$","//%1");
return mw.ustring.gsub(url,"^(%a+:)(//)(/*)","%2");
end;
function p.DecodeKodoweHTMLZnakowe(tekst)
local html_dane_modul=mw.loadData("Module:Html/dane");
local kody_literowe_html_i_ich_odpowiedniki_znakowe=html_dane_modul.kody_literowe_html_i_ich_odpowiedniki_znakowe;
-- najpierw nazwane encje
tekst = mw.ustring.gsub(tekst,"(&%a+%;)", kody_literowe_html_i_ich_odpowiedniki_znakowe);
-- encje numeryczne dziesiętne: μ
tekst=mw.ustring.gsub(tekst,"&#(%d+);", function(n)
return mw.ustring.char(tonumber(n))
end);
-- encje numeryczne szesnastkowe: μ
tekst = mw.ustring.gsub(tekst,"&#x(%x+);", function(n)
return mw.ustring.char(tonumber(n, 16))
end);
return tekst;
end;
return p;