2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

Module: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