30log, in extenso 30 Lines Of Goodness is a minified framework for object-orientation in Lua.
It provides named and unnamed classes, single inheritance, metamethods and a basic support for mixins. In 30 lines.
Well, somehow.
Current release is 1.3.0. See other releases.
This will clone the repository, as-is, and deliver the cutting edge release. Might be unstable.
git clone git://github.com/Yonaba/30log.git
This will download and install the latest stable release from Luarocks servers.
luarocks install 30log
A full documentation is available on the wiki. Find the project page at yonaba.github.io/30log.
Class-Commons is an interface which provides a common API for a wide range of Object Orientation libraries in Lua. There is a small plugin, originally written by TsT
which provides compatibility between 30log and Class-commons.
See the module 30log-commons.lua.
You can run the included specs with Telescope using the following command from Lua from the root foolder:
lua tsc -f specs/*
30log was initially designed for minimalistic purposes. But then commit after commit, I came up with a source code that was obviously surpassing 30 lines. As I wanted to stick to the "30-lines" rule that defines the name of this library, I had to use an ugly syntax which not much elegant, yet 100 % functional.
For those who might be interested though, the file 30log-clean.lua contains the full source code, properly formatted and well indented for your perusal.
The file 30log-global.lua features the exact same source as the original 30log.lua,
excepts that it sets a global named class
. This is convenient for Lua-based frameworks such as Codea.
The file 30log-singleton.lua is a singleton pattern implementation for use with 30log.
- TsT2005, for the original Class-commons implementation.
- Srdjan Marković for the awesome graphic logo design.
This work is MIT-Licensed.