Module:Dsize

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

This module contains very few code - but it is heavily used.
It is needed to verify that a given display size is trailed by "px".
It can be expanded to check for other dimensions, as e.g. "em".

it will be used by Template:F, Created with/layout, ...

Use it with e.g. {{#invoke:Dsize|main|{{{sizepar}}} }}

Examples:
{{#invoke:Dsize|main|72px}} 72px width
{{#invoke:Dsize|main|72}} 72px width
{{#invoke:Dsize|main|72x}} 72xpx width
{{#invoke:Dsize|main|x64px}} x64px height
{{#invoke:Dsize|main|72x64}} 0 72x64px 0 w × h

Module:Galeria has a similar but more powerful and complex function.

Code

local p = {}
function p.main ( frame )
	local gpar = frame.args
	if  mw.ustring.sub(gpar[1], -2) == 'px' then
		return gpar[1];
	else
		return gpar[1] .. 'px';
	end
end

-- function: filename 
function p.f_name ( frame )
	local gpar = frame.args		--	globals
	gpar[1] = gpar[1] or mw.title.getCurrentTitle().text;
	gpar[2] = gpar[2] or '';	--	"+" value 
	gpar[3] = gpar[3] or '';	--	"-" value  
	local hdr  = gpar.h or '';
	local trl  = gpar.t or '';
	local l_strip = 0;
	local r_strip = 0;
	if	mw.ustring.lower(mw.ustring.sub (gpar[1],-4,-4)) == '.' then
			r_strip = 4;			-- .jpg, .png, .svg
	end

	if	mw.ustring.sub (gpar[2],1,1) == "+" then
		  l_strip = tonumber(mw.ustring.sub (gpar[2],2))
	end
	if	mw.ustring.sub (gpar[3],1,1) == "+" then
		  l_strip = tonumber(mw.ustring.sub (gpar[3],2))
	end
	if	mw.ustring.sub (gpar[2],1,1) == "-" then
		  r_strip = r_strip+tonumber(mw.ustring.sub (gpar[2],2))
	end
	if	mw.ustring.sub (gpar[3],1,1) == "-" then
		  r_strip = r_strip+tonumber(mw.ustring.sub (gpar[3],2))
	end
	return 	hdr..mw.ustring.sub (gpar[1], 1+l_strip, mw.ustring.len(gpar[1])-r_strip)..trl
end

return p;