Module:Coxeter–Dynkin diagram/sandbox

From Wikipedia, the free encyclopedia
-- module to turn a parameter list into a list of [[Coxeter–Dynkin diagram]] images.
-- See the template documentation or any example for how it is used and works.
local p = {}

-- list of file names (minus 'CDel ' and extension) which are available as an
-- SVG version which must be perfectly compatible in appearance and public domain.
-- Uses spaces not underscores.
local has_svg = {'nodes', 'node h', '2', '3', '4', '5', '6', '7', '8', '9',
	'10', '11',
	'label2'}

function show_image(x, double)
	local suffix = "|link=]]"
	if double then
		suffix = "|x46px|link=]]"
	end
	for i, svgfile in ipairs(has_svg) do
		if svgfile == string.gsub(x, '_', ' ') then
			return "[[File:CDel_" .. x .. ".svg" .. suffix
		end
	end
	return "[[File:CDel_" .. x .. ".png" .. suffix
end

function p.CDD(frame)
	-- For calling from #invoke.
	local pframe = frame:getParent()
	local args = pframe.args
	return p._CDD(args)
end
	
function p._CDD(args)
	-- For calling from other Lua modules.
	local body ='<span style="display:inline-block;">'         -- create and start the output string
	local double = false                                       -- experimental only, scale to 2x and see what happens
	for v, x in ipairs(args) do                                -- process params, ignoring any names
		if (x == 'DOUBLE') then
			double = true
		elseif (x ~= '') then						-- check for null/empty names
        	body = body .. show_image(x, double)    -- write file for this parameter
		end
	end
	body = body .. "</span>"                                   -- finish output string
	return body                                                -- return result
end

return p