Module:Gadget-state
Jump to navigation
Jump to search
Lua
Documentation for this module may be created at Module:Gadget-state/doc
Code
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