Module: Observe

Defined in:
lib/observe.rb

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.observerObject (readonly)

Returns the value of attribute observer.



6
7
8
# File 'lib/observe.rb', line 6

def observer
  @observer
end

Instance Method Details

#add_observer(group, observer = nil, &block) (private)

This method returns an undefined value.

Add an observer to a class.

Examples:

add_observer(:group) do 
  puts "Hello!" 
end

Parameters:

  • group (#to_sym)

    The name of a group that an observer belongs to.

  • observer (#call) (defaults to: nil)

    Any object that can respond to call.



25
26
27
28
29
30
31
32
33
34
# File 'lib/observe.rb', line 25

def add_observer group, observer=nil, &block
  obj = observer || block

  if obj
    group = group.to_sym
    observers[group] << Observe.observer.new(group, obj)
  else
    raise ArgumentError, "Wrong number of arguments (1 for 2)"
  end
end

#destroy_observers(group = nil) (private)

This method returns an undefined value.

Destroy an observer.

Examples:

destroy_observers :group

Parameters:

  • group (#to_sym) (defaults to: nil)

    The name of a group. Without this argument, all observers are destroyed.



70
71
72
73
74
75
76
# File 'lib/observe.rb', line 70

def destroy_observers group=nil
  if group.nil?
    observers.clear
  else
    observers.delete(group.to_sym)
  end
end

#notify_observers(group, *args) (private)

This method returns an undefined value.

Notify an observer.

Examples:

notify_observers :group, "arg1", "arg2"

Parameters:

  • group (#to_sym)

    The name of a group

  • *args (Object)

    A variable number of arguments to passed onto an observer.



51
52
53
54
55
# File 'lib/observe.rb', line 51

def notify_observers group, *args
  observers[group.to_sym].each do |observer|
    observer.object.call(*args)
  end
end

#observersHash<Symbol, Array> (private)

A list of observers registered for a including class or module.
There's no need to use this method directly.

Returns:

  • (Hash<Symbol, Array>)


85
86
87
# File 'lib/observe.rb', line 85

def observers
  @observers = @observers || Hash.new { |h,k| h[k] = [] }
end