Core - develephant/luvit-docs GitHub Wiki

Load the Core library:

local core = require('core')

Or as direct classes

local Emitter = require('core').Emitter

local Object = require('core').Object

local Error = require('core').Error

.instanceof(object, Class)

Returns whether object is an instance of Class or not.

local object = core.Object:new()
local emitter = core.Emitter:new()

--== object is an Object
assert(core.instanceof(object, Object))
--== object is NOT an Emitter
assert(not core.instanceof(object, Emitter))

.Error( err_message )

Creates structured error message type.

--> Require Error class
local Error = core.Error

--> Create new Error instance
local err = Error:new("This is an error message.")

.Object

The base Object Class. Extend to create new Objects.

--> Extend Object
local MyObject = core.Object:extend()

--> Add 'init' method
function MyObject:initialize( ... )
  self.name = "myobject"
end

--> Add methods
function MyObject:getName()
  return self.name
end

--> Create instance
local myInstance = MyObject:new()

--> Call instance method
p( myInstance:getName() ) -->'myobject'

.Emitter

The Emitter Class. Extend to create new Emitters.

--> Extend Emitter
local MyEmitter = core.Emitter:extend()

--> Add 'init' method
function MyEmitter:initialize( ... )
  self.name = "emitter"
end

--> Add methods
function MyEmitter:getName()
  return self.name
end

--> Create instance
local myInstance = MyEmitter:new()

--> Add listener
myInstance:on("get-name", function()
  p( self:getName() )
end)

--> Add 'run-once' listener
myInstance:once("get-name", function()
  p( self:getName() )
end)

--> Emit message
myInstance:emit("get-name")

--> 'emitter'

Emitter Instance Methods

local myEmitter = require('core').Emitter:extend()

:on(name, callback)

Add a listener, with callback.

myInstance:on('data', function( data ) 
 p( data )
end)

The callback will return the data that was sent with the emit event, if any.


:once(name, callback)

Run an event listener on the emitter one time.

myInstance:once('data', function(data) 
 p( data )
end)
--Will not run again.

callback is required.


:emit(name [, ...])

Emit an event, with optional data.

myInstance:emit('data', {username="Jim"})

:wrap(name)

Binds the named method self[name] for use as a callback.

local Joystick = Emitter:extend()
function Joystick:initialize(device)
  self:wrap("onOpen")
  FS.open(device, self.onOpen)
end
function Joystick:onOpen(fd)
-- and so forth
end

:removeListener(name, callback)

Remove a listener by name.

myInstance:removeListener('data', callback)

callback is required.

:removeAllListeners(name)

Remove all listeners for name event.

myInstance:removeAllListeners('data')

:listeners(name)

Get listeners for name event.

local listeners = myInstance:listeners('data')

:listenerCount(name)

How many listening for name event

local listen_count = myInstance:listenerCount('data')

:missingHandlerType(name, ...)

:scream_cat:

myInstance:missingHandlerType(name, ...)