Sha256: 537d9e888b7716b846e158ced0a6141dc6549231f18db59dda907e8f47f88dc6

Contents?: true

Size: 591 Bytes

Versions: 2

Compression:

Stored size: 591 Bytes

Contents

require 'active_support/core_ext/object/blank'

module Slatan
  ## class to Event Dispatching for concerns
  module Ear
    @concerns = []

    class << self
      ## register subscriber
      # @param concern subscriber
      # @param block<option> condition for dispatching event
      def register(concern, &block)
        @concerns << [concern, block]
      end

      ## publish to subscribers
      def hear(msg)
        @concerns.each do |concern, block|
          if block.blank? || block.call(msg)
            concern.hear(msg)
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
slatan-0.2.2 lib/slatan/ear.rb
slatan-0.2.0 lib/slatan/ear.rb