Sha256: 82f7e3dd7a7b89ce713a486f893bc7ace525c5f89a1d37e1a8023a294f3c10c7

Contents?: true

Size: 576 Bytes

Versions: 3

Compression:

Stored size: 576 Bytes

Contents

# frozen_string_literal: true

module Signal
  class Listener
    def initialize(context, type, event, &block)
      @context = context
      @type = type
      @event = event
      @block = block
      @event_method = :"#{@type}_#{@event}"
    end

    def method_missing(method_name, *args)
      return super unless respond_to_missing?(method_name, false)

      @block.call(*args)
    end

    def to_s
      "<#{self.class} event: #{@event_method}>"
    end

    def respond_to_missing?(method_name, _include_private)
      method_name == @event_method
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
signal-1.3.1 lib/signal/listener.rb
signal-1.3.0 lib/signal/listener.rb
signal-1.2.0 lib/signal/listener.rb