Moduł:Html
Wygląd
|
Zobacz podstrony tego modułu.
|
local p={};
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)
local szeregi_modul=require("Module:Szeregi");
wzor=wzor or "&([^&;%s]+);"
html=szeregi_modul.SzeregiOmijanieFunkcyjne(html,normalnie,wzor,funkcja,
function(kod)
return "&"..kod..";";
end);
return html;
end;
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"([%|%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
return tekst;
end;
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end);
tekst=mw.ustring.gsub(tekst,"&#x(%x+);", function(n) return mw.ustring.char(tonumber(n, 16));end);
return tekst;
end;
function p.ZnakiSpecjalneTaguNowiki(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([%!{}|=<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.ZnakiSpecjalneWikiLinku(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([{}|<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametryRamki("html");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local wzor_kody="([{}|<>%[%]#=%?&])";
html=p.KodowanieOmijanieFunkcyjne(html,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,wzor_kody,tab_nawiasy);
return ciag;
end);
return html;
end;
function p.EncodeZnakProloguList(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local lista_znaki="%#%*%;%:";
tekst=mw.ustring.gsub(tekst,"^\n?(["..lista_znaki.."])",tab_nawiasy);
tekst=mw.ustring.gsub(tekst,"\n(["..lista_znaki.."])",function(znak)
return "\n"..(tab_nawiasy[znak] or znak);
end);
return tekst;
end;
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local tekst=PobierzParametryRamki("tekst");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=p.KodowanieOmijanieFunkcyjne(tekst,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,"([=%?&])",tabela_nawiasowa);
return ciag;
end);
return tekst;
end;
function p.PrzypisanieZnakoweEncodeHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([=])",tabela_nawiasowa);
return tekst;
end;
function p.ZamianaDwukropkaNaKodHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([:])",tabela_nawiasowa);
return tekst;
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);
local ZnakFun=function(znak)
if(#znak>1)then
return mw.ustring.codepoint(znak);
else
return mw.ustring.byte(znak);
end;
end;
if(czy_tak)then
return "&#"..tostring(ZnakFun(znak))..";";
else
return "&#"..tostring(ZnakFun(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(not czy_kod_znaku)then
return "&#"..tabela_znakowa[znak]..";";
else
return "&#"..tabela_znakowa[znak]..";";
end;
end;
return nil;
end);
return ciag;
end;
function p.EncodeId(id,bez_transformacji)
id=(not bez_transformacji) and p.DecodeHtml(id,true) or id;
local id=p.EncodeSpecjalneZnakiHtml(id,true);
return id;
end;
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)
parametr=mw.ustring.gsub(parametr,"","");
return parametr;
end;
function p.EncodeWiki(parametr,czy_nie_odstepy)
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametry_modul=require("Module:Parametry");
if(not czy_nie_odstepy)then
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",[3]="tak",};
end;
parametr=mw.text.encode(parametr);
return parametr;
end;
function p.DecodeWiki(parametr,czy_nie_odstepy)
parametr=mw.text.decode(parametr);
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
if(not czy_nie_odstepy)then
local parametry_modul=require("Module:Parametry");
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",};
end;
return parametr;
end;
function p.IsEncodedHtml(parametr,encode,encode_real)
local parametry_modul=require("Module:Parametry");
local spr_parametr_szereg=nil;
local TempFunParametr=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_szereg))then
local __spr_parametr_szereg=mw.ustring.match(parametr,"^[%w%p%s]*$");
spr_parametr_szereg=__spr_parametr_szereg and true or false;
return spr_parametr_szereg;
end;
return spr_parametr_szereg;
end;
local spr_parametr_bez_procentu=nil;
local TempFunBezProcentu=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_bez_procentu))then
local __spr_parametr_bez_procentu=mw.ustring.match(parametr,"^[^%%]*$");
spr_parametr_bez_procentu=__spr_parametr_bez_procentu and true or false;
return spr_parametr_bez_procentu;
end;
return spr_parametr_bez_procentu;
end;
local wynik=((encode_real)and(TempFunParametr(parametr)and(TempFunBezProcentu(parametr))))
or((encode)and(TempFunBezProcentu(parametr)))
or(((not encode_real)or((encode_real)and(TempFunParametr(parametr))))
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]")));
return wynik and true or false;
end;
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
return mw.uri.encode(parametr,"WIKI");
end;
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)
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,czy_nie_odstepy);
else
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
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,tabela_nazw_adresu)
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=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
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,tabela_nazw_adresu)
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=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
local bez_naglowka=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
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=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
local parametry=mw.ustring.match(bez_naglowka,"^.-%?*%?([^&]+=[^&]-.-)%s*$");
return parametry;
end;
end;
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
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=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)[%s_]*%?[^&]+=[^&]*.*$","%1");
else
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)%?[^&]+=[^&]*.*$","%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_strony_linku=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,tabela_nazw_adresu)
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 tabela_nazw_adresu=tabela_nazw_adresu or {};
local adres=p["NazwaStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local parametry_strony=p["ParametryStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local naglowek_strony=p["NagłówekStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
nazwa_jednostki=adres..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "");
return nazwa_jednostki;
end;
function p.URLStrona(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);
local mail=mw.ustring.match(url,"^.*@([^@]+)$");
if(mail)then
return "//"..mail,"mail",1;
end;
local protokol,strona=mw.ustring.match(url,"^(%a+:)(/+.-)$");
if((protokol)and(strona))then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,protokol,2;
end;
local strona=mw.ustring.match(url,"^:?(/+.-)$");
if(strona)then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,nil,3;
end;
return "//"..url,nil,-1;
end;
function p.DecodeKoduHTMLZnaku(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
local ile1;
tekst,ile1 = mw.ustring.gsub(tekst,"(&%a+%;)", kody_literowe_html_i_ich_odpowiedniki_znakowe);
-- encje numeryczne dziesiętne: μ
local ile2;
tekst,ile2=mw.ustring.gsub(tekst,"&#(%d+);", function(n)
return mw.ustring.char(tonumber(n))
end);
-- encje numeryczne szesnastkowe: μ
local ile3;
tekst,ile3 = mw.ustring.gsub(tekst,"&#x(%x+);", function(n)
return mw.ustring.char(tonumber(n, 16))
end);
return tekst,ile1,ile2,ile3;
end;
function p.ZamianaEncodeTekst(tekst)
tekst=mw.uri.encode(mw.uri.decode(tekst,"PATH"),"PATH");
return tekst;
end;
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor)
tekst=mw.ustring.gsub(tekst,wzor,function(tekst)
tekst=p.ZamianaEncodeTekst(tekst);
return tekst;
end);
return tekst;
end;
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)
local ile_w;local ile;
adres,ile_w,ile=p.EncodeHashKoduHtmlTekstu(adres);
local ile1;local ile2;
if(ile_w>0)then
adres,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(adres);
end;
local strona,naglowek=mw.ustring.match(adres,"^[%s_]*([^#]-)[%s_]*#[%s_]*(.-)[%s_]*$");
if((not strona)or(not naglowek))then
strona=mw.ustring.match(adres,"^[%s_]*(.-)[%s_]*$");
end;
local __strona,parametry=mw.ustring.match(strona,"^(.-%?*)%?([^&=]-=.*)$");
strona=__strona or strona;
if(ile_w>0)then
strona=p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(strona,ile1,ile2),ile);
parametry=parametry and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(parametry,ile1,ile2),ile) or nil;
naglowek=naglowek and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(naglowek,ile1,ile2),ile) or nil;
end;
return strona,parametry,naglowek;
end;
function p.TworzenieAdresuHtml(strona,parametry,naglowek)
local adres=strona..(parametry and ("?"..parametry) or "")..((naglowek)and ("#"..naglowek) or "");
return adres;
end;
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)
local strona,parametry,naglowek=p.StronaParametryIdentyfikacjaAdresuHtml(adres);
strona=funkcja_strona and funkcja_strona(strona) or strona;
parametry=(parametry and funkcja_parametry) and funkcja_parametry(parametry) or parametry;
naglowek=(naglowek and funkcja_naglowek) and funkcja_naglowek(naglowek) or naglowek;
local adres=p.TworzenieAdresuHtml(strona,parametry,naglowek);
return adres;
end;
function p.ParametryEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)
local function ParametryEncodeURL(a,b,c)
return a..p.ZamianaEncodeTekst(b).."="..p.ZamianaEncodeTekst(c);
end;
local function OperacjeHtml(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryEncodeURL);
return adres;
end;
if(not w_adresie)then
return OperacjeHtml(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeHtml,funkcja_naglowek);
end;
end;
function p.ParametryZaawansowanyEncodeURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)
function ParametryZaawansowanyEncodeURL(a,b,c)
b=mw.uri.decode(b,"PATH");b=p.EncodeSpecjalneZnakiHtml(b,true);b=mw.uri.encode(b,"PATH");
c=mw.uri.decode(c,"PATH");c=p.EncodeSpecjalneZnakiHtml(c,true);c=mw.uri.encode(c,"PATH");
return a..(b.."="..c);
end;
local function OperacjeURL(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",ParametryZaawansowanyEncodeURL);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",ParametryZaawansowanyEncodeURL);
return adres;
end;
if(not w_adresie)then
return OperacjeURL(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeURL,funkcja_naglowek);
end;
end;
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)
local EncodeHtmlAB=function(a,b,c)
b=p.EncodeHtml(b);c=p.EncodeHtml(c);
return a..b.."="..c;
end;
local function ParametryHtml(parametr)
parametr=mw.ustring.gsub(parametr,"^(%??)([^&=]*)=([^&]*)",EncodeHtmlAB);
parametr=mw.ustring.gsub(parametr,"(&)([^&=]*)=([^&]*)",EncodeHtmlAB);
return parametr;
end;
if(not w_adresie)then
return ParametryHtml(parametr);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(parametr,funkcja_strona,ParametryHtml,funkcja_naglowek);
end;
end;
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)
local KrokEncodeZaawansowanyParametryHtmlABC=function(a)
a=mw.uri.decode(a,"PATH");
a=p.EncodePodstawoweHtmlTekstu(a);
if(z_kodowaniem)then a=mw.uri.encode(a,"PATH");end;
return a;
end;
local EncodeZaawansowanyParametryHtmlABC=function(a,b,c)
b=KrokEncodeZaawansowanyParametryHtmlABC(b);
c=KrokEncodeZaawansowanyParametryHtmlABC(c);
return (a or "")..(b.."="..c);
end;
local function OperacjeParametryHtmlABC(adres)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]-)=([^&]*)",EncodeZaawansowanyParametryHtmlABC);
adres=mw.ustring.gsub(adres,"([&])([^&=]-)=([^&]*)",EncodeZaawansowanyParametryHtmlABC);
return adres;
end;
if(not w_adresie)then
return OperacjeParametryHtmlABC(adres);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeParametryHtmlABC,funkcja_naglowek);
end;
end;
function p.EncodeHashKoduHtmlTekstu(tekst)
local ile;local ile2=0;
tekst,ile=mw.ustring.gsub(tekst,"&([^&;%s]+);",function(kod)
if((kod=="num")or(kod=="#35")or(kod=="#x23"))then
ile2=ile2+1;
return "&num;";
end;
return nil;
end);
return tekst,ile,ile2;
end;
function p.DecodeHashKoduHtmlTekstu(tekst,ile)
if(((ile)and(ile>0))or(not ile))then
tekst=mw.ustring.gsub(tekst,"&num;",function(kod)
return "#";
end);
end;
return tekst;
end;
function p.EncodeTempHashKoduHtmlTekstu(tekst)
local ile1;local ile2;
tekst,ile1=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";";
end);
tekst,ile2=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";";
end);
return tekst,ile1,ile2;
end;
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)
if(((ile1)and(ile1>0))or(not ile1))then
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";"
end);
end;
if(((ile2)and(ile2>0))or(not ile2))then
tekst=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";"
end);
end;
return tekst;
end;
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)
local adres=p.ParametryEncodeURL(adres,true,
function(strona)
local function Func(strona)
strona=p.ZamianaEncodeNaPodstawieWzoruTekstu(strona,"[^/]+");
return strona;
end;
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=Func(adres);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek)
naglowek=p.ZamianaEncodeTekst(naglowek);
return naglowek;
end);
return adres;
end;
function p.UriEncode(frame)
local parametry_modul=require("Module:Parametry");
local html=parametry_modul.PobierzParametryRamki(frame)("html");
html=mw.ustring.gsub(html,"^(%a+://)(.+)$",function(prot,strona)
return prot..p.AdresDomniemanieBezProtokolarnyEncodeURL(strona,false);
end);
return html;
end;
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)
elementy_adresu_strony=p.KodowanieOmijanieFunkcyjne(elementy_adresu_strony,true,"&(#35);",function(elementy_adresu_strony)
elementy_adresu_strony=p.DecodeKoduHTMLZnaku(elementy_adresu_strony);
return elementy_adresu_strony;
end);
elementy_adresu_strony=p.EncodeSpecjalneZnakiHtml(elementy_adresu_strony,true);
return elementy_adresu_strony;
end;
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)
if(czy_parametry_strony)then
elementy_adresu_strony=p.EncodeZaawansowanyParametryHtml(elementy_adresu_strony,z_kodowaniem);
else
elementy_adresu_strony=mw.uri.decode(elementy_adresu_strony,"PATH");
elementy_adresu_strony=p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony);
if(z_kodowaniem)then elementy_adresu_strony=mw.uri.encode(elementy_adresu_strony,"PATH");end;
end;
return elementy_adresu_strony;
end;
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)
local parametry_modul=require("Module:Parametry")
local PobierzParametry=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametry("html");
local z_kodowaniem_html=PobierzParametry("encode");
if(z_kodowaniem_html)then z_kodowaniem=parametry_modul.CzyTak(z_kodowaniem_html);end;
local html=p.EncodeZaawansowanyParametryHtml(html,z_kodowaniem,true,
function(strona)
local function Func(strona)
strona=p.EncodePodstawoweHtmlTekstu(mw.uri.decode(strona,"PATH"));
if(z_kodowaniem)then strona=mw.uri.encode(strona,"PATH");end;
return strona;
end;
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=mw.ustring.gsub(adres,"[^/]+",function(element)
element=Func(element);
return element;
end);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek)
naglowek=p.EncodePodstawoweHtmlTekstu(mw.uri.decode(naglowek,"PATH"));
if(z_kodowaniem)then naglowek=mw.uri.encode(naglowek,"PATH") end;
return naglowek;
end);
return html;
end;
return p;