• Stars
    star
    799
  • Rank 57,011 (Top 2 %)
  • Language
    Lua
  • License
    MIT License
  • Created over 10 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tiny class module for Lua

Classic

A tiny class module for Lua. Attempts to stay simple and provide decent performance by avoiding unnecessary over-abstraction.

Usage

The module should be dropped in to an existing project and required by it:

Object = require "classic"

The module returns the object base class which can be extended to create any additional classes.

Creating a new class

Point = Object:extend()

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end

Creating a new object

local p = Point(10, 20)

Extending an existing class

Rect = Point:extend()

function Rect:new(x, y, width, height)
  Rect.super.new(self, x, y)
  self.width = width or 0
  self.height = height or 0
end

Checking an object's type

local p = Point(10, 20)
print(p:is(Object)) -- true
print(p:is(Point)) -- true
print(p:is(Rect)) -- false 

Using mixins

PairPrinter = Object:extend()

function PairPrinter:printPairs()
  for k, v in pairs(self) do
    print(k, v)
  end
end


Point = Object:extend()
Point:implement(PairPrinter)

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end


local p = Point()
p:printPairs()

Using static variables

Point = Object:extend()
Point.scale = 2

function Point:new(x, y)
  self.x = x or 0
  self.y = y or 0
end

function Point:getScaled()
  return self.x * Point.scale, self.y * Point.scale
end

Creating a metamethod

function Point:__tostring()
  return self.x .. ", " .. self.y
end

License

This module is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.

More Repositories

1

lite

A lightweight text editor written in Lua
Lua
7,287
star
2

microui

A tiny immediate-mode UI library
C
3,124
star
3

log.c

A simple logging library implemented in C99
C
2,472
star
4

json.lua

A lightweight JSON library for Lua
Lua
1,734
star
5

dyad

Asynchronous networking for C
C
1,437
star
6

fe

A tiny, embeddable language implemented in ANSI C
C
1,277
star
7

lume

Lua functions geared towards gamedev
Lua
945
star
8

lovedos

A framework for making 2D DOS games in Lua
C
666
star
9

map

A type-safe hash map implementation for C
C
558
star
10

vec

A type-safe dynamic array implementation for C
C
436
star
11

microtar

A lightweight tar library written in ANSI C
C
423
star
12

flux

A fast, lightweight tweening library for Lua
Lua
366
star
13

lite-plugins

Plugins for the lite text editor
Lua
346
star
14

ini

A tiny ANSI C library for loading .ini config files
C
315
star
15

log.lua

A tiny logging module for Lua
Lua
296
star
16

lovebird

A browser-based debug console for LÖVE
Lua
286
star
17

lurker

Auto-swaps changed Lua files in a running LÖVE project
Lua
268
star
18

kit

A tiny library for making small games with big pixels
C
240
star
19

aq

A lightweight framework for creating audio toys
C
236
star
20

uuid4

A tiny C library for generating uuid4 strings
C
214
star
21

sfd

A small C library for opening a file dialog
C
171
star
22

sandbird

A tiny embeddable HTTP server written in C89
C
169
star
23

cmixer

Portable ANSI C audio mixer for games
C
168
star
24

aria

A tiny, embeddable lisp-shaped language implemented in C89
C
166
star
25

juno

Framework for making 2D games with chunky pixels in Lua
C
160
star
26

tick

Lua module for delaying function calls
Lua
123
star
27

dmt

Dynamic memory tracker for C
C
105
star
28

autobatch

Small LÖVE module to automate the use of SpriteBatches
Lua
103
star
29

lite-colors

Colors themes for the lite text editor
Lua
99
star
30

cembed

A small utility for embedding files in a C header
C
93
star
31

doq

A small tool for creating single-file html documents
C
82
star
32

lovebpm

A LÖVE library for syncing events to the BPM of an audio track
Lua
76
star
33

coil

A tiny cooperative threading module for Lua
Lua
71
star
34

shash

A simple, lightweight spatial hash for Lua
Lua
66
star
35

console

A console plugin for the lite text editor
Lua
58
star
36

atlas

A small utility for generating a texture atlas
C
41
star
37

gifwriter

A Nim library for writing animated GIFs
C
18
star
38

rxi.github.io

HTML
17
star
39

cmixer_sdl2-nim

Tiny Nim library for using cmixer with sdl2
Nim
3
star
40

cmixer-nim

Nim wrapper for cmixer, A lightweight audio mixer for games
C
3
star
41

crate

2
star