Module:InfoboxNonEmergencyNumber
Appearance
local p = {}
local mw = mw
-- List of required parameters
local required = {"name", "organisation", "country"}
-- Helper function: trim and convert to string
local function trimmed(args, key)
if not args[key] then return "" end
return mw.text.trim(tostring(args[key]))
end
-- Helper function: add a row to the infobox table
local function addRow(tbl, label, value)
tbl:tag("tr")
:tag("td"):wikitext(label):done()
:tag("td"):wikitext(value)
end
-- Main function called by the template
function p.main(frame)
local parent = frame:getParent()
local args = parent.args or {}
-- Check required parameters
local missing = {}
for _, k in ipairs(required) do
if trimmed(args, k) == "" then
table.insert(missing, k)
end
end
if #missing > 0 then
-- Return red Wikipedia error box
return "{{error|Missing required parameter(s): " .. table.concat(missing, ", ") .. "}}"
end
-- Start building infobox table
local infobox = mw.html.create("table")
:addClass("infobox")
:css("width", "22em")
-- Title (name)
local name = trimmed(args, "name")
infobox:tag("tr"):tag("th"):attr("colspan", "2"):wikitext(name)
-- Required fields
addRow(infobox, "Organisation", trimmed(args, "organisation"))
addRow(infobox, "Country", trimmed(args, "country"))
-- Optional fields
local launched = trimmed(args, "launched")
if launched ~= "" then addRow(infobox, "Launched", launched) end
local method = trimmed(args, "method")
if method ~= "" then addRow(infobox, "Method", method) end
local related = trimmed(args, "related")
if related ~= "" then addRow(infobox, "Related numbers", related) end
local website = trimmed(args, "website")
if website ~= "" then addRow(infobox, "Website", website) end
return tostring(infobox)
end
return p