Lua Class System (LCS) is a small library which offers a clean, minimalistic but powerful API for (Pseudo) Object Oriented programming style using Lua. LCS is light-weight, abstract thus can fit in every project where OOP mechanisms are needed.
Add LCS.lua file inside your project.
Call it using require function.
It will return a table containing a set of functions.
As of v1.2, a light feature have been added.
Any attempt to print or tostring a class/instance will return a custom string,
as shown in the following:
local LCS = require 'LCS'
-- A Cat Class
local Cat = LCS.class({name = 'Animal'})
-- Init
function Cat:init(name)
self.name = name
end
print(Cat) --> "class: <table: 0058C4C0>"
local kitten = Cat('kitty')
print(kitten) --> "object: <table: 0058C628>"
Yet, this behaviour can still be easily overriden if you want to provide your own output. Just attach a method named describe to the class.
local LCS = require 'LCS'
-- A Cat Class
local Cat = LCS.class({name = 'Animal'})
-- Init
function Cat:init(name)
self.name = name
end
print(Cat) --> "class: <table: 0058C4C0>"
local kitten = Cat('kitty')
print(kitten) --> "object: <table: 0058C628>"
-- Now providing a describe method to have our own output
function Cat:describe()
return self.name
end
print(Cat) --> "Animal"
print(kitten) --> "kitty""
Note: describe method can be passed a variable number of arguments.
This work is under zLIB License
Copyright (c) 2012 Roland Yonaba
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.