Home > middleclass-extras

middleclass-extras

Middleclass-extras is a project mainly written in Lua, based on the BSD-3-Clause license.

A set of middleclass add-ons that make it easier to use in some cases

h1. middleclass-extras

This is a set of additions to "middleclass":http://www.github.org/kikito/middleclass.

h1. Warning:

middleclass-extras was made for middleclass 1.x and it's not under development any more.

middleclass 2.x has some features that make it incompatible with middleclass-extras.

middleclass-extras is being (slowly) re-done as a series of smaller libs. Right now, the only one completely finished is Stateful:

  • "stateful.lua":http://github.com/kikito/stateful.lua

Other libraries might follow, but it might just take time. Sorry about that.

h1. Module brief description

What follows is a brief description of each of the middleclass-extras modules. Each nodule is commented out with usage examples. You can find more examples on the /spec/ folder.

  • Apply allows invoking a method in all the instances of a class (and its subclasses). It also allows sorting before executing.
  • Beholder is a small signaling/event controller mixin. Your classes can 'observe' and 'stop observing' events. Note that Invoker must be required before Beholder, or the later will not work.
  • Branchy defines some useful methods for classes that behave like trees (@addChild@, @getAncestors@, etc)
  • Callbacks is a powerful mixin that allows you to add 'hooks' to any existing method. For example, you can specify on runtime that you want to call a method after initializing one object.
  • GetterSetter just adds a couple convenience getXXX, setXXX methods to your class.
  • Indexable allows classes to have a 'fallback' method, similar to lua's @index@ metamethod. Since @index@ is reserved, the method used for lookup will be @index@, whithout underscores.
  • Invoker is a very small mixin that can be used to 'send' methods to instances. It's main advantage is that it accepts both method names and lua functions on its parameters.
  • Stateful defines stateful objects. Classes receive a new method called @addState@, and instances receive a new method called @gotoState@. The behaviour of each of the instance methods can be redefined per-state.

h1. Downloading

The recommended way is using "git":http://git-scm.com/.

In order to use middleclass-extras, you also need middleclass. You can download them both by doing:

cd your/project/path
git clone git://github.com/kikito/middleclass.git
git clone git://github.com/kikito/middleclass-extras.git

Alternatively, you can manually download them:

  • "middleclass download":https://github.com/kikito/middleclass/raw/master/middleclass.lua
  • "middleclass-extras download":https://github.com/kikito/middleclass/raw/master/middleclass-extras.lua

h1. Usage

middleclass-extras is prepared to be required right after middleclass:

  require('middleclass.init')
  require('middleclass-extras.init')

Notes:

  • You can remove the .init part from middleclass if you are using middleclass as a file (middleclass.lua) instead of as a dir (middleclass/)
  • You can remove the .init part on both requires if your package.path setting already includes @?/init.lua@

h1. Specs

You may find the specs for this library in "middleclass-specs":https://github.com/kikito/middleclass-specs