Path of Exile Wiki

Please consider helping keep the wiki up to date. Check the to-do list of updates needed for version 3.14.0.

Game data exports will becoming later as the technical changes in addition to regular changes take some more time.

READ MORE

Path of Exile Wiki
Advertisement
Module documentation[view] [edit] [history] [purge]

Implements {{Item class infocard}}.

-------------------------------------------------------------------------------
-- 
--                        Module:Item class infocard
-- 
-- This module implements Template:Item class infocard
-------------------------------------------------------------------------------

-- ----------------------------------------------------------------------------
-- Includes
-- ----------------------------------------------------------------------------

local getArgs = require('Module:Arguments').getArgs
local m_util = require('Module:Util')
local m_game = mw.loadData('Module:Game')

local i18n = {
    page = '[[Item class]]',
    info = m_util.html.abbr('(?)', 'Item classes categorize items. Classes are often used to restrict items or skill gems to a specific class or by item filters'),
    also_referred_to_as = 'Also referred to as:',

    errors = {
        invalid_class = 'The item class name "%s" is invalid.',
    },
}

-- ----------------------------------------------------------------------------
-- Exported functions
-- ----------------------------------------------------------------------------
local p = {}

function p.main(frame)
    -- Get args
    local tpl_args = getArgs(frame, {
        parentFirst = true
    })
    frame = m_util.misc.get_frame(frame)
    
    if not doInfoCard then
        doInfoCard = require('Module:Infocard')._main
    end
    
    local err = true
    for _, row in pairs(m_game.constants.item.classes) do
        if row['full'] == tpl_args.name then
            err = false
            break
        end
    end
    
    if err then
        error(string.format(i18n.errors.invalid_class, tostring(tpl_args.name)))
    end
    
    if tpl_args.name_list ~= nil then
        tpl_args.name_list = m_util.string.split(tpl_args.name_list, ',%s*')
    else
        tpl_args.name_list = {}
    end
    
    --
    
    local ul = mw.html.create('ul')
    for _, item in ipairs(tpl_args.name_list) do
        ul
            :tag('li')
                :wikitext(item)
                :done()
    end
    

    -- Output Infocard
    
    local tplargs = {
        ['header'] = tpl_args.name,
        ['subheader'] = i18n.page .. i18n.info,
        [1] = i18n.also_referred_to_as .. tostring(ul),
    }
    
    -- cats
    
    local cats = {
        'Item classes',
        tpl_args.name,
    }
    
    -- Done
    
    return doInfoCard(tplargs) .. m_util.misc.add_category(cats, {ignore_blacklist=tpl_args.debug})
end

return p
Advertisement