diff --git a/Scripts/32log.lua b/Scripts/32log.lua index 340bc39df1..d338eda723 100644 --- a/Scripts/32log.lua +++ b/Scripts/32log.lua @@ -3,19 +3,29 @@ -- Links to original source of code and usage documentation: -- http://love2d.org/wiki/32_lines_of_goodness -- http://love2d.org/forums/viewtopic.php?f=5&t=3344 +-- Patches by Robin and FSX (which bring it to 41 lines) --]] -local mt_class = {} +local mt_class = {__index = mt_class, __call = define} function mt_class:extends(parent) self.super = parent - setmetatable(mt_class, {__index = parent}) + setmetatable(self, {__index = parent, __call=define}) parent.__members__ = parent.__members__ or {} return self end local function define(class, members) - class.__members__ = class.__members__ or {} + class.__members__ = {} + local function copyMembersDown(origin,cls) + if cls.super then + for k,v in pairs(cls.super.__members__) do + origin[k] = v + end + return copyMembersDown(origin, cls.super) + end + end + copyMembersDown(class.__members__,class) for k, v in pairs(members) do class.__members__[k] = v end @@ -35,5 +45,5 @@ end function class(name) local newclass = {} _G[name] = newclass - return setmetatable(newclass, {__index = mt_class, __call = define}) -end + return setmetatable(newclass, mt_class) +end \ No newline at end of file