Toggle menu
9
204
48
18.7K
KenshiDB
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Subpages:

Main

This main function of this module checks all positional parameters to see if any of them is equal to the parameter |value=. If so, it will output "yes", otherwise "no".

If the plural |values= is used, then one or more alternative values may be specified.

Examples

  • {{#invoke:If any equal|main|a|b|c|d|value=c}} gives yes
  • {{#invoke:If any equal|main|a|b|c|d|value=r}} gives no
  • {{#invoke:If any equal|main|a|b|c|d|value=}} gives no
  • {{#invoke:If any equal|main|a|b|c|d|values=r, b}} gives yes

IfAnyEqual

The IfAnyEqual function works in a similar way, but instead takes the names of the parameters and checks these arguments of the parent frame.

Example

For example, if you have the following code on {{Template:Template link}}

{{#invoke:If any equal|IfAnyEqual|param1|param2|values=a, b, c}}

Then calling {{Template:Template link}} will give the following results:

Using a prefix

If a prefix is specified with |prefix= then the module will check any parameter that consists of that prefix and possibly a number afterwards.

Example

For example, if you have the following code on {{Template:Template link}}

{{#invoke:If any equal|IfAnyEqual|prefix=param|values=a, b, c}}

Then calling {{Template:Template link}} will give the following results:



require('strict')
local p = {}

p.main = function(frame)
	local check_value = function(value)
		for n, v in pairs(frame.args) do
			if type(n)=='number' and v:lower()==value:lower() then
				return true
			end
		end
	end
	local match = false
	if frame.args.value and frame.args.value~='' then
		match = check_value(frame.args.value)
	elseif frame.args.values and frame.args.values~='' then
		for value in mw.text.gsplit(frame.args.values, "%s*,%s*") do
			if check_value(value) then
				match = true
				break
			end
		end
	end
	return match and 'yes' or 'no'
end

p.IfAnyEqual = function(frame)
	local parent = frame:getParent()
	if not parent.args then
		return nil
	end
	local prefix = frame.args.prefix~='' and frame.args.prefix or nil
	local check_value = function(value)
		if prefix then -- check parameters which have a matching prefix
			for name, v in pairs(parent.args) do
				if type(name)=='string' and name:find('^' .. prefix .. '%d*$') and v:lower()==value:lower() then
					return name
				end
			end
		else
			for pos, name in pairs(frame.args) do
				if type(pos)=='number' and parent.args[name] and parent.args[name]:lower()==value:lower() then
					return name
				end
			end
		end
	end
	local match = false
	if frame.args.value and frame.args.value~='' then
		match = check_value(frame.args.value)
	elseif frame.args.values and frame.args.values~='' then
		for value in mw.text.gsplit(frame.args.values, "%s*,%s*") do
			local check = check_value(value)
			if check then
				match = check
				break
			end
		end
	end
	return match and 'yes' or 'no'
end

return p