全站通知:

模块:Utils

来自星露谷物语维基
跳到导航 跳到搜索
[ 创建 | 刷新 ]文档页面
当前模块文档缺失,需要扩充。
local p = {}

function p.getArg(input, index)
	if not index then index = 1 end
    if type(input) == "string" then
        return input
    end
    return input.args[index] or input:getParent().args[index]
end

function p.hasChinese(str)
    return type(str) == 'string' and string.match(str, "[\228-\233][\128-\191][\128-\191]") ~= nil
end

function p.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 p.ExpandTemplate(title, args)
    return mw.getCurrentFrame():expandTemplate{
        title = title,
        args = args
    }
end

function p.lowerKeyTable(sourceTable)
    local newTable = {}
    for key, value in pairs(sourceTable) do
        if type(key) == "string" then
            newTable[string.lower(key)] = value
        else
            newTable[key] = value
        end
    end
    return newTable
end

p.lazyload = p.LazyLoad
p.lazyLoad = p.LazyLoad
p.expandTemplate = p.ExpandTemplate

return p