<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox</id>
	<title>Module:Infobox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.minetest.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInfobox"/>
	<link rel="alternate" type="text/html" href="https://wiki.minetest.org/index.php?title=Module:Infobox&amp;action=history"/>
	<updated>2026-05-01T07:54:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://wiki.minetest.org/index.php?title=Module:Infobox&amp;diff=15069&amp;oldid=prev</id>
		<title>&gt;FnControlOption: FnControlOption changed the content model of the page Module:Infobox from &quot;plain text&quot; to &quot;Scribunto&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.minetest.org/index.php?title=Module:Infobox&amp;diff=15069&amp;oldid=prev"/>
		<updated>2022-06-07T17:39:18Z</updated>

		<summary type="html">&lt;p&gt;FnControlOption changed the content model of the page &lt;a href=&quot;/Module:Infobox&quot; title=&quot;Module:Infobox&quot;&gt;Module:Infobox&lt;/a&gt; from &amp;quot;plain text&amp;quot; to &amp;quot;Scribunto&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local TableBuilder = require(&amp;quot;Module:TableBuilder&amp;quot;)&lt;br /&gt;
local getLanguageCode = require(&amp;quot;Module:Languages&amp;quot;).getLanguageCode&lt;br /&gt;
local animateImages = require(&amp;quot;Module:Animated&amp;quot;)._images&lt;br /&gt;
local makeInvokeFunc = require(&amp;quot;Module:Arguments&amp;quot;).makeInvokeFunc&lt;br /&gt;
local dataPrefix = &amp;quot;Module:Infobox/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- Get data (IDs and names) for infobox row headers.&lt;br /&gt;
--&lt;br /&gt;
-- @param type Infobox type (e.g. block)&lt;br /&gt;
-- @param langCode Language code, defaults to current language&lt;br /&gt;
-- @param frame Current frame object&lt;br /&gt;
local function getRowHeadersData(type, langCode, frame)&lt;br /&gt;
    langCode = langCode or getLanguageCode()&lt;br /&gt;
    frame = frame or mw.getCurrentFrame()&lt;br /&gt;
    local title = dataPrefix .. langCode&lt;br /&gt;
    if frame:preprocess(&amp;quot;{{#ifexist:&amp;quot; .. title .. &amp;quot;|true}}&amp;quot;) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local data = mw.loadData(title)&lt;br /&gt;
        return data and data[type] or nil&lt;br /&gt;
    end&lt;br /&gt;
    return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Create an infobox.&lt;br /&gt;
--&lt;br /&gt;
-- @param args Infobox arguments&lt;br /&gt;
-- @param type Infobox type (e.g. block)&lt;br /&gt;
local function infobox(args, type)&lt;br /&gt;
    local rowHeadersData = getRowHeadersData(type) or getRowHeadersData(type, &amp;quot;en&amp;quot;)&lt;br /&gt;
    local name = args.name&lt;br /&gt;
    local width = args.width or &amp;quot;200px&amp;quot;&lt;br /&gt;
    local description = args.description&lt;br /&gt;
    local image = args.image or &amp;quot;Blank.png&amp;quot;&lt;br /&gt;
    local imagesize = args.imagesize&lt;br /&gt;
    local imageText&lt;br /&gt;
    if string.match(image, &amp;quot;,&amp;quot;) then&lt;br /&gt;
        imageText = animateImages({image, imagesize})&lt;br /&gt;
    else&lt;br /&gt;
        if imagesize then&lt;br /&gt;
            imageText = &amp;quot;[[File:&amp;quot; .. image .. &amp;quot;|&amp;quot; .. imagesize .. &amp;quot;]]&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            imageText = &amp;quot;[[File:&amp;quot; .. image .. &amp;quot;]]&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local infobox = TableBuilder.create()&lt;br /&gt;
&lt;br /&gt;
    infobox&lt;br /&gt;
        :addClass(&amp;quot;wikitable&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;float&amp;quot;, &amp;quot;right&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;text-align&amp;quot;, &amp;quot;left&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;margin&amp;quot;, &amp;quot;0 0 0.5em 1em&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;padding&amp;quot;, &amp;quot;5px&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;font-size&amp;quot;, &amp;quot;90%&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;position&amp;quot;, &amp;quot;relative&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;clear&amp;quot;, &amp;quot;right&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;overflow&amp;quot;, &amp;quot;auto&amp;quot;)&lt;br /&gt;
        :css(&amp;quot;z-index&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
        :attr(&amp;quot;width&amp;quot;, width)&lt;br /&gt;
        :addRow()&lt;br /&gt;
            :addHeader()&lt;br /&gt;
                :attr(&amp;quot;colspan&amp;quot;, 2)&lt;br /&gt;
                :css(&amp;quot;font-size&amp;quot;, &amp;quot;110%&amp;quot;)&lt;br /&gt;
                :css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
                :wikitext(name)&lt;br /&gt;
                :done()&lt;br /&gt;
            :done()&lt;br /&gt;
        :addRow()&lt;br /&gt;
            :addHeader()&lt;br /&gt;
                :attr(&amp;quot;colspan&amp;quot;, 2)&lt;br /&gt;
                :tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
                    :addClass(&amp;quot;center&amp;quot;)&lt;br /&gt;
                    :wikitext(imageText)&lt;br /&gt;
                    :done()&lt;br /&gt;
                :done()&lt;br /&gt;
            :done()&lt;br /&gt;
        :addRow()&lt;br /&gt;
            :addHeader()&lt;br /&gt;
                :attr(&amp;quot;colspan&amp;quot;, 2)&lt;br /&gt;
                :attr(&amp;quot;align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
                :wikitext(description)&lt;br /&gt;
&lt;br /&gt;
    for _, rowHeaderData in ipairs(rowHeadersData) do&lt;br /&gt;
        local rowData = args[rowHeaderData.id]&lt;br /&gt;
        if rowData and rowData ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            infobox&lt;br /&gt;
                :addRow()&lt;br /&gt;
                    :addData()&lt;br /&gt;
                        :wikitext(&amp;quot;'''&amp;quot; .. rowHeaderData.name .. &amp;quot;'''&amp;quot;)&lt;br /&gt;
                        :done()&lt;br /&gt;
                    :addData()&lt;br /&gt;
                        :wikitext(rowData)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return infobox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._block(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;block&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._item(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;160px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;item&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._foodItem(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;160px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;foodItem&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._mob(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;mob&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._object(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;object&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._game(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;game&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._mod(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;mod&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._server(args)&lt;br /&gt;
    args.imagesize = args.imagesize or &amp;quot;150px&amp;quot;&lt;br /&gt;
    return tostring(infobox(args, &amp;quot;server&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.block = makeInvokeFunc(p._block, {inherited = true})&lt;br /&gt;
p.item = makeInvokeFunc(p._item, {inherited = true})&lt;br /&gt;
p.foodItem = makeInvokeFunc(p._foodItem, {inherited = true})&lt;br /&gt;
p.mob = makeInvokeFunc(p._mob, {inherited = true})&lt;br /&gt;
p.object = makeInvokeFunc(p._object, {inherited = true})&lt;br /&gt;
p.game = makeInvokeFunc(p._game, {inherited = true})&lt;br /&gt;
p.mod = makeInvokeFunc(p._mod, {inherited = true})&lt;br /&gt;
p.server = makeInvokeFunc(p._server, {inherited = true})&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>&gt;FnControlOption</name></author>
	</entry>
</feed>