lang-bootstrap/06/deps/parser-gen/equals.lua
Dawid Sobczak 858fe11666 Fixed some diagnostics warnings
Moved examples to tofix because fixing them is besides the point right
now.
2023-09-19 11:44:13 +01:00

32 lines
No EOL
841 B
Lua

-- this function compares if two tables are equal
local function equals(o1, o2, ignore_mt)
if o1 == o2 then return true end
local o1Type = type(o1)
local o2Type = type(o2)
if o1Type ~= o2Type then return false end
if o1Type ~= 'table' then return false end
if not ignore_mt then
local mt1 = getmetatable(o1)
if mt1 and mt1.__eq then
--compare using built in method
return o1 == o2
end
end
local keySet = {}
for key1, value1 in pairs(o1) do
local value2 = o2[key1]
if value2 == nil or equals(value1, value2, ignore_mt) == false then
return false
end
keySet[key1] = true
end
for key2, _ in pairs(o2) do
if not keySet[key2] then return false end
end
return true
end
return {equals=equals}