Moduuli:Tietolaatikko

Wikipediasta
Siirry navigaatioon Siirry hakuun

Siivotaan tietolaatikoissa käytetty kuvakoko:

  • ei kaksinkertaista "pxpx" loppua
  • varmistetaan että on ainakin kerran yksikkö jotta kuvat eivät tule ylisuurina
  • tarkistetaan että käytetty koko ei ole järjettömän suuri (yli 300)

-- fiwikiin aputoimintoja
-- olemassa olevia moduuleja voisi pilkkoa pienempiin metodeihin jotta voi käyttää uudelleen helpommin
-- yritetään mukauttaa olemassa oleviin käyttötapoihin

local t = {};

function t.trim(teksti)
	if type( teksti ) == 'string' and teksti ~= '' then
		-- korvaa nbsp (jos on)
		teksti = teksti:gsub( '\194\160', '' ):gsub( ' ', '' )
		
		-- whitespace lopusta ja alusta
		teksti = mw.text.trim(teksti)

		-- jos on välilyöntejä -> pois
		teksti = mw.ustring.gsub( teksti, ' ', "" )
		return teksti
	end
	return teksti
end

function t.kuvakoko(frame)
	local koko = frame.args.leveys or "";
	--local oletus = frame.args.oletus or "250px";

	-- jos ei ole mitään kokoa, käytetään oletusta
	if koko == nil or koko == "" then
		return "250px" 
	end
	if type( koko ) == 'number' then
		if koko > 300 then
			koko = 250
		end
		return tostring(koko) .. "px"
	end

	-- poistetaan välit (jos on)
	koko = t.trim(koko)

	-- jos on jo duplikaatti -> siivotaan
	koko = mw.ustring.gsub( koko, 'pxpx', "px" )

	local px = mw.ustring.sub(koko, -2)
	if (px == "px") then 
		-- on jo px
		return koko
	--elseif (px == "em") then
		-- eri yksikkö mutta koko kuitenkin
		--return koko
	end

	-- yksikkö puuttuu? -> lisätään
	local num = tonumber(koko)
	if num ~= nil then
		-- rajoita tietolaatikoiden kuvakokoa
		if num > 300 then
			num = 250
		end
		koko = tostring(num) .. "px"
		return koko
	end
	
	-- ei numero tai muuta roskaa?
	-- jos kaikki muu menee pieleen -> käytetään oletuskokoa
	return "250px" 
end

function t.tiedostonimi(frame)
	local tiedosto;
	local kuva = frame.args.kuva or "";
	local wikidata = frame.args.wikidata or "";

	if kuva then
		tiedosto = kuva
	elseif wikidata then
		local Wd = require('Moduuli:Fr:Wikidata')
		tiedosto = wd.formatStatements( wikidata ) -- args.numval=1
	end

	return tiedosto 
end

return t;