Module:Traits

From Coromon Wiki
Jump to navigation Jump to search

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

local p = { }

local traits = mw.loadData("Module:Traits/List");

local errorMsg = "'''Invalid Trait Name. Refer to [[Module:Traits]] for help.'''"

function p.getList ()
	return traits
end

function p.isValid (frame)
	
	local trait = frame.args[1] or frame.args["trait"]
	
	for k, v in pairs(traits) do
		if v["name"] == trait then
			return 'true'
		end
	end
	
	return 'false'
end

function p.isValidLocal (trait)
	
	for k, v in pairs(traits) do
		if v["name"] == trait then
			return 'true'
		end
	end
	
	return 'false'
end

function p.getTrait(frame)
   local trait = frame.args[1] or frame.args["trait"]

   for k, v in pairs(traits) do
      if v["name"] == trait or k == trait then
         return v
      end
   end

   error("Trait not found: " .. tostring(trait))
end
function p.getTraitID (frame)
	local trait = frame.args[1] or frame.args["trait"]
	
	for k, v in pairs(traits) do
		if v["name"] == trait then
			return k
		end
	end
end

function p.getTraitParamOrDefault (frame, param, valueIfEmpty)
	local trait = p.getTrait(frame)
	if trait == nil then
		return errorMsg
	end
	
	if trait[param] == nil then
		return param .. " is undefined for " .. trait["name"]
	end

	return trait[param] ~= "" and trait[param] or valueIfEmpty
end

function p.getDesc (frame)
	return p.getTraitParamOrDefault(frame, "desc", "N/A")
end

function p.get(frame)
	local parameter = frame.args[2] or frame.args["parameter"]
    return p.getTraitParamOrDefault(frame, parameter, "N/A")
end

function p.getParam (frame)
	
	local trait = p.getTrait(frame)
	local param = frame.args[2] or frame.args["param"]
	
	return trait[param]
end

return p