Module:Infocard/sandbox: Difference between revisions

From Path of Exile Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 28: Line 28:
     local html = mw.html.create('div')
     local html = mw.html.create('div')
         :addClass('info-card')
         :addClass('info-card')
    if args.class then
        html:addClass(args.class)
    end
     if args.above then
     if args.above then
         html
         html
Line 36: Line 39:
     local card = mw.html.create('div')
     local card = mw.html.create('div')
         :addClass('info-card__card')
         :addClass('info-card__card')
    if args.class then
        card:addClass(args.class)
    end
     local header = mw.html.create('div')
     local header = mw.html.create('div')
         :addClass('info-card__header')
         :addClass('info-card__header')
    header
         :tag('div')
         :tag('div')
             :addClass('left')
             :addClass('left')
Line 86: Line 87:
                 :node(args.below)
                 :node(args.below)
     end
     end
     return mw.getCurrentFrame():extensionTag(
     return tostring(html)
        'templatestyles', '', {src = cfg.templatestyles}
    ) .. tostring(html)
end
end



Latest revision as of 23:39, 26 February 2022

This is the module sandbox page for Module:Infocard (diff).

Module documentation[view] [edit] [history] [purge]


Lua logo

This module depends on the following other modules:

This module implements {{infocard}}.


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

require('Module:No globals')
local m_util = require('Module:Util')

-- Should we use the sandbox version of our submodules?
local use_sandbox = m_util.misc.maybe_sandbox('Infocard')

-- The cfg table contains all localisable strings and configuration, to make it
-- easier to port this module to another wiki.
local cfg = use_sandbox and mw.loadData('Module:Infocard/config/sandbox') or mw.loadData('Module:Infocard/config')

local i18n = cfg.i18n

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

local function _main(args)
    args.heading = args.heading or args.header
    args.subheading = args.subheading or args.subheader
    local html = mw.html.create('div')
        :addClass('info-card')
    if args.class then
        html:addClass(args.class)
    end
    if args.above then
        html
            :tag('div')
                :addClass('info-card__above')
                :node(args.above)
    end
    local card = mw.html.create('div')
        :addClass('info-card__card')
    local header = mw.html.create('div')
        :addClass('info-card__header')
    header
        :tag('div')
            :addClass('left')
            :wikitext(args.headerleft or '')
    local middle = mw.html.create('div')
        :addClass('middle')
    middle
        :tag('div')
            :addClass('heading')
            :wikitext(args.heading)
    if args.subheading then
        middle
            :tag('div')
                :addClass('subheading')
                :wikitext(args.subheading)
    end
    header
        :node(middle)
    header
        :tag('div')
            :addClass('right')
            :wikitext(args.headerright or '')
    card:node(header)
    local body = mw.html.create('div')
        :addClass('info-card__body')
    local block
    for i=1, math.huge do -- repeat until no more blocks are found
        if args[i] == nil then
            break
        end
        block = mw.html.create('div')
            :addClass('block')
        if args[i .. 'class'] then
            block:addClass(args[i .. 'class'])
        end
        block:node(args[i])
        body:node(block)
    end
    card:node(body)
    html:node(card)
    if args.below then
        html
            :tag('div')
                :addClass('info-card__below')
                :node(args.below)
    end
    return tostring(html)
end

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

local p = {}

p.main = m_util.misc.invoker_factory(_main, {
    wrappers = cfg.wrappers,
})

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

return p