Sha256: 7c12ebb7f9081553d76f49ed5d22e25ac8e9b39095980e906fbb4098ad5dbb1a

Contents?: true

Size: 813 Bytes

Versions: 4

Compression:

Stored size: 813 Bytes

Contents

require 'micro/observers/version'

module Micro
  module Observers
    require 'micro/observers/utils'
    require 'micro/observers/events_or_actions'
    require 'micro/observers/manager'

    module ClassMethods
      def notify_observers!(with:)
        proc { |object| with.each { |evt_or_act| object.observers.notify(evt_or_act) } }
      end

      def notify_observers(*events)
        notify_observers!(with: EventsOrActions[events])
      end

      def call_observers(options = Utils::EMPTY_HASH)
        notify_observers!(with: EventsOrActions.fetch_actions(options))
      end
    end

    def self.included(base)
      base.extend(ClassMethods)
      base.send(:private_class_method, :notify_observers!)
    end

    def observers
      @observers ||= Observers::Manager.for(self)
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
u-observers-0.8.0 lib/micro/observers.rb
u-observers-0.7.0 lib/micro/observers.rb
u-observers-0.6.0 lib/micro/observers.rb
u-observers-0.5.0 lib/micro/observers.rb