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

模块:Infobox/item/multidata:修订间差异

来自Cookie☆Wiki
无编辑摘要
无编辑摘要
第1行: 第1行:
local p = {}
local p = {}

function p.getBackgroundColor(i)
if i % 2 == 1 then return nil end
return '#e5ded6'
end


function p.make()
function p.make()
第27行: 第32行:
if i > majorPart then break end
if i > majorPart then break end
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
width = widthPercent, data = unnamed[i]
width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
} }
} }
i = i + 1
i = i + 1
第38行: 第43行:
if i > count then break end
if i > count then break end
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
width = widthPercent, data = unnamed[i]
width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
} }
} }
i = i + 1
i = i + 1

2019年1月13日 (日) 02:43的版本

此模块的文档可以在模块:Infobox/item/multidata/doc创建

local p = {}

function p.getBackgroundColor(i)
    if i % 2 == 1 then return nil end
    return '#e5ded6'
end

function p.make()
    local frame = mw.getCurrentFrame()
    local parent = frame:getParent()
    local itemsPerRow = tonumber(parent.args['row-items'])
    if itemsPerRow == nil then
        error('"row-items" is not a number')
    end
    
    local count = 0
    local unnamed = {}
    for k, v in pairs(parent.args) do
        if tonumber(k) ~= nil then
            table.insert(unnamed, v)
            count = count + 1

        end
    end

    local result = ''

    local widthPercent = string.format('%.2f', 100/itemsPerRow) .. '%'
    local majorPart = math.floor(count / itemsPerRow) * itemsPerRow
    local i = 1
    while (true) do
        if i > majorPart then break end
        result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
            width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
        } }
        i = i + 1
    end

    local remain = count - majorPart
    if remain ~= 0 then
        widthPercent = string.format('%.2f', 100/(remain)) .. '%'
        while (true) do
            if i > count then break end
            result = result .. frame:expandTemplate{ title = 'Infobox/item/data', args = {
                width = widthPercent, data = unnamed[i], bgcolor = p.getBackgroundColor(i)
            } }
            i = i + 1
        end
    end

    return result
end

return p