@leansdk/leanrc
Version:
LeanRC is a MVC framework for creating graceful applications
64 lines (49 loc) • 1.71 kB
text/coffeescript
EventEmitter = require 'events'
module.exports = (Module) ->
{
EventEmitterT, PointerT
FuncG, SampleG, MaybeG
CoreObject
} = Module.NS
class ConsoleComponent extends CoreObject
Module
MESSAGE_WRITTEN: 'messageWritten'
SEND_REQUEST_EVENT: 'sendRequestEvent'
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...
@[ipoEventEmitter].emit ConsoleComponent::MESSAGE_WRITTEN
return
sendRequest: Function,
default: ->
@[ipoEventEmitter].emit ConsoleComponent::SEND_REQUEST_EVENT
return
subscribeEvent: Function,
default: (eventName, callback) ->
@[ipoEventEmitter].on eventName, callback
return
subscribeEventOnce: Function,
default: (eventName, callback) ->
@[ipoEventEmitter].once 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