Class: ListStateNotifier
- Inherits:
-
Object
- Object
- ListStateNotifier
- Defined in:
- lib/state_holders/list_state_notifier.rb
Instance Attribute Summary collapse
-
#items ⇒ Object
readonly
Returns the value of attribute items.
Instance Method Summary collapse
-
#add(object) ⇒ Object
добавляет объект в массив items и уведомляет всех слушателей.
-
#add_listener(listener) ⇒ Object
добавляет нового слушателя в массив listeners.
-
#delete(object) ⇒ Object
удаляет объект из массива items и уведомляет всех слушателей.
-
#delete_listener(listener) ⇒ Object
удаляет слушателя из массива listeners.
-
#get(number) ⇒ Object
возвращает объект из массива items по индексу.
-
#initialize ⇒ ListStateNotifier
constructor
A new instance of ListStateNotifier.
-
#notify_listeners ⇒ Object
уведомляет всех слушателей о изменении массива items.
-
#replace(object, new_object) ⇒ Object
заменяет объект в массиве items на новый объект и уведомляет всех слушателей.
-
#set_all(objects) ⇒ Object
устанавливает новое значение для items и уведомляет всех слушателей.
Constructor Details
#initialize ⇒ ListStateNotifier
Returns a new instance of ListStateNotifier.
4 5 6 7 |
# File 'lib/state_holders/list_state_notifier.rb', line 4 def initialize @items = [] @listeners = [] end |
Instance Attribute Details
#items ⇒ Object (readonly)
Returns the value of attribute items.
2 3 4 |
# File 'lib/state_holders/list_state_notifier.rb', line 2 def items @items end |
Instance Method Details
#add(object) ⇒ Object
добавляет объект в массив items и уведомляет всех слушателей.
17 18 19 20 21 |
# File 'lib/state_holders/list_state_notifier.rb', line 17 def add(object) LoggerHolder.instance.debug('ListStateNotifier: add') @items << object notify_listeners end |
#add_listener(listener) ⇒ Object
добавляет нового слушателя в массив listeners.
43 44 45 46 |
# File 'lib/state_holders/list_state_notifier.rb', line 43 def add_listener(listener) LoggerHolder.instance.debug('ListStateNotifier: add_listener') @listeners << listener end |
#delete(object) ⇒ Object
удаляет объект из массива items и уведомляет всех слушателей.
29 30 31 32 33 |
# File 'lib/state_holders/list_state_notifier.rb', line 29 def delete(object) LoggerHolder.instance.debug('ListStateNotifier: delete') @items.delete(object) notify_listeners end |
#delete_listener(listener) ⇒ Object
удаляет слушателя из массива listeners.
48 49 50 51 |
# File 'lib/state_holders/list_state_notifier.rb', line 48 def delete_listener(listener) LoggerHolder.instance.debug('ListStateNotifier: delete_listener') @listeners.delete(listener) end |
#get(number) ⇒ Object
возвращает объект из массива items по индексу.
23 24 25 26 |
# File 'lib/state_holders/list_state_notifier.rb', line 23 def get(number) LoggerHolder.instance.debug('ListStateNotifier: get') @items[number] end |
#notify_listeners ⇒ Object
уведомляет всех слушателей о изменении массива items.
54 55 56 57 58 59 |
# File 'lib/state_holders/list_state_notifier.rb', line 54 def notify_listeners LoggerHolder.instance.debug('notify_listeners') @listeners.each do |listener| listener.update(@items) end end |
#replace(object, new_object) ⇒ Object
заменяет объект в массиве items на новый объект и уведомляет всех слушателей.
36 37 38 39 40 41 |
# File 'lib/state_holders/list_state_notifier.rb', line 36 def replace(object, new_object) LoggerHolder.instance.debug('ListStateNotifier: replace') index = @items.index(object) @items[index] = new_object notify_listeners end |
#set_all(objects) ⇒ Object
устанавливает новое значение для items и уведомляет всех слушателей.
10 11 12 13 14 |
# File 'lib/state_holders/list_state_notifier.rb', line 10 def set_all(objects) LoggerHolder.instance.debug('ListStateNotifier: set_all') @items = objects notify_listeners end |