Module:Infobox

local p = {}

local File = require("Module:File") local Term = require("Module:Term") local utilsString = require("Module:UtilsString")

local FIELDS = require("Module:Infobox/Fields")

function p._Main(frame) local args = frame.args local templateArgs = frame:getParent.args return p.Main(templateArgs, args["type"]) end

function p.Main(args, type) local result = p.BuildInfobox(args, type) return result end

function p.BuildInfobox(args, type) -- Building table and global fields (name, image, etc) local infobox = mw.html.create("table") :addClass("infobox wikitable") -- Name field -- If a |name= parameter is provided, it will use it, else it will try to	-- use the Series term local nameDisplayed = args["name"] if utilsString.isEmpty(nameDisplayed) then nameDisplayed = mw.title.getCurrentTitle.text else nameDisplayed = nameDisplayed .. ""	end infobox:node(mw.html.create("tr"):node(mw.html.create("th") :addClass("infobox-name centered") :attr("colspan", "2") :wikitext(nameDisplayed))) -- Image field if not utilsString.isEmpty(args["image"]) then local imageWikitext = args["image"] if string.sub(args["image"], 1, 5) == "File:" then imageWikitext = File.image(args["image"], {				size = "320x320px",				scale = 10,			}) end if not utilsString.isEmpty(args["caption"]) then imageWikitext = imageWikitext .. " " .. args["caption"] .. ""		end infobox:node(mw.html.create("tr"):node(mw.html.create("td") :addClass("infobox-image centered") :attr("colspan", "2") :wikitext(imageWikitext))) end local row = "" -- Generated fields for key, field in ipairs(FIELDS[type]) do		if not utilsString.isEmpty(args[field["parameter"]]) then row = mw.html.create("tr") :addClass("infobox-field") if field["type"] == "wide" then row:node(mw.html.create("th")					:addClass("centered")					:attr("colspan", "2")					:wikitext(args[field["parameter"]])) else row:node(mw.html.create("th")						:wikitext(field["caption"])) :node(mw.html.create("td")						:node(mw.html.create("div") :addClass("infobox-field-content") :wikitext(args[field["parameter"]]))) end infobox:node(row) end end return infobox end

-- Documentation function p._UsageDocumentation(frame) local args = frame.args return p.UsageDocumentation(args["langcode"], args["type"]) end

function p.UsageDocumentation(langcode, infoboxType) local result = "" local preHeader = ""

local descriptions = mw.html.create("pre"):wikitext(preHeader) local blank = mw.html.create("pre"):wikitext(preHeader) -- Adding global fields descriptions:newline:wikitext("|image= Image(s) of the topic. (Use when possible.)") descriptions:newline:wikitext("|caption= Caption of the image. (Not to be used with .)") blank:newline:wikitext("|image= ") blank:newline:wikitext("|caption= ") -- Adding generated fields for key, field in ipairs(FIELDS[infoboxType]) do descriptions:newline:wikitext("|" .. field["parameter"] .. "= " .. field["description"]) blank:newline:wikitext("|" .. field["parameter"] .. "= ") end

descriptions:newline:wikitext(preFooter) blank:newline:wikitext(preFooter) return descriptions, "\nBlank code:\n", blank end

return p