Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:If any equal/sandbox

From Wikipedia, the free encyclopedia
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 (frame.args.yes or 'yes') or (frame.args.no 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 (frame.args.yes or 'yes') or (frame.args.no or 'no')
end

return p