Binding of Isaac: Rebirth Wiki
No edit summary
m (Remove deprecated functions)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
local p = {}
 
local p = {}
   
  +
function p.getParametersCount( f )
 
local args = p.trimAll( p.getArgs( f ) )
+
function p.contains( t, e, c )
 
if c then
local parametersCount = 0
 
 
for _, v in pairs( t ) do
if args.numerical then
 
local i = 1
+
if v[c] == e[c] then
 
return true
while args[i] ~= nil do
 
parametersCount = parametersCount + 1
 
if i > 20 then
 
return "'''''Error'''''"
 
 
end
 
end
 
end
 
end
 
else
 
else
for i, j in pairs( args ) do
+
for _, v in pairs( t ) do
 
if v == e then
parametersCount = parametersCount + 1
 
 
return true
 
end
 
end
 
end
 
end
 
end
return parametersCount
+
return false
 
end
 
end
   
   
 
-- Do string.gsub to all values in a table
function p.search( f )
 
  +
function p.gsub( t, pattern, repl )
local args = p.trimAll( p.getArgs( f ) )
 
 
local result = {}
if args.index then
 
for i, j in pairs( args ) do
+
for k, v in pairs( t ) do
if args.object == j then
+
if type( v ) == 'string' then
  +
result[k] = string.gsub( v, pattern, repl )
return i
 
end
+
else
 
result[k] = v
 
end
 
end
else
 
local k = 1
 
repeat
 
if args.object == args[k] then
 
return k
 
end
 
k = k + 1
 
until not args[k]
 
 
end
 
end
return nil
+
return result
 
end
 
end
   
   
  +
-- Do string.gsub to all indexes in a table
-- Get parameters of the template and the article from the frame (usually f)
 
function p.getArgs( f )
+
function p.igsub( t, pattern, repl )
local args = {}
+
local result = {}
 
for k, v in pairs( t ) do
if f.args then
 
  +
result[string.gsub( k, pattern, repl )] = v
-- Add template parameters
 
 
end
for i, j in pairs( f.args ) do
 
  +
return result
args[i] = j
 
 
end
  +
  +
  +
function p.key( t, e )
 
for k, v in pairs( t ) do
 
if v == e then
  +
return k
 
end
 
end
 
end
-- Add transclusion parameters (parent), overwrite template parameters
 
  +
return 0
for k, l in pairs( f:getParent().args ) do
 
  +
end
args[k] = l
 
  +
  +
 
function p.map( t, f )
 
local result = {}
  +
for k, v in pairs( t ) do
  +
result[k] = f( v )
  +
end
  +
return result
  +
end
  +
  +
 
function p.merge( ... )
  +
local result = {}
  +
for _, table in ipairs( arg ) do
  +
for k, v in pairs( table ) do
 
result[k] = v
 
end
 
end
else
 
args = f
 
 
end
 
end
return args
+
return result
 
end
 
end
   
   
 
function p.trim( t, toRemove, keepEmptyParams )
-- Do mw.text.trim to all values in a table
 
  +
local result = {}
function p.trimAll( f, toRemove, keepEmptyParams )
 
  +
for k, v in pairs( t ) do
local g = {}
 
 
if type( v ) == 'string' then
for index, object in pairs( f ) do
 
  +
result[k] = mw.text.trim( v ) ~= '' and ( toRemove and mw.text.trim( v, toRemove ) or mw.text.trim( v ) ) or keepEmptyParams and ''
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
 
else
  +
result[k] = v
-- Do nothing if the content is not a string
 
g[index] = object
 
 
end
 
end
 
end
 
end
return g
+
return result
 
end
 
end
  +
  +
  +
function p.unique( t, c )
  +
local result = {}
  +
for _, v in ipairs( t ) do
  +
if not p.contains( result, v, c ) then
  +
result[#result + 1] = v
  +
end
  +
end
  +
return result
  +
end
  +
   
 
return p
 
return p

Latest revision as of 21:00, 19 March 2021


local p = {}


function p.contains( t, e, c )
	if c then
		for _, v in pairs( t ) do
			if v[c] == e[c] then
				return true
			end
		end
	else
		for _, v in pairs( t ) do
			if v == e then
				return true
			end
		end
	end
	return false
end


-- Do string.gsub to all values in a table
function p.gsub( t, pattern, repl )
	local result = {}
	for k, v in pairs( t ) do
		if type( v ) == 'string' then
			result[k] = string.gsub( v, pattern, repl )
		else
			result[k] = v
		end
	end
	return result
end


-- Do string.gsub to all indexes in a table
function p.igsub( t, pattern, repl )
	local result = {}
	for k, v in pairs( t ) do
		result[string.gsub( k, pattern, repl )] = v
	end
	return result
end


function p.key( t, e )
	for k, v in pairs( t ) do
		if v == e then
			return k
		end
	end
	return 0
end


function p.map( t, f )
	local result = {}
	for k, v in pairs( t ) do
		result[k] = f( v )
	end
	return result
end


function p.merge( ... )
	local result = {}
	for _, table in ipairs( arg ) do
		for k, v in pairs( table ) do
			result[k] = v
		end
	end
	return result
end


function p.trim( t, toRemove, keepEmptyParams )
	local result = {}
	for k, v in pairs( t ) do
		if type( v ) == 'string' then
			result[k] = mw.text.trim( v ) ~= '' and ( toRemove and mw.text.trim( v, toRemove ) or mw.text.trim( v ) ) or keepEmptyParams and ''
		else
			result[k] = v
		end
	end
	return result
end


function p.unique( t, c )
	local result = {}
	for _, v in ipairs( t ) do
		if not p.contains( result, v, c ) then
			result[#result + 1] = v
		end
	end
	return result
end


return p