parametercount

Documentation for this module may be created at Module:ParameterCount/doc

-- 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 } 

Tags:

🔥 Trending searches on Wiki Fiji Hindi:

Frida KahloComorosKarelaBacteria1972European Union27 AugustBangkokInternetChristopher Columbus1937BerlinBelautiBichardhara194528 March1982Saudi ArabiaMuhammad Ali JinnahEuroUnuntrium1953Sanskriti1881Haroon Ali Shah1910OmanPusi1899UNESCOGangaHarmandir SahibFranklin D. RooseveltVladimir Lenin1992GaneshMolybdenumUnited Arab EmiratesSaint Kitts and Nevis2013Bharatiya Janata PartyGod1863ChatGPTDjibouti (city)1869LuxembourgAlan TuringSwahili bhasaLatinRaangaParaguayIranMarie CurieNew Zealand1891Jawaharlal NehruHong Kong1876Pottery21 February184019037 NovemberTara ke samundar29 JulyNepalBosnian bhasaArizonaUNIXJasprit Bumrah🡆 More