Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

lua-middleclass-abc

Build StatusCoverage Status

Lua abstract base class implementation for middleclass

Overview

lua-middleclass-abc is just an middleclass class. To mark methods as abstract it must return self.abstractmethod

Method :set_abstract_methods(cls) set all abstract methods in abstract base class. You must mark one or more methods like abstract

Metod :check_abstract_methods(cls) check all methods of subclass. If some abstract methods not implemented ABC raise "Can't instantiate abstract class" error

Simple example

localclass=require"middleclass"localABC=require"abc"-- Defines an abstract base classlocalAbstractClass=class("AbstractClass", ABC)
functionAbstractClass:initialize()
ABC.initialize(self)
self:set_abstract_methods(AbstractClass)
endfunctionAbstractClass:first_method()
returnself.abstractmethodendfunctionAbstractClass:second_method()
returnself.abstractmethodend-- Define class inheriting from our abstract classlocalCorrectConcreteClass=class("CorrectConcreteClass", AbstractClass)
functionCorrectConcreteClass:initialize()
AbstractClass.initialize(self)
self:check_abstract_methods(CorrectConcreteClass)
endfunctionCorrectConcreteClass:first_method()
print("I'm correct first method!")
endfunctionCorrectConcreteClass:second_method()
print("I'm correct second method!")
end-- Define class inheriting from our abstract class without all methods implementationlocalIncorrectConcreteClass=class("IncorrectConcreteClass", AbstractClass)
functionIncorrectConcreteClass:initialize()
-- call superclass constructorAbstractClass.initialize(self)
-- check that all abstract methods is overriddenself:check_abstract_methods(IncorrectConcreteClass)
endfunctionIncorrectConcreteClass:first_method()
print("I'm correct first method!")
end-- Execution:localc=CorrectConcreteClass()
c:first_method()
c:second_method()
-- Returns:-- I'm correct first method of instance of class CorrectConcreteClass!-- I'm correct second method of instance of class CorrectConcreteClass!localic=IncorrectConcreteClass()
-- Raise error:-- Can't instantiate abstract class IncorrectConcreteClass with abstract methods [ second_method,]

Tests

lua-middleclass-abc uses busted for testing

About

Lua abstract base class implementation for middleclass

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages