全站通知:

模块:Helper

来自星露谷物语维基
跳到导航 跳到搜索

当前模块用于处理数据的懒加载和模板的展开。

[ 查看 | 编辑 | 历史 | 刷新 ]上述文档的内容来自模块:Helper/doc
local Self = {}

function Self.LazyLoad(moduleName, toLowerCase)
	toLowerCase = toLowerCase or false
    local loaded = nil

    local function doLoad()
        if loaded == nil then
            loaded = mw.loadData(moduleName)
            if toLowerCase then
                local lowerCaseLoaded = {}
                for key, value in pairs(loaded) do
                    lowerCaseLoaded[string.lower(key)] = value
                end
                loaded = lowerCaseLoaded
            end
        end
        return loaded
    end

    local meta = {}
    meta.__index = function(_table, key)
        return doLoad()[key]
    end
    meta.__pairs = function(_table)
        return pairs(doLoad())
    end
    meta.__ipairs = function(_table)
        return ipairs(doLoad())
    end

    local ret = {}
    setmetatable(ret, meta)
    return ret
end

function Self.ExpandTemplate(title, args)
    return mw.getCurrentFrame():expandTemplate{
        title = title,
        args = args
    }
end

function Self.ExpandTemplateDebug(title, args)
    local ret = "{{" .. title
    i = 1
    while args[i] ~= nil do
        ret = ret .. "|" .. args[i]
        i = i + 1
    end
    for k, v in pairs(args) do
        if type(k) ~= "number" or k > i then
            ret = ret .. "|" .. k .. "=" .. tostring(v)
        end
    end
    return ret .. "}}"
end

return Self