编辑“
Module:ParameterCount
”
跳转到导航
跳转到搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
-- This module produces a count of all the arguments passed to it. local yesno = require('Module:Yesno') -- Trim a string local function trim(s) return s:match('^%s*(.-)%s*$') end -- Test whether a string is blank local function isBlank(s) return not s:find('%S') end -- Tests whether a string is a valid positional key, and if so, returns it. If -- the key is invalid, this returns nil. local function isPositionalKey(s) s = trim(s) if s:find('^[1-9][0-9]*$') then return tonumber(s) end end -- Return the count of all arguments for which testFunc returns a truthy value. local function count(args, testFunc) local ret = 0 for key, val in pairs(args) do if testFunc(key, val) then ret = ret + 1 end end return ret end -- Check shared arguments and get the parent argument count. local function main(frame, testFunc) local blankifiedTestFunc if yesno(frame.args.checkblanks) ~= false then -- Extend the test function to check for blanks as well. blankifiedTestFunc = function (key, val) if not isBlank(val) then return testFunc(key, val) end end else blankifiedTestFunc = testFunc end return count(frame:getParent().args, blankifiedTestFunc) end return { -- Called with {{#invoke:ParameterCount|all}} -- All specified parameters are counted, even those not supported by the -- template. all = function (frame) return main(frame, function () return true end) end, -- Called with {{#invoke:ParameterCount|main}} -- Users can specify a list of parameters to check, and a list of Lua -- Ustring patterns to check each parameter against. main = function (frame) local args = frame.args local keys, patterns = {}, {} -- Get key list for i, key in ipairs(args) do local positionalKey = isPositionalKey(key) if positionalKey then keys[positionalKey] = true else keys[trim(key)] = true end end -- Get patterns do local function getPattern(i) local pattern = args['pattern' .. tostring(i)] if pattern and pattern ~= '' then return pattern end end local i = 1 local pattern = getPattern(i) while pattern do patterns[i] = pattern i = i + 1 pattern = getPattern(i) end end -- Construct the test function local testFunc = function (key, val) if keys[key] then return true end for i, pattern in ipairs(patterns) do if mw.ustring.find(tostring(key), pattern) then return true end end return false end return main(frame, testFunc) end }
摘要:
请注意,您对Positive WiKi的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Positive WiKi:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
Module:ParameterCount/doc
(
编辑
)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
编辑源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息