Emissor de eventos com mesmas funcionalidades do Emitter do Node.js escrito em Ruby.
Exemplo de uso:
Esse sistema pode ser usado em um módulo para gerenciar conexões de forma assíncrona, trabalhando para executar ações dependentes. Em sistemas para GUI com a mesma aplicação.
- Código:
#==============================================================================
# ** Emitter
#------------------------------------------------------------------------------
# Autor Paulo Soreto
# Versão 1.1
#------------------------------------------------------------------------------
# Classe responsável por gerenciar e emitir eventos.
#==============================================================================
class Emitter
#--------------------------------------------------------------------------
# * Inicialização
#--------------------------------------------------------------------------
def initialize
@events = {}
end
#--------------------------------------------------------------------------
# * Adiciona um evento
#--------------------------------------------------------------------------
def on(event, &callback)
@events[event] ||= []
@events[event].push(callback)
end
#--------------------------------------------------------------------------
# * Emite um evento
#--------------------------------------------------------------------------
def emit(event, *args)
return if @events[event].nil?
@events[event].each { |e| e.call(*args) }
end
end
Exemplo de uso:
- Código:
e = Emitter.new
e.on(:nome) { |nome, sobrenome| print("Olá #{nome} #{sobrenome}!") }
e.emit(:nome, 'Paulo', 'Soreto')
Esse sistema pode ser usado em um módulo para gerenciar conexões de forma assíncrona, trabalhando para executar ações dependentes. Em sistemas para GUI com a mesma aplicação.