Przejdź do zawartości

Moduł:Plik

Z Wikibooks, biblioteki wolnych podręczników.
 Dokumentacja modułu [stwórz] [odśwież]
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;