Moduuli:Tietolaatikko
Siirry navigaatioon
Siirry hakuun
kuvakoko()
[muokkaa wikitekstiä]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;