potatOS/src/lib/meta.lua

28 lines
509 B
Lua

local function new()
local x = { level = 1, new = new }
local m = {}
setmetatable(x, m)
m.__eq = function(p1,p2)
if getmetatable(p1) == getmetatable(p2) then
return true
end
end
m.__index = function(inst, key)
local lvl = rawget(inst, "level")
if key == "level" then
return lvl
else
return setmetatable({ level = lvl + 1 }, m)
end
end
m.__tostring = function(inst)
return ("RECURSION "):rep(rawget(inst, "level"))
end
return x
end
return new()