Moduł:Plik
Wygląd
|
Zobacz podstrony tego modułu.
|
local p={};
p["W pikselach"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local rozmiar=PobierzParametr(1);
local liczba,jednostka=mw.ustring.match(rozmiar,"^(%d*%.?%d*)(%a*)$")
liczba=tonumber(liczba) or nil;
if(not liczba)then return rozmiar;end;
return p.ZamianaJednostekAbsolutnychNaPiksele(liczba,jednostka,true) or rozmiar;
end;
function p.ZamianaJednostekAbsolutnychNaPiksele(liczba,jednostka,czy_nie_ta_jednostka)
if(not jednostka)then return liczba;end;
if(jednostka=="")then return liczba;end;
if(jednostka=="px")then return liczba;end;
if(jednostka=="pc")then return liczba*16;end;
if(jednostka=="pt")then return liczba*4/3;end;
if(jednostka=="in")then return liczba*96;end;
if(jednostka=="Q")then return liczba*96/25.4/4;end;
if(jednostka=="mm")then return liczba*96/25.4;end;
if(jednostka=="cm")then return liczba*96/2.54;end;
return ((not czy_nie_ta_jednostka) and liczba or nil);
end;
function p.RozmiarWEmach(liczba,jednostka)
if((jednostka=="px")or(jednostka=="pc")or(jednostka=="pt")or(jednostka=="in")or(jednostka=="Q")or(jednostka=="mm")or(jednostka=="cm"))then
return ((liczba/16).."em");
end;
if(jednostka~="")then
return liczba..jednostka;
end;
return liczba.."em";
end;
function p.Plik(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local plik=PobierzParametr("plik") or PobierzParametr(1);
local czy_plik=parametry_modul.CzyTak(plik);
if(not czy_plik)then
local blad_modul=require("Module:Błąd");
local brak_pliku_komunikat="Wykryto w szablonie {{Plik}} nie podanie nazwy rysunku.";
local brak_plik=blad_modul.error({args={tekst=brak_pliku_komunikat,},});
return brak_plik;
end;
local ramka=PobierzParametr("ramka");
local alt=PobierzParametr("alt");
local link=PobierzParametr("link");
local opis=PobierzParametr("opis");
local skala=PobierzParametr("skala");
local pozycja=PobierzParametr("pozycja");
local rozmiar=PobierzParametr("rozmiar");
local nomobile=PobierzParametr("nomobile");
local nomedia=PobierzParametr("nomedia");
local rys=PobierzParametr("rys");
local czy_rys=parametry_modul.CzyTak(rys);
local czy_ramka=parametry_modul.CzyTak(ramka);
local czy_alt=parametry_modul.CzyTak(alt);
local czy_opis=parametry_modul.CzyTak(opis);
local czy_skala=parametry_modul.CzyTak(skala);
local czy_pozycja=parametry_modul.CzyTak(pozycja);
local czy_rozmiar=parametry_modul.CzyTak(rozmiar);
local Plik=function()
local tab_plik={};
table.insert(tab_plik,"[[File:");
table.insert(tab_plik,plik);
if(czy_ramka)then
if(ramka=="mały")then
table.insert(tab_plik,"|thumb")
elseif(ramka=="duży")then
table.insert(tab_plik,"|frame");
end;
end;
if(czy_rys)then
if(czy_pozycja)then
if(pozycja=="prawo")then
table.insert(tab_plik,"|right");
elseif(pozycja=="lewo")then
table.insert(tab_plik,"|left");
elseif(pozycja=="centruj")then
table.insert(tab_plik,"|center");
end;
end;
if(czy_rozmiar)then
table.insert(tab_plik,"|"..rozmiar);
end;
end;
if(czy_skala)then
table.insert(tab_plik,"|upright="..skala);
end;
if(czy_alt)then
table.insert(tab_plik,"|alt="..alt);
end;
if(link)then
table.insert(tab_plik,"|link="..link);
end;
if(czy_opis)then
table.insert(tab_plik,"|"..opis);
end;
table.insert(tab_plik,"]]");
return table.concat(tab_plik,"");
end;
if(czy_rys)then
local plik=Plik();
return plik;
end;
local id=PobierzParametr("id");
local styl=PobierzParametr("styl");
local klasa=PobierzParametr("klasa");
local RamkaPlik=function(divramka,divramka2)
if(parametry_modul.CzyTak(id))then divramka:attr("id",id);end;
if(parametry_modul.CzyTak(styl))then divramka:attr("style",styl);end;
if(parametry_modul.CzyTak(klasa))then divramka:attr("class",klasa);end;
if(parametry_modul.CzyTak(nomobile))then divramka:addClass("nomobile");end;
if(parametry_modul.CzyTak(nomedia))then divramka:addClass("nomedia");end;
if(czy_rozmiar)then
local Rozmiary=function(rozmiar)
local szerokosc,jednostka1,wysokosc,jednostka2=mw.ustring.match(rozmiar,"^(%d+%.?%d*)([%a%%]*)x(%d+%.?%d*)([%a%%]*)$");
jednostka1=parametry_modul.CzyTak(jednostka1) and jednostka1 or jednostka2;
if((szerokosc)and(wysokosc)and(jednostka1)and(jednostka2))then return szerokosc,jednostka1,wysokosc,jednostka2;end;
local wysokosc,jednostka=mw.ustring.match(rozmiar,"^x(%d+%.?%d*)([%a%%]*)$");
if((wysokosc)and(jednostka))then return nil,nil,wysokosc,jednostka;end;
local szerokosc,jednostka=mw.ustring.match(rozmiar,"(%d+%.?%d*)([%a%%]*)");
return szerokosc,jednostka;
end;
local szerokosc,jednostka1,wysokosc,jednostka2=Rozmiary(rozmiar);
if((szerokosc)and(wysokosc)and(jednostka1)and(jednostka2))then
local szerokosc_temp=p.ZamianaJednostekAbsolutnychNaPiksele(szerokosc,jednostka1,true);
local wysokosc_temp=p.ZamianaJednostekAbsolutnychNaPiksele(wysokosc,jednostka2,true);
szerokosc_temp=p.RozmiarWEmach(szerokosc_temp or szerokosc,jednostka1);
divramka2:css("width",szerokosc_temp);
wysokosc_temp=p.RozmiarWEmach(wysokosc_temp or wysokosc,jednostka2);
divramka2:css("height",wysokosc_temp);
divramka:addClass("szablon_plik_rozmiar");
else
if((wysokosc)and(jednostka2))then
local wysokosc_temp=p.ZamianaJednostekAbsolutnychNaPiksele(wysokosc,jednostka2,true);
wysokosc_temp=p.RozmiarWEmach(wysokosc_temp or wysokosc,jednostka2);
divramka2:css("height",wysokosc_temp);
divramka:addClass("szablon_plik_rozmiar");
else
if((szerokosc)and(jednostka1))then
local szerokosc_temp=p.ZamianaJednostekAbsolutnychNaPiksele(szerokosc,jednostka1,true);
szerokosc_temp=p.RozmiarWEmach(szerokosc_temp or szerokosc,jednostka1);
divramka2:css("width",szerokosc_temp);
divramka:addClass("szablon_plik_rozmiar");
end;
end;
end;
end;
end;
local divramka=mw.html.create('div');
local SpecyfikacjaStrukturyPliku=function(divramka,pozycja)
local divramka2=mw.html.create('div');
local plik=Plik();
divramka2:node(plik);
RamkaPlik(divramka,divramka2);
divramka:node(divramka2);
divramka:addClass("szablon_plik_"..pozycja);
divramka:addClass('szablon_plik');
end;
if(czy_pozycja)then
if((pozycja=="prawo")or(pozycja=="lewo")or(pozycja=="centruj"))then
SpecyfikacjaStrukturyPliku(divramka,pozycja);
else
SpecyfikacjaStrukturyPliku(divramka,"pozycja_nic");
end;
else
SpecyfikacjaStrukturyPliku(divramka,"pozycja_nic");
end;
if(czy_ramka)then
local RamkaKlasaPlik=function(ramka)
divramka:addClass("szablon_plik_ramka");
divramka:addClass("szablon_plik_ramka_"..ramka);
end;
if((ramka=="mały")or(ramka=="duży"))then
RamkaKlasaPlik(ramka);
end;
end;
return tostring(divramka:allDone());
end;
return p;