Module: Glimmer::DataBinding::ObservableArray
- Includes:
- Observable
- Defined in:
- lib/glimmer/data_binding/observable_array.rb
Overview
TODO prefix utility methods with double-underscore
Instance Method Summary collapse
- #<<(element) ⇒ Object
- #[]=(index, value) ⇒ Object
- #add_observer(observer, element_properties = nil) ⇒ Object
- #clear ⇒ Object
- #delete(element) ⇒ Object
- #delete_at(index) ⇒ Object
- #has_observer?(observer) ⇒ Boolean
- #notify_observers ⇒ Object
- #property_observer_list ⇒ Object
- #remove_observer(observer, element_properties = nil) ⇒ Object
- #unregister_dependent_observers(old_value) ⇒ Object
Methods included from Observable
Instance Method Details
#<<(element) ⇒ Object
44 45 46 47 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 44 def <<(element) super(element) notify_observers end |
#[]=(index, value) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 49 def []=(index, value) old_value = self[index] unregister_dependent_observers(old_value) super(index, value) notify_observers end |
#add_observer(observer, element_properties = nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 11 def add_observer(observer, element_properties=nil) return observer if has_observer?(observer) && element_properties.nil? property_observer_list << observer [element_properties].flatten.compact.each do |property| each do |element| observer.observe(element, property) end end observer end |
#clear ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 69 def clear each do |old_value| unregister_dependent_observers(old_value) end super() notify_observers end |
#delete(element) ⇒ Object
56 57 58 59 60 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 56 def delete(element) unregister_dependent_observers(element) super(element) notify_observers end |
#delete_at(index) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 62 def delete_at(index) old_value = self[index] unregister_dependent_observers(old_value) super(index) notify_observers end |
#has_observer?(observer) ⇒ Boolean
32 33 34 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 32 def has_observer?(observer) property_observer_list.include?(observer) end |
#notify_observers ⇒ Object
40 41 42 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 40 def notify_observers property_observer_list.each {|observer| observer.call} end |
#property_observer_list ⇒ Object
36 37 38 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 36 def property_observer_list @property_observer_list ||= Set.new end |
#remove_observer(observer, element_properties = nil) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 22 def remove_observer(observer, element_properties=nil) property_observer_list.delete(observer) [element_properties].flatten.compact.each do |property| each do |element| observer.unobserve(element, property) end end observer end |
#unregister_dependent_observers(old_value) ⇒ Object
77 78 79 80 81 82 83 |
# File 'lib/glimmer/data_binding/observable_array.rb', line 77 def unregister_dependent_observers(old_value) # TODO look into optimizing this return unless old_value.is_a?(ObservableModel) || old_value.is_a?(ObservableArray) property_observer_list.each do |observer| observer.unregister_dependents_with_observable(observer.registration_for(self), old_value) end end |