Binding of Isaac: Rebirth Wiki
Advertisement

local p = {}

function p.getParametersCount( f )
	local args = p.trimAll( p.getArgs( f ) )
	local parametersCount = 0
	if args.numerical then
		local i = 1
		while args[i] ~= nil do
			parametersCount = parametersCount + 1
		end
	else
		for i, j in pairs( args ) do
			parametersCount = parametersCount + 1
		end
	end
	return parametersCount
end


function p.search( f )
	local args = p.trimAll( p.getArgs( f ) )
	if args.index then
		for i, j in pairs( args ) do
			if args.object == j then
				return i
			end
		end
	else
		local k = 1
		repeat
			if args.object == args[k] then
				return k
			end
			k = k + 1
		until not args[k]
	end
	return nil
end


-- Get parameters of the template and the article from the frame (usually f)
function p.getArgs( f )
	local args = {}
	if f.args then
		-- Add template parameters
		for i, j in pairs( f.args ) do
			args[i] = j
		end
		-- Add transclusion parameters (parent), overwrite template parameters
		for k, l in pairs( f:getParent().args ) do
			args[k] = l
		end
	else
		args = f
	end
	return args
end


-- Do mw.text.trim to all values in a table
function p.trimAll( f, toRemove, keepEmptyParams )
	local g = {}
	for index, object in pairs( f ) do
		if type( object ) == 'string' then
			-- Trim
			if object ~= nil and mw.text.trim( object ) ~= '' then
				if toRemove then
					g[index] = mw.text.trim( object, toRemove )
				else
					g[index] = mw.text.trim( object )
				end
			end
			-- Remove empty values ?
			if mw.text.trim( object ) == '' and not keepEmptyParams then
				g[index] = nil
			end
		else
			-- Do nothing if the content is not a string
			g[index] = object
		end
	end
	return g
end

return p
Advertisement