Initial commit

This commit is contained in:
2024-10-02 14:54:32 +02:00
commit 14af275c5c
27 changed files with 1871 additions and 0 deletions

23
lua/cave/enum.lua Normal file
View File

@@ -0,0 +1,23 @@
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