🇮🇷 Iran Proxy | https://www.wikipedia.org/wiki/Module:InfoboxNonEmergencyNumber
Jump to content

Module:InfoboxNonEmergencyNumber

From Wikipedia, the free encyclopedia

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