Emitter

    Compartilhe
    avatar
    Paulo S.
    Lenda
    Lenda

    Mensagens : 1902
    Créditos : 346

    Emitter

    Mensagem por Paulo S. em Dom Out 09, 2016 4:17 pm

    Emissor de eventos com mesmas funcionalidades do Emitter do Node.js escrito em Ruby.

    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.


    _________________
    avatar
    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 1004
    Créditos : 122

    Re: Emitter

    Mensagem por Komuro Takashi em Seg Out 10, 2016 8:04 am

    Obrigado pela contribuição. +1


    _________________

      Data/hora atual: Ter Jun 27, 2017 10:59 am