diff options
Diffstat (limited to 'class.lua')
-rw-r--r-- | class.lua | 31 |
1 files changed, 31 insertions, 0 deletions
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}) + + |