Files
cave.nvim/lua/cave/enum.lua
2024-10-02 14:58:20 +02:00

24 lines
468 B
Lua

local Meta = require "cave.meta"
local validate = Meta.validate
local Map = Meta.Map
local Str = Meta.String
---@class cave.Enum
local Enum = {}
Enum.__index = Enum
---@param tbl table<string, string>
---@param name string
function Enum.new(tbl, name)
validate {
tbl = { tbl, Map(Str, Str) },
name = { name, Str },
}
for key, value in pairs(tbl) do
assert(key == value)
end
setmetatable(tbl, { __meta = Meta.Enum(tbl, name) })
end
return Enum