Module:parameters/lite

From Linguifex
Jump to navigation Jump to search

Documentation for this module may be created at Module:parameters/lite/doc

local export = {}

local function clean(x) return x and #x > 0 and x or nil end

-- This modifies params!
-- Only supports required, aliases (a list of alternative names)
function export.process(args, params)
	for key, options in pairs(params) do
		local value = clean(args[key])
		local required
		
		if type(options) == "boolean" then
			required = options
		elseif type(options) == "table" then
			if not value and options.aliases then
				for _, alias in ipairs(options.aliases) do
					value = clean(args[alias])
					if value then break end
				end
			end
			required = options.required
		end
		
		if value then
			value = mw.text.trim(value)
		elseif required then
			error("Parameter " .. key .. " is required")
		end
		
		params[key] = value
	end

	return params
end

return export