Module:RequirementBox

Revision as of 17:18, 5 January 2026 by Admin Jeremy (talk | contribs)

Documentation for this module may be created at Module:RequirementBox/doc

local function renderCategory(title, list)
    if list == "" then return "" end

    local out = ""

    -- Split by lines
    for line in list:gmatch("[^\r\n]+") do
        line = mw.text.trim(line)

        -- Only process bullet lines
        if line:sub(1, 1) == "*" then
            local item = mw.text.trim(line:sub(2))

            if item:find("||OR||", 1, true) then
                -- OR requirement
                local parts = mw.text.split(item, "||OR||", true)
                out = out .. '<li class="vp-requirement-or">'
                for i, part in ipairs(parts) do
                    out = out .. '<div class="vp-requirement-or-option">' ..
                        mw.text.trim(part) .. '</div>'
                    if i < #parts then
                        out = out .. '<div class="vp-requirement-or-divider">OR</div>'
                    end
                end
                out = out .. '</li>'
            else
                -- Normal requirement
                out = out .. '<li>' .. item .. '</li>'
            end
        end
    end

    if out == "" then return "" end

    return string.format([[
<div class="vp-requirements-category">
  <div class="requirements-header">%s</div>
  <ul class="vp-requirements-list">
%s
  </ul>
</div>]], title, out)
end