From f1492b52414b6f2ad6cfff45375c08677feab18c Mon Sep 17 00:00:00 2001 From: ubq323 Date: Mon, 17 Feb 2025 14:48:34 +0000 Subject: initial --- class.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 class.lua (limited to 'class.lua') diff --git a/class.lua b/class.lua new file mode 100644 index 0000000..8fb84b0 --- /dev/null +++ b/class.lua @@ -0,0 +1,31 @@ +-- currently a class is a table T with T.__index = T +-- then to make an instance of this class, we do +-- setmetatable(instance,T) +-- this should be fine for anything we wish to do. +-- it is possible we will eventually split this into two separate +-- tables perhaps? i don't see why we would ever do that though + +local function class() + local T = {} + T.__index = T + return T +end + +local function extend(Base) + local T = {} + T.__index = T + for k,v in pairs(Base) do + if k:sub(1,2) == "__" and k~="__index" then + T[k]=v + end + end + setmetatable(T,{__index=Base}) + return T +end + +return setmetatable({ + class=class, + extend=extend +},{__call=class}) + + -- cgit v1.2.3