Module:Infobox: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
local p = {} | local p = {} | ||
function p.component(frame) | -- TODO: Move to shared module | ||
local args = frame:getParent().args | function unflattenArgs(flatArgs) | ||
local args = {} | |||
for k, v in pairs(flatArgs) do | |||
local parent = args | |||
for token in string.gmatch(k, "[^.]+%.") do | |||
local key = string.sub(token, 1, #token - 1) | |||
if parent[key] == nil then | |||
parent[key] = {} | |||
end | |||
parent = parent[key] | |||
end | |||
local name = string.match(k, "[^.]+$") | |||
parent[name] = v | |||
end | |||
return args | |||
end | |||
function p.component(frame, args) | |||
local args = unflattenArgs(args or frame:getParent().args) | |||
local headerStyle | local headerStyle | ||
if args.headerstyle and args.headerstyle ~= '' then | if args.headerstyle and args.headerstyle ~= '' then |
Revision as of 23:52, 6 September 2025
local capiunto = require 'capiunto'
local p = {}
-- TODO: Move to shared module
function unflattenArgs(flatArgs)
local args = {}
for k, v in pairs(flatArgs) do
local parent = args
for token in string.gmatch(k, "[^.]+%.") do
local key = string.sub(token, 1, #token - 1)
if parent[key] == nil then
parent[key] = {}
end
parent = parent[key]
end
local name = string.match(k, "[^.]+$")
parent[name] = v
end
return args
end
function p.component(frame, args)
local args = unflattenArgs(args or frame:getParent().args)
local headerStyle
if args.headerstyle and args.headerstyle ~= '' then
headerStyle = string.format('background-color:%s;', args.headerstyle)
else
headerStyle = 'background-color:grey;'
end
local retval = capiunto.create{
title = args.title,
headerStyle = headerStyle,
bodyClass = "lw-infobox"
}
:addImage( string.format("[[File:%s 512x512.png|200px]]", args.id), args.caption )
:addHeader("Component info")
:addRow("Internal ID", args.id)
if args.inputOutput ~= nil then
io = args.inputOutput
retval:addHeader("Input and output")
if io.minInputs ~= io.maxInputs then
retval:addRow("Input count", string.format("Adjustable from %i to %i", io.minInputs, io.maxInputs))
else
retval:addRow("Input count", io.minInputs)
end
retval:addRow("Output count", io.outputs)
if io.propagationDelay ~= nil then
local ticksStr = string.format("%i tick", io.propagationDelay)
if tonumber(args.propagationDelay) ~= 1 then
ticksStr = ticksStr.."s"
end
retval:addRow("Propagation delay", ticksStr)
end
end
return retval
end
return p