Middleclass attemps to be a mid-sized library (~130 lines of code, on a single file), with clean, easy to understand code, and yet powerful enough to be used in most cases.
* support for Lua metamethods: just define a method called @__tostring@, @__add@, etc. and your instances will be able to use it.
* Mixins:
** A very simple mechanism for sharing functionality among a group of classes that are otherwise non-related.
** Mixins are just simple lua tables with functions inside them.
** @Class:include(mixin)@ will copy the function definitions of @mixin@ to @class@
** If @mixin@ contains a function, called @included@, that function will be invoked right after the functions have been copied. It allows for modifying the class more profoundly.
* The function @instanceOf(class, instance)@ returns @true@ if @instance@ is an instance of the class @Class@
* The function @subclassOf(Superclass, Class)@ returns @true@ if @Class@ is a subclass of @SuperClass@
* The function @includes(mixin, Class)@ returns @true@ if @Class@ (or one of its superclasses) includes @mixin@.
Make sure that you read the license, too. In order to comply with it you will have to include its full text inside your program's documentation, or else make it visible in the app's credits.
This project uses "telescope":https://github.com/norman/telescope for its specs. If you want to run the specs, you will have to install telescope first. Then just execute the following from the root inspect folder: