Path of Exile Wiki

Wiki поддерживается сообществом, поэтому подумайте над тем, чтобы внести свой вклад.

ПОДРОБНЕЕ

Path of Exile Wiki
Регистрация
Advertisement
Template info icon Документация модуля[просмотр] [править] [история] [очистить]

-------------------------------------------------------------------------------
-- 
--                            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
Advertisement