Module:infobox: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
if data.title then | if data.title then | ||
ret = ret .. '\n|-' | ret = ret .. '\n|-' | ||
ret = ret .. '\n! | ret = ret .. '\n! class="infobox-title" colspan=2 | ' .. data.title | ||
end | |||
if data.image then | |||
ret = ret .. '\n|-' | |||
ret = ret .. '\n| class="infobox-image" colspan=2 | ' .. data.image | |||
end | end | ||
if data.sections then | if data.sections then | ||
Line 21: | Line 25: | ||
end | end | ||
ret = ret .. '\n|-' .. row_class | ret = ret .. '\n|-' .. row_class | ||
ret = ret .. '\n! ' .. item.label .. ' | ' .. item.value | ret = ret .. '\n! ' .. item.label | ||
ret = ret .. '\n| ' .. item.value | |||
end | end | ||
end | end | ||
Line 34: | Line 39: | ||
data.sections = {} | data.sections = {} | ||
if args["title"] then data.title = args["title"] end | if args["title"] then data.title = args["title"] end | ||
if args["image"] then data.image = args["image"] end | |||
local i = 1 | local i = 1 | ||
while args[i] do | while args[i] do |
Latest revision as of 21:50, 7 August 2023
Documentation for this module may be created at Module:infobox/documentation
local export = {}
function export.make_infobox(data)
local ret = '{| class="infobox"'
if data.title then
ret = ret .. '\n|-'
ret = ret .. '\n! class="infobox-title" colspan=2 | ' .. data.title
end
if data.image then
ret = ret .. '\n|-'
ret = ret .. '\n| class="infobox-image" colspan=2 | ' .. data.image
end
if data.sections then
for _, section in ipairs(data.sections) do
local num_items = #section
for i, item in ipairs(section) do
local row_class = ""
if i == 1 then
row_class = ' class="infobox-section-toprow"'
elseif i == num_items then
row_class = ' class="infobox-section-bottomrow"'
end
if (not item.label) or (not item.value) then
error("each item must have a label and value")
end
ret = ret .. '\n|-' .. row_class
ret = ret .. '\n! ' .. item.label
ret = ret .. '\n| ' .. item.value
end
end
end
ret = ret .. '\n|}'
return ret
end
function export.show(frame)
local args = frame:getParent().args
local data = {}
data.sections = {}
if args["title"] then data.title = args["title"] end
if args["image"] then data.image = args["image"] end
local i = 1
while args[i] do
local section = {}
while args[i] and (args[i] ~= "-") do
if not args[i+1] then error("unexpected end of args") end
if args[i+1] == "-" then error("unexpected end of section") end
table.insert(section, {label = args[i], value = args[i+1]})
i = i + 2
end
if #section > 0 then table.insert(data.sections, section) end
i = i + 1
end
return export.make_infobox(data)
end
return export