You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
809 B
Lua

--- Helper module for checking if 2 values are equal by value.
-- @module lqc.helpers.deep_equals
-- @alias deep_equals
local pairs = pairs
local type = type
--- Checks 1 value is equal to another. Also works for nested structures.
-- @param a value a
-- @param b value b
-- @return true if objects are equal; otherwise false
local function deep_equals(a, b)
local type_a = type(a)
if type_a ~= type(b) then
return false
end
if type_a ~= 'table' then
return a == b
end
if #a ~= #b then
return false
end
for k, v1 in pairs(a) do
local v2 = b[k]
if type(v1) == 'table' then
return deep_equals(v1, v2)
end
if v1 ~= v2 then
return false
end
end
return true
end
return deep_equals