Sha256: 48a4bd558a7a0f416cca5a8938fa5501f3513a811e391aa182b01aeeeb758c60

Contents?: true

Size: 542 Bytes

Versions: 1

Compression:

Stored size: 542 Bytes

Contents

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, *args)
      return super unless method == @event_method
      @context.instance_exec(*args, &@block)
    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

1 entries across 1 versions & 1 rubygems

Version Path
signal-0.1.0 lib/signal/listener.rb