Class: SknUtils::NotifierBase
- Inherits:
-
Object
- Object
- SknUtils::NotifierBase
- Defined in:
- lib/skn_utils/notifier_base.rb
Class Method Summary collapse
-
.attribute(*attrs) ⇒ Object
create writer-with-notify and reader.
Instance Method Summary collapse
-
#initialize ⇒ NotifierBase
constructor
A new instance of NotifierBase.
- #register_listener(listener) ⇒ Object
- #unregister_listener(listener) ⇒ Object
Constructor Details
#initialize ⇒ NotifierBase
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(*attrs) ⇒ Object
create writer-with-notify and reader
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/skn_utils/notifier_base.rb', line 23 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}") return if (value == old_value) instance_variable_set("@#{attr}", value) @listeners.each do |listener| listener.attribute_changed(attr, old_value, value) end end end # loop on attrs end |
Instance Method Details
#register_listener(listener) ⇒ Object
14 15 16 |
# File 'lib/skn_utils/notifier_base.rb', line 14 def register_listener(listener) @listeners.push(listener) unless @listeners.include?(listener) end |
#unregister_listener(listener) ⇒ Object
18 19 20 |
# File 'lib/skn_utils/notifier_base.rb', line 18 def unregister_listener(listener) @listeners.delete(listener) end |