Module:Infobox
Jump to navigation
Jump to search
local p = {}
local TableBuilder = require("Module:TableBuilder") local animateImages = require("Module:Animated")._images local getArgs = require('Module:Arguments').getArgs
function p.block(frame)
local args = getArgs(frame, {inherited = true}) return p._block(args)
end
function p.item(frame)
local args = getArgs(frame, {inherited = true}) return p._item(args)
end
function p.foodItem(frame)
local args = getArgs(frame, {inherited = true}) return p._foodItem(args)
end
function p.mob(frame)
local args = getArgs(frame, {inherited = true}) return p._mob(args)
end
function p.game(frame)
local args = getArgs(frame, {inherited = true}) return p._game(args)
end
function p.mod(frame)
local args = getArgs(frame, {inherited = true}) return p._mod(args)
end
local function infobox(args)
local name = args.name local width = args.width or "200px"
local description = args.description local includewhere = args.includewhere ~= false if description and includewhere then local wherein = args.wherein or "Minetest Game" description = description .. " in " .. wherein end
local image = args.image or "Blank.png" local imagesize = args.imagesize local imageText if string.match(image, ",") then imageText = animateImages({image, imagesize}) else if imagesize then imageText = "" .. imagesize .. "" else imageText = "File:" .. image .. "" end end
return TableBuilder.create() :addClass("wikitable") :css("float", "right") :css("text-align", "left") :css("margin", "0 0 0.5em 1em") :css("padding", "5px") :css("font-size", "90%") :css("position", "relative") :css("clear", "right") :css("overflow", "auto") :css("z-index", "1") :attr("width", width) :addRow() :addHeader() :attr("colspan", 2) :css("font-size", "110%") :css("text-align", "center") :wikitext(name) :done() :done() :addRow() :addHeader() :attr("colspan", 2) :tag("div") :addClass("center") :wikitext(imageText) :done() :done() :done() :addRow() :addHeader() :attr("colspan", 2) :attr("align", "center") :wikitext(description) :allDone()
end
local function addInfoRow(infobox, name, info)
local row = infobox:addRow() row:addData():wikitext("" .. name .. "") row:addData():wikitext(info)
end
function p._block(args)
local infobox = infobox({ name = args.name or args.block_name or "A block", image = args.image, imagesize = "150px", description = "A block", wherein = args.wherein, width = args.width }) addInfoRow(infobox, "Type", args.type or args.block_type or "Solid block") addInfoRow(infobox, "Drops", args.drops or "Itself") addInfoRow(infobox, "Physics", args.physics or "No") addInfoRow(infobox, "Luminance", args.luminance or "No") addInfoRow(infobox, "Flammable", args.flammable or "No") addInfoRow(infobox, "Generated", args.generated or "Yes") addInfoRow(infobox, "Renewable", args.renewable or "No") addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)") addInfoRow(infobox, "Itemstring", args.itemstring or "?") return tostring(infobox)
end
function p._item(args)
local infobox = infobox({ name = args.name or args.item_name or "An item", image = args.image, imagesize = "160px", description = "An item", wherein = args.wherein, width = args.width }) addInfoRow(infobox, "Type", args.type or args.item_type or "Craftitem") addInfoRow(infobox, "Renewable", args.renewable or "No") addInfoRow(infobox, "Durability", args.durability or "N/A") addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)") addInfoRow(infobox, "Itemstring", args.itemstring or "?") return tostring(infobox)
end
function p._foodItem(args)
local infobox = infobox({ name = args.name or args.item_name or "A food item", image = args.image, imagesize = "160px", description = "A food item", wherein = args.wherein, width = args.width }) addInfoRow(infobox, "Type", args.type or args.item_type or "Food") addInfoRow(infobox, "Restores", args.restores or "?") addInfoRow(infobox, "Cookable", args.cookable or "No") addInfoRow(infobox, "Renewable", args.renewable or "No") addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)") addInfoRow(infobox, "Itemstring", args.itemstring or "?") return tostring(infobox)
end
function p._mob(args)
local infobox = infobox({ name = args.name or args.mob_name or "A mob", image = args.image, imagesize = "150px", description = "A mob", wherein = args.wherein, width = args.width }) addInfoRow(infobox, "Health", args.health or "?") addInfoRow(infobox, "Armor", args.armor or "N/A") addInfoRow(infobox, "Damage", args.damage or "N/A") addInfoRow(infobox, "Drops", args.drops or "N/A") addInfoRow(infobox, "Entitystring", args.entitystring or "?") return tostring(infobox)
end
function p._game(args)
local infobox = infobox({ name = args.name or "A subgame", image = args.image, imagesize = "150px", description = "A subgame", includewhere = false, width = args.width }) addInfoRow(infobox, "Type", args.type or "?") addInfoRow(infobox, "Author", args.author or "?") addInfoRow(infobox, "Latest version", args.version or "?") addInfoRow(infobox, "Forum topic", args.forum or "N/A") addInfoRow(infobox, "Source code", args.source or "N/A") return tostring(infobox)
end
function p._mod(args)
local infobox = infobox({ name = args.name or "A mod", image = args.image, imagesize = "150px", description = "A mod", includewhere = false, width = args.width }) addInfoRow(infobox, "Type", args.type or "?") addInfoRow(infobox, "Author", args.author or "?") addInfoRow(infobox, "Latest version", args.version or "?") addInfoRow(infobox, "Forum topic", args.forum or "N/A") addInfoRow(infobox, "Source code", args.source or "N/A") addInfoRow(infobox, "Technical name", args.luaname or "?") return tostring(infobox)
end
return p