You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Class Commons is a project to provide a common compatibility interface for class systems. The goal of this is to make libraries independent of class libraries, a library using the Class Commons API can then be used with any class system adhering to it (albeit via a compatibility layer).
Specification
Features
Single-class inheritance
Constructors
Instance methods
Polymorphism
Class definition is single-write read-only, so the entire class has to be defined on creation.
Functions
class = common.class(name, table, parents...)
instance = common.instance(class, ...)
Class constructors
Constructors are defined by the special init function:
foo = {}
function foo:init()
self.bar = "baz"
end
foo = common.class("foo", foo)
Derived classes may access the super class constructors by using <super>.init, but
ONLY if the parent was created using common.class:
local Tree = {}
function Tree:grow()
print("Is a big tree now!")
end
function Tree:chop()
print("Chopped down a tree.")
end
local Ent = {}
function Ent:chop()
print("I am no tree, I am an ent!")
end
Tree = common.class("Tree", Tree)
Ent = common.class("Ent", Ent, Tree)
local tree = common.instance(Ent)
tree:grow() --> Is a big tree now!
tree:chop() --> I am no tree, I am an ent!
This repository will both contain documentation (like this very document) and tests. (Note: located in a subrepository.)
The authors of participating libraries all get write access, and are free, and encouraged, to collaborate.
About
An attempt at unifying lua class libraries to provide a common API.