Module:Taunt Nav

local p = {} local cargo = mw.ext.cargo

local i18n = { -- Modules module_cosmetic = 'Module:Cosmetic', module_arguments = 'Module:Arguments', -- Templates template_navbox = 'Navbox', template_hero_entry = 'Hero entry', -- Navbox settings navbox_name = 'Taunt Nav', navbox_title = 'Taunts', -- Cargo table_name = 'cosmetic_items', taunt_prefab = 'Taunt', -- Errors error_no_data = 'Failed to get Cargo data', }

local cosmetic = require(i18n.module_cosmetic)._main local getArgs = require(i18n.module_arguments).getArgs

function p.main(frame) local args = getArgs(frame, {   wrappers = {      'Template:Taunt Nav'    }  }) local navbox = { name = i18n.navbox_name, border = args['border'] or nil, state = args['state'] or 'autocollapse', style = 'text-align: center;', groupstyle = 'text-align: center;', title = i18n.navbox_title, } local heroes = cargo.query(i18n.table_name, 'hero', { where='prefab="'..i18n.taunt_prefab..'"', groupBy='hero' }) assert(heroes, i18n.error_no_data) for i,data in ipairs(heroes) do   local cargo_taunts = cargo.query(i18n.table_name, '_pageName', { where='prefab="'..i18n.taunt_prefab..'" AND hero="' .. data.hero .. '"', groupBy='_pageID' }) local taunts = {} for _,taunt in ipairs(cargo_taunts) do     local cosmetic_item = tostring(cosmetic({ taunt._pageName })) table.insert(taunts, cosmetic_item) end navbox['group' .. i] = frame:expandTemplate{ title = i18n.template_hero_entry, args = { data.hero } } navbox['list' .. i] = table.concat(taunts, ' ') end return frame:expandTemplate{ title = i18n.template_navbox, args = navbox } end

return p