这里是一位史蒂夫[更多]的模块测试页面。
目前模块测试被用于:
模块子页面:
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