class.lua 467 B

1234567891011121314151617181920212223242526
  1. -- Copyright (c) 2012-2025 Daniele Bartolini et al.
  2. -- SPDX-License-Identifier: MIT
  3. function class(klass, super)
  4. if not klass then
  5. klass = {}
  6. local meta = {}
  7. meta.__call = function(self, ...)
  8. local object = {}
  9. setmetatable(object, klass)
  10. if object.init then object:init(...) end
  11. return object
  12. end
  13. setmetatable(klass, meta)
  14. end
  15. if super then
  16. for k,v in pairs(super) do
  17. klass[k] = v
  18. end
  19. end
  20. klass.__index = klass
  21. return klass
  22. end