Module:InfoboxHero: Difference between revisions

m Categories are also required for other heroes
m Attempt to only add 2 categories for removed/unreleased heroes
Line 328: Line 328:
-- name: literal, or function(ctx) -> string.  when: function(ctx) -> boolean.
-- name: literal, or function(ctx) -> string.  when: function(ctx) -> boolean.
local CATEGORIES = {
local CATEGORIES = {
{ name = 'Heroes' },
    {
        name = function(ctx) return ctx.is_disabled and 'Unused heroes' or 'Heroes' end,
        always = true,
    },
{
{
name = function(ctx) return ctx.hero_en end,
name = function(ctx) return ctx.hero_en end,
-- Silver (Transformed) is documented on Silver's page and shares her category.
-- Silver (Transformed) is documented on Silver's page and shares her category.
when = function(ctx) return ctx.hero_en ~= 'Silver (Transformed)' end,
when = function(ctx) return ctx.hero_en ~= 'Silver (Transformed)' end,
        always = true,
},
},
{
{
Line 676: Line 680:
return ''
return ''
end
end
    local is_disabled = get_stat(ctx.hero, 'IsDisabled')
    if is_disabled == nil then return '' end
    ctx.is_disabled = is_disabled


local out = {}
local out = {}
for _, category in ipairs(CATEGORIES) do
for _, category in ipairs(CATEGORIES) do
if category.when == nil or category.when(ctx) then
        if is_disabled and not category.always then
elseif category.when == nil or category.when(ctx) then
local name = category.name
local name = category.name
if type(name) == 'function' then name = name(ctx) end
if type(name) == 'function' then name = name(ctx) end