Module:If any equal
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