Module:Gadget-state
From BoyWiki
Documentation for this module may be created at Module:Gadget-state/doc
local p = {} local getArgs = require('Module:Arguments').getArgs local gadgets = mw.loadData('Module:Gadget-state/data') local function getGadget(frame) local gadgetName = getArgs(frame)[1] if type(gadgetName) ~= 'string' then return nil end gadgetName = gadgetName:gsub('^Gadget%-', '') return gadgets[gadgetName] end local function getFlag(gadget, flag) if gadget then for _, v in ipairs(gadget) do if mw.text.trim(v) == flag then return true end end end return false end function p.defaultState(frame) local gadget = getGadget(frame) if getFlag(gadget, 'default') then return 'true' else return 'false' end end function p.alsoActivates(frame) local gadget = getGadget(frame) local alsoActivates = {} if gadget then local dependencies = {} for _, v in ipairs(gadget) do if v:match('^ *dependencies *= *') then for dep in mw.text.gsplit(v:gsub('^ *dependencies *= *', ''), ',', true) do if dep:match('^ *ext%.gadget%.') then table.insert(dependencies, mw.text.trim(dep:gsub('^ *ext%.gadget%.', ''))) end end end end for _, dep in ipairs(dependencies) do if not getFlag(gadgets[dep], 'hidden') then table.insert(alsoActivates, dep) end end end return table.concat(alsoActivates, ',') end function p.getKnownGadgets() local names = {} for name, _ in pairs(gadgets) do table.insert(names, name) end return names end return p