Object-orientation for Lua
Go to file
2010-10-22 19:22:13 +02:00
specs use source instead of short_src, since the last one is for display purposes only 2010-10-22 19:22:13 +02:00
BSD-LICENSE.txt added BSD license 2010-10-10 23:43:30 +02:00
MiddleClass.lua removed __eq from the list of inherited metamethods. Bad things happen if we can not compare pointers freely... 2010-10-20 01:24:09 +02:00
README.textile updated README 2010-04-22 00:09:24 +02:00

h1. MiddleClass

Lua OOP classes usually end being:
* multi-file libraries, too difficult to understand
* very small libraries, not very powerful

Middleclass attemps to be a mid-sized library (100 lines of code, on a single file), with clean, easy to understand code, and yet powerful enough to be used in most cases.

h1. Documentation

See the "LÖVE wiki page":http://love2d.org/wiki/MiddleClass for examples & documentation.

h1. Features
  * ~100 lines of code
  * top-level Object class
  * all methods are virtual
  * instance.class returns the instance's class
  * Class.name returns the class name (a string)
  * Class.superclass returns its super class
  * Class:subclass(name) creates a new subclass - Class will be its superclass
  * class(name) creates a new class (Object will be the superclass)
  * class(name, Superclass) creates a new class.
  * instanceOf(class, instance) returns true or false
  * subclassOf(Superclass, Class) returns true if Class is a subclass of SuperClass
  * new() and init() methods
  * super.method() facility, similar to java's
  * support for Lua events (except for __index - that one is reserved for now)
  * basic mixins support (copying methods)
  * getter/setter construction facilities
  * Stateful object construction via the [http://love2d.org/wiki/index.php?title=MindState Mindsate] module.

Features left out:
  * metaclasses
  * classes are not Objects (instances are)