module Kamaze::Project::Concern::Observable::ClassMethods

Class methods

Public Instance Methods

add_observer(observer_class, func = :handle_event) click to toggle source

Add observer.

@param [Class] observer_class

@return [self]

# File lib/kamaze/project/concern/observable.rb, line 59
def add_observer(observer_class, func = :handle_event)
  func = func.to_sym

  unless observer_class.instance_methods.include?(func)
    m = "#<#{observer_class}> does not respond to `#{func}'"
    raise NoMethodError, m
  end

  observer_peers[observer_class] = func

  self
end
delete_observer(observer_class) click to toggle source

Remove observer, so that it will no longer receive notifications.

@param [Class] observer_class

@return [self]

# File lib/kamaze/project/concern/observable.rb, line 77
def delete_observer(observer_class)
  self.tap do
    observer_peers.delete(observer_class)
  end
end
delete_observers() click to toggle source

Remove all observers.

@return [self]

# File lib/kamaze/project/concern/observable.rb, line 86
def delete_observers
  self.tap { observers.clear }
end

Protected Instance Methods

observer_peers() click to toggle source

@return [Hash]

# File lib/kamaze/project/concern/observable.rb, line 93
def observer_peers
  @observer_peers ||= {}
end