Class: NotifierBase

Inherits:
Object
  • Object
show all
Defined in:
lib/skn_utils/notifier_base.rb

Direct Known Subclasses

SimpleBean, TestBean

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNotifierBase

Returns a new instance of NotifierBase.



10
11
12
# File 'lib/skn_utils/notifier_base.rb', line 10

def initialize
  @listeners = []
end

Class Method Details

.attribute(*properties) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/skn_utils/notifier_base.rb', line 22

def self.attribute(*properties)
  properties.each do |prop|
    define_method(prop) {
      instance_variable_get("@#{prop}")
    }
    define_method("#{prop}=") do |value|
      old_value = instance_variable_get("@#{prop}")
      return if (value == old_value)
      @listeners.each { |listener|
        listener.attribute_changed(prop, old_value, value)
      }
      instance_variable_set("@#{prop}", value)
    end
  end # loop on properties
end

Instance Method Details

#register_listener(l) ⇒ Object



14
15
16
# File 'lib/skn_utils/notifier_base.rb', line 14

def register_listener(l)
  @listeners.push(l) unless @listeners.include?(l)
end

#unregister_listener(l) ⇒ Object



18
19
20
# File 'lib/skn_utils/notifier_base.rb', line 18

def unregister_listener(l)
  @listeners.delete(l)
end