Class: ListStateNotifier

Inherits:
Object
  • Object
show all
Defined in:
lib/state_holders/list_state_notifier.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeListStateNotifier

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

#itemsObject (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_listenersObject

уведомляет всех слушателей о изменении массива 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