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_nieprzetworzone=PobierzParametr("plik") or PobierzParametr(1);
local czy_plik=parametry_modul.CzyTak(plik_nieprzetworzone);
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 nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local plik=nazwy_modul.NAZWASTRONY(plik_nieprzetworzone,tabela_nazw);
if(not parametry_modul.CzyTak(plik))then
local blad_modul=require("Module:Błąd");
local brak_pliku_komunikat="Wykryto w szablonie {{Plik}} w nazwie rysunku tylko prefix.";
local brak_plik=blad_modul.error({args={tekst=brak_pliku_komunikat,},});
return brak_plik;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local nazwa_przestrzeni=nazwy_modul.NAZWAPRZESTRZENI(plik_nieprzetworzone,tabela_nazw);
if((nazwy_np_modul.File~=nazwa_przestrzeni)and(nazwy_np_modul.Media~=nazwa_przestrzeni)and(nazwy_np_modul.Main~=nazwa_przestrzeni))then
local blad_modul=require("Module:Błąd");
local brak_pliku_komunikat="Wykryto w szablonie {{Plik}} nieodpowiednią przestrzeń nazw, o ile ją podano.";
local brak_plik=blad_modul.error({args={tekst=brak_pliku_komunikat,},});
return brak_plik;
end;
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 auto=PobierzParametr("auto");
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_rozmiar=parametry_modul.CzyTak(rozmiar);
local czy_pozycja=parametry_modul.CzyTak(pozycja);
local czy_auto=parametry_modul.CzyTak(auto);
if(czy_auto)then
local function TempFuncRozmiar(auto_1)
local function y(x,a,b)
x=x and tonumber(x) or 9;
local y=a*x+b;
return tostring(y).."px";
-- _ - a=10 - a=20 ---
-- 0 - 80px - 80px = b
-- 1 - 90px; - 100px
-- 2 - 100px - 120px
-- 3 - 110px; - 140px
-- 4 - 120px; - 160px
-- 5 - 130px; - 180px
-- 6 - 140px; - 200px
-- 7 - 150px; - 220px
-- 8 - 160px; - 240px
-- 9 - 170px; - 260px
-- 10 - 180px; - 280px
-- 11 - 190px; - 300px
-- 12 - 200px; - 320px
-- 13 - 210px; - 340px
-- 14 - 220px; - 360px
-- 15 - 230px; - 380px
-- 16 - 240px; - 400px
-- 17 - 250px; - 420px
-- 18 - 260px; - 440px
-- 19 - 270px; - 460px
-- 20 - 280px; - 480px
-- 21 - 290px; - 500px
-- 22 - 300px; - 520px
end;
local __a=20;local __b=80;
local tab_a=parametry_modul.CzyTak(auto_1) and mw.text.split(auto_1,",") or {};
local a=tab_a[2] and mw.text.trim(tab_a[2]) or __a;local b=tab_a[3] and mw.text.trim(tab_a[3]) or __b;
a=tonumber(a) or __a;b=tonumber(b) or __b;
local x=tab_a[1] and mw.text.trim(tab_a[1]) or nil;
if(x)then
local szerokosc,wysokosc=mw.ustring.match(x,"^(%d*)x(%d*)$");
szerokosc=parametry_modul.CzyTak(szerokosc) and szerokosc or nil;
wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or nil;
if((szerokosc)and(wysokosc))then
return tostring(y(szerokosc,a,b)).."x"..tostring(y(wysokosc,a,b));
elseif(szerokosc)then
return tostring(y(szerokosc,a,b));
elseif(wysokosc)then
return "x"..tostring(y(wysokosc,a,b));
end;
end;
local x=tab_a[1] and tonumber(mw.text.trim(tab_a[1])) or nil;
if(not x)then
return y(9,a,b);
end;
return y(x,a,b);
end;
local function TempFuncPozycja(auto_2)
auto_2=auto_2 and mw.text.trim(auto_2) or auto_2;
local auto_2=tonumber(auto_2);
if(not auto_2)then return "prawo";
elseif(auto_2>0)then return "prawo";
elseif(auto_2<0)then return "lewo";
elseif(auto_2==0)then return "centruj";end;
return "prawo";
end;
local tab_auto=mw.text.split(auto,";");
ramka=(not czy_ramka) and "mały" or ramka;
rozmiar=(not czy_rozmiar) and TempFuncRozmiar(tab_auto[1]) or rozmiar;
pozycja=(not czy_pozycja)and TempFuncPozycja(tab_auto[2]) or pozycja;
czy_ramka=(not czy_ramka) and true or czy_ramka;
czy_rozmiar=(not czy_rozmiar) and true or czy_rozmiar;
czy_pozycja=(not czy_pozycja)and true or czy_pozycja;
end;
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");
elseif(ramka=="bezramki")then
table.insert(tab_plik,"|frameless");
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(kontenerramka,kontenerramka2)
if(parametry_modul.CzyTak(id))then kontenerramka:attr("id",id);end;
if(parametry_modul.CzyTak(styl))then kontenerramka:attr("style",styl);end;
if(parametry_modul.CzyTak(klasa))then kontenerramka:attr("class",klasa);end;
if(parametry_modul.CzyTak(nomobile))then kontenerramka:addClass("nomobile");end;
if(parametry_modul.CzyTak(nomedia))then kontenerramka: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);
kontenerramka2:css("width",szerokosc_temp);
wysokosc_temp=p.RozmiarWEmach(wysokosc_temp or wysokosc,jednostka2);
kontenerramka2:css("height",wysokosc_temp);
kontenerramka: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);
kontenerramka2:css("height",wysokosc_temp);
kontenerramka: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);
kontenerramka2:css("width",szerokosc_temp);
kontenerramka:addClass("szablon_plik_rozmiar");
else
kontenerramka2:css("width","fit-content");
kontenerramka:addClass("szablon_plik_rozmiar");
end;
end;
end;
else
kontenerramka2:css("width","fit-content");
kontenerramka:addClass("szablon_plik_rozmiar");
end;
end;
local jaka_pozycja=((czy_pozycja)and((pozycja=="prawo")or(pozycja=="lewo")or(pozycja=="centruj")or(pozycja=="brak")));
local ramka_znacznik;
if(jaka_pozycja)then ramka_znacznik="div";else ramka_znacznik="span";end;
local kontenerramka=mw.html.create(ramka_znacznik);
local SpecyfikacjaStrukturyPliku=function(kontenerramka,pozycja)
local kontenerramka2=mw.html.create(ramka_znacznik);
local plik=Plik();
kontenerramka2:node(plik);
RamkaPlik(kontenerramka,kontenerramka2);
kontenerramka:node(kontenerramka2);
kontenerramka:addClass("szablon_plik_"..pozycja);
kontenerramka:addClass('szablon_plik');
end;
if(jaka_pozycja)then
SpecyfikacjaStrukturyPliku(kontenerramka,pozycja);
else
SpecyfikacjaStrukturyPliku(kontenerramka,"pozycja_nic");
end;
if(czy_ramka)then
local RamkaKlasaPlik=function(ramka)
kontenerramka:addClass("szablon_plik_ramka");
kontenerramka:addClass("szablon_plik_ramka_"..ramka);
end;
if((ramka=="mały")or(ramka=="duży")or(ramka=="bezramki"))then
RamkaKlasaPlik(ramka);
end;
end;
return tostring(kontenerramka:allDone());
end;
return p;