模块:Utils:修订间差异

来自Mindustry中文wiki
无编辑摘要
无编辑摘要
第19行: 第19行:
end
end
-- 一个用来打表的函数,会自动适配内容数量,用法:{{#invoke:utils|row|目标1|注释1|...}}
-- 一个用来打表的函数,会自动适配内容数量,用法:{{#invoke:utils|row|目标1|注释1|...}}
function p.row(frame)
function p.renderGoals(frame)
     local args = frame.args
     local args = frame.args
     local cells = {}
     local cells = {}


     local i = 1
    -- if判断是否输出目标栏
    local cond = args[1] or ''
    if cond == '' then
        return ''  -- 条件为空,不输出任何内容
    end
 
     local i = 2
     while true do
     while true do
         local val1 = args[i]
         local val1 = args[i]
         if val1 == nil then break end
         if val1 == nil then break end
         val1 = trimTrailing(val1)
         val1 = trimTrailing(val1)
         i = i + 1
         i = i + 1
         local val2 = args[i]
         local val2 = args[i]
第36行: 第43行:
     end
     end
     if #cells == 0 then return "no arg" end
     if #cells == 0 then return "no arg" end
     return "|-\n| " .. table.concat(cells, "\n|-\n| ")
    -- 大粪
     return '<div class="mdtMain">\n<div class="mdtHome">\n<div class="mdtPanel mdtHomeSection">\n<h2 class="mdtFoldHeading" style="margin:0 0 8px 0;">目标列表 <span class="mdtFold"></span></h2>\n{| class="mdtSideTable"\n! 目标 !! 注释|-\n| ' .. table.concat(cells, "\n|-\n| ")..'|}\n</div>\n</div>'
end
end


-- 打表专用的配套函数
function p.showIf(frame)
    local cond = frame.args['cond'] or ''
    local thenText = frame.args['then'] or ''
    local elseText = frame.args['else'] or ''
    if cond ~= '' then
        return thenText
    else
        return elseText
    end
end


return p
return p

2026年8月8日 (六) 16:27的版本

可在模块:Utils/doc创建此模块的帮助文档

local p = {}

-- 辅助函数:去除字符串尾部的所有空白字符(空格、换行、回车等)
local function trimTrailing(str)
    if str then
        return str:gsub("%s+$", "")
    end
    return str
end

-- 条件函数,用法:{{#invoke:utils|ifeq|条件|为真输出|为假输出}}
function p.ifeq(frame)
    local cond = frame.args[1] or ''
    if cond ~= '' then
        return frame.args[2]
    else
        return frame.args[3]
    end
end
-- 一个用来打表的函数,会自动适配内容数量,用法:{{#invoke:utils|row|目标1|注释1|...}}
function p.renderGoals(frame)
    local args = frame.args
    local cells = {}

    -- if判断是否输出目标栏
    local cond = args[1] or ''
    if cond == '' then
        return ''   -- 条件为空,不输出任何内容
    end

    local i = 2
    while true do
        local val1 = args[i]
        if val1 == nil then break end
        val1 = trimTrailing(val1)

        i = i + 1
        local val2 = args[i]
        if val2 == nil then break end
        val2 = trimTrailing(val2)
        table.insert(cells,val1.." || "..val2)
        i = i + 1
    end
    if #cells == 0 then return "no arg" end
    -- 大粪
    return '<div class="mdtMain">\n<div class="mdtHome">\n<div class="mdtPanel mdtHomeSection">\n<h2 class="mdtFoldHeading" style="margin:0 0 8px 0;">目标列表 <span class="mdtFold"></span></h2>\n{| class="mdtSideTable"\n! 目标 !! 注释|-\n| ' .. table.concat(cells, "\n|-\n| ")..'|}\n</div>\n</div>'
end


return p