Class: SknUtils::NotifierBase

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNotifierBase

Returns a new instance of NotifierBase.



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

def initialize
  @listeners = []
end

Class Method Details

.attribute(*attrs) ⇒ Object

create writer-with-notify and reader



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/skn_utils/notifier_base.rb', line 32

def self.attribute(*attrs)
  attrs.each do |attr|
    instance_variable_set("@#{attr}", nil)
    define_method(attr) do
      instance_variable_get("@#{attr}")
    end
    define_method("#{attr}=") do |value|
      old_value = instance_variable_get("@#{attr}")
      unless (value == old_value)
        instance_variable_set("@#{attr}", value)
        @listeners.each do |listener|
          listener.attribute_changed(attr, old_value, value)
        end
      end
    end
  end # loop on attrs
end

Instance Method Details

#register_listener(listener) ⇒ Object



23
24
25
# File 'lib/skn_utils/notifier_base.rb', line 23

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

#unregister_listener(listener) ⇒ Object



27
28
29
# File 'lib/skn_utils/notifier_base.rb', line 27

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