Module:Sandbox/一位史蒂夫
跳到导航
跳到搜索
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