Documentation for this module may be created at Module:Optional style/doc

--[=[
Simple module to construct a style attribute with an undefined number (including
zero) of CSS properties
]=]

local p = {} --p stands for package
local getArgs = require('Module:Arguments').getArgs

--[=[
Construct the string from the given table of property:values
]=]
function p.make_style_string(properties)
	
	local out  = ''
	
	local num_processed = 0
	for k, v in pairs(properties) do
		if k ~= 'style' and v~= '' then
			out = out .. k .. ':' .. v .. ';'
		end
	end
	
	if properties.style ~= nil and properties.style ~= '' then
		out = out .. properties.style	
	end
	
	if out == '' then
		return ''
	end
	
	return 'style="' .. out .. '"'
end

--[=[
The main entry function from templates

Arguments are taken from both frame and parent argument lists
]=]
function p.optional_style(frame)
	local args = getArgs(frame)
	return p.make_style_string(args)
end

return p