打开/关闭菜单
切换首选项菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:RichTab

来自此界与彼端

此模块的文档可以在模块:RichTab/doc创建

-- Source: https://dontstarve.huijiwiki.com/index.php?title=%E6%A8%A1%E5%9D%97:RichTab

local getArgs = require('Module:Arguments').getArgs

local p = {}

function p.render(frame)
    local args = getArgs(frame)
    local tabParams = p.parseTabParams(args)

    if #tabParams == 0 then
        return ''
    end

    local class = args.class or 'tablist-default'

    local onClass = 'active'

    local html = mw.html.create('div'):addClass('tabber richtab')

    local header = html:tag('ul'):addClass('nav tabber-filter ' .. class):attr('role', 'tablist')

    local headerType = args.prefix or 'richtab'
    local current = tonumber(args.active) or 1
    for tabIndex, tabItem in ipairs(tabParams) do
        local li = header:tag('li'):addClass('tabber-filter-item' .. (tabIndex == current and ' ' .. onClass or ''))
        :attr('data-type', headerType):attr('data-' .. headerType, tabIndex):wikitext(tabItem.header)
    end

    local content = html:tag('div'):addClass('tab-content tabber-content')
    if args.is_getstrings then
        content = content:addClass('tabcontent-default')
    end

    for tabIndex, tabItem in ipairs(tabParams) do
        local div = content:tag('div'):addClass('tab-pane tabber-item'):attr('data-' .. headerType, tabIndex)
        div:wikitext(tabItem.content)
    end

    return html
end

function p.parseTabParams(args)
    local index = 1
    local parsedParams = {}
    while args[index] ~= nil and args[index + 1] ~= nil do
        table.insert(parsedParams, {
            header = args[index],
            content = args[index + 1],
        })
        index = index + 2
    end
    return parsedParams
end

return p