@leansdk/leanrc
Version:
LeanRC is a MVC framework for creating graceful applications
58 lines (44 loc) • 1.49 kB
text/coffeescript
EventEmitter = require 'events'
module.exports = (Module) ->
{
EventEmitterT, PointerT
FuncG, SampleG, MaybeG
CoreObject
} = Module.NS
class ConsoleComponent extends CoreObject
Module
ANIMATE_ROBOT_EVENT: String,
default: 'animateRobotEvent'
ipoEventEmitter = PointerT eventEmitter: EventEmitterT
ipoInstance = PointerT instance: MaybeG(SampleG ConsoleComponent)
getInstance: FuncG([], SampleG ConsoleComponent),
default: ->
unless @[ipoInstance]?
@[ipoInstance] =
@[ipoInstance]
writeMessages: Function,
default: (messages...) ->
# Commented out to prevent terminal pollution
# console.log messages...
return
startAnimateRobot: Function,
default: ->
@[ipoEventEmitter].emit ConsoleComponent.ANIMATE_ROBOT_EVENT
return
subscribeEvent: Function,
default: (eventName, callback) ->
@[ipoEventEmitter].on eventName, callback
return
unsubscribeEvent: Function,
default: (eventName, callback) ->
if callback?
@[ipoEventEmitter].removeListener eventName, callback
else
@[ipoEventEmitter].removeAllListeners eventName
return
constructor: (args...) ->
super args...
@[ipoEventEmitter] = new EventEmitter
return