Lua Class System (LCS) is a small library which offers a clean, minimalistic but powerful API for (Pseudo) Object Oriented programming style using Lua.
Lua CSS
Switch branches/tags
Nothing to show
Latest commit 7c8b7c8 Jul 22, 2014 @Yonaba Updated LICENSE

README.md

#LCS : Lua Class System# 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.

##Usage## Add LCS.lua file inside your project.
Call it using require function.
It will return a table containing a set of functions.

##Full API Overview##

  • LCS.class(args) : Creates a class
  • LCS.class.final(args) : Creates a final class.
  • LCS.class.abstract(args) : Creates a static class.
  • LCS.is_A(thing,kind) : Checks the nature of the given argument 'thing'.
  • class(args) : Default class constructor used for instantiation.
  • class:new(args) : Same as class(args)__
  • class:extends(args) : Returns a new class derived from class class.
  • class:getClass() : Returns a reference to the superclass of class class
  • class:getSubClasses() : Returns a list of all classes deriving from class class
  • class:super(method,...) : Calls a method defined in a parent of class class
  • instance:getClass() : Returns a reference to the class from which 'instance' was created
  • instance:is_A(aClass) : Checks if instance instance was instantiated from a specific class.
  • instance:super(method,...) : Calls a methods defined in a parent of a class from which object 'instance' was created

##Printing classes and objects 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.

##Documentation##

##License## 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.

Bitdeli Badge