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]

-------------------------------------------------------------------------------
-- 
--                            Module:Infocard
-- 
-- This module implements Template:Infocard2 and is used by a number of other
-- modules to display info cards.
-------------------------------------------------------------------------------

local getArgs -- Lazy load require('Module:Arguments').getArgs

local cfg = {}

-- Wrapper templates
cfg.wrappers = {
    'Template:Infocard',
    'Template:Infocard2',
}

-- ----------------------------------------------------------------------------
-- Main function
-- ----------------------------------------------------------------------------

local function _main(args)
    local container = mw.html.create('div')
        :attr( 'class', 'infocard ' .. (args.class or '') )
    local topbar = mw.html.create('div')
        :attr('class', 'topbar')
    topbar
        :tag('div')
            :attr('class', 'left')
            :wikitext(args.headerleft)
            :done()
    local middle = mw.html.create('div')
        :attr('class', 'middle')
    middle
        :tag('div')
            :attr('class', 'header')
            :wikitext(args.header)
            :done()
    if args.subheader then
        middle
            :tag('div')
                :attr('class', 'subheader')
                :wikitext(args.subheader)
                :done()
    end
    topbar
        :node(middle)
    topbar
        :tag('div')
            :attr('class', 'right')
            :wikitext(args.headerright)
            :done()
    container
        :node(topbar)
    local inner = mw.html.create('div')
        :attr('class', 'inner')
    local block
    local i = 1
    while args[i] do
        block = mw.html.create('div')
            :attr( 'class', 'block ' .. (args[i .. 'class'] or '') )
        if type(args[i]) == 'table' then
            block:node(args[i])
        elseif type(args[i]) == 'string' then
            block:wikitext(args[i])
        end
        inner:node(block)
        i = i + 1
    end
    container:node(inner)
    return tostring(container)
end

-- ----------------------------------------------------------------------------
-- Exported functions
-- ----------------------------------------------------------------------------

local p = {}

function p.main(frame)
    local args
    if type(frame.args) == 'table' then
        -- Called via #invoke, so use getArgs().
        getArgs = require('Module:Arguments').getArgs
        args = getArgs(frame, {
            wrappers = cfg.wrappers
        })
    else
        -- Called from another module or from the debug console, so assume args 
        -- are passed in directly.
        args = frame
    end
    return _main(args)
end

p.infocard = p.main
p._main = p.main -- Contingency for modules that are still calling p._main()

return p