Module:EffectType

local p = {}

effectTypes = {{"General", "Effects"}, {"Mental", "Mental Effects"}, {"Metabolic", "Metabolic Effects"}, {"Respiratory", "Respiratory Effects"}, {"Circulatory", "Circulatory Effects"}, {"Contact-based", "Contact-based Effects"}, {"Field", "Field Effects"}, {"Activity-based", "Activity-based Effects"}, {"Dimensional", "Dimensional Effects"}, {"Chemical-based", "Chemical-based Effects"}, {"Structural", "Structural Effects"}, {"Sound-based", "Sound-based Effects"}, {"Temporal", "Temporal Effects"}, {"Neurological", "Neurological Effects"}, {"Illness", "Illnesses"}, {"Psionic","Psionic Effects"} }

classTypes = {{"Minor", "Minor Effects"}, {"Negative", "Negative Effects"}, {"Removable", "Removable Effects"}, {"Voluntary", "Voluntary Effects"} }

function p.getTypes(frame) frame = mw.getCurrentFrame if frame.args[1] == nil or frame.args[1] == "" then error("An argument must be provided!") end typeList = p.parse(mw.text.trim(frame:preprocess(frame.args[1]))) return table.concat(typeList, ', ') end

function p.parse(bits) typeList = {} rbits = string.reverse(bits) i = 1 for bit in string.gmatch(rbits, "[01]") do		if bit == "1" then if i < 25 then table.insert(typeList,							 string.format("%s", effectTypes[i][1], effectTypes[i][2])) elseif i < 29 then table.insert(typeList,							 string.format("%s", classTypes[i-24][1], classTypes[i-24][2])) else error("This type string is way too long (> 28 chars)!)")			end		end		i = i + 1	end	return typeList end

return p