模組:Sandbox/一位史蒂夫

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
前往: 導覽搜尋
Template-info.svg 模塊文檔  [查看] [] [歷史] [刷新]

這裡是一位史蒂夫[更多]討論頁貢獻上傳歷史封禁及歷史被刪貢獻移動日誌巡查日誌用戶權限的模塊測試頁面。

目前模塊測試被用於:

模塊子頁面:

local luaq = require("Module:Luaq") -- 加載查詢模塊。
local module = {}
local data = mw.text.jsonDecode(mw.title.new("Module:UserGroup/data"):getContent())

function table.indexof(t, item)
    for i, v in ipairs(t) do
        if v == item then return i end
    end
    return 0
end

local UserGroupInfo = function(group, frame)
    local parent = frame:getParent()
    if parent and parent:getTitle() == "Template:UserGroup" then
        frame = parent
    end
    if frame.args["Count"] then
        return #group
    else
        local list = {}
        for key, val in ipairs(group) do
            if mw.text.trim(val) ~= "" then
                local user = config[val]
                if (user) then
                    table.insert(list,
                        frame:preprocess(user.prefix or "")..
                        frame:expandTemplate{ title = "User", args = { val } }..
                        frame:preprocess(user.postfix or "")
                    )
                else
                    table.insert(list, frame:expandTemplate{ title = "User", args = { val } })
                end
            end
        end
        return table.concat(list, " • ")
    end
end
--[==[
動態生成用以展示某一用戶組成員列表的模塊導出函數,
生成操作支持的用戶組同[[Module:UserGroup/data]]中明確列舉出的用戶組,沒有列舉出的將不會支持。
在調用模塊時,仍然可以使用{{#invoke|UserGroup|【用戶組的代號】}},舊代碼可不做修改。
  ]==]
for gname, g in pairs(data) do
    module[gname] = function(frame)
        return UserGroupInfo(g, frame)
    end
end
--[[
由於行政員默認擁有管理員用戶組,因此在顯示時需要去重。
  ]]
function module.vote_count(frame)
    local filter = mw.text.trim(frame.args[1] or "")
    local groups = getGroups(filter) -- 獲取要求和的用戶組列表
    if groups == nil or #groups == 0 then return 0 end
    return adjust + luaq.iasQuery(groups)
        :select(check_vote)
        :sum(function(x, y) return { x[1] + y[1] } end) -- 求和
end
return module