Sha256: db52496f1bfd64e80c089163ea3372be08fee0e169e4759675fce6717a2a268b

Contents?: true

Size: 497 Bytes

Versions: 1

Compression:

Stored size: 497 Bytes

Contents

require 'wisper_next'

module Ma
  class Subscriber < Module

    def initialize(*args)
      @options = WisperNext::CastToOptions.(args)
    end

    def included(base)
      base.extend(ClassMethods)
      base.include(WisperNext.subscriber(@options.slice(:async)))
      super
    end

    module ClassMethods
      def on(event_class, &block)
        define_method event_class.name do |payload|
          instance_exec(event_class.new(payload), &block)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ma-0.1.0 lib/ma/subscriber.rb