Giter VIP home page Giter VIP logo

lua-class-system's Introduction

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

lua-class-system's People

Contributors

gajop avatar yonaba avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.