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
objectis an instance ofClassor 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
nameevent.
myInstance:removeAllListeners('data')
:listeners(name)
Get listeners for
nameevent.
local listeners = myInstance:listeners('data')
:listenerCount(name)
How many listening for
nameevent
local listen_count = myInstance:listenerCount('data')
:missingHandlerType(name, ...)
:scream_cat:
myInstance:missingHandlerType(name, ...)