yazi/yazi-plugin/preset/state.lua

26 lines
685 B
Lua

local cache = {}
local sub_mt = {
__index = function(target, k)
local bucket = rawget(target, "__yazi_bucket")
return cache[bucket] and cache[bucket][k]
end,
__newindex = function(target, k, v)
local bucket = rawget(target, "__yazi_bucket")
cache[bucket] = cache[bucket] or {}
cache[bucket][k] = v
end,
}
state = setmetatable({}, {
__index = function(_, k)
local bucket = YAZI_PLUGIN_NAME
return cache[bucket] and cache[bucket][k]
end,
__newindex = function(_, k, v)
local bucket = YAZI_PLUGIN_NAME
cache[bucket] = cache[bucket] or {}
cache[bucket][k] = v
end,
__call = function() return setmetatable({ __yazi_bucket = YAZI_PLUGIN_NAME }, sub_mt) end,
})