Module:Infobox: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
Line 41: | Line 41: | ||
:addHeader("Component info") | :addHeader("Component info") | ||
:addRow("Internal ID", args.id) | :addRow("Internal ID", "<code>"..args.id.."</code>") | ||
if args.io ~= nil then | if args.io ~= nil then |
Revision as of 23:58, 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", "<code>"..args.id.."</code>")
if args.io ~= nil then
io = args.io
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