Class: Micro::Observers::Set

Inherits:
Object
  • Object
show all
Defined in:
lib/micro/observers/set.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subject, subscribers: nil) ⇒ Set

Returns a new instance of Set.



11
12
13
14
15
# File 'lib/micro/observers/set.rb', line 11

def initialize(subject, subscribers: nil)
  @subject = subject
  @subject_changed = false
  @subscribers = Subscribers.new(subscribers)
end

Class Method Details

.for(subject) ⇒ Object



7
8
9
# File 'lib/micro/observers/set.rb', line 7

def self.for(subject)
  new(subject)
end

Instance Method Details

#attach(*args) ⇒ Object



42
# File 'lib/micro/observers/set.rb', line 42

def attach(*args); @subscribers.attach(args) and self; end

#call(*events, data: nil) ⇒ Object



62
63
64
# File 'lib/micro/observers/set.rb', line 62

def call(*events, data: nil)
  broadcast_if_subject_changed(Event::Names[events, default: CALL_EVENT], data)
end

#call!(*events, data: nil) ⇒ Object



66
67
68
# File 'lib/micro/observers/set.rb', line 66

def call!(*events, data: nil)
  broadcast(Event::Names[events, default: CALL_EVENT], data)
end

#countObject



17
# File 'lib/micro/observers/set.rb', line 17

def count; @subscribers.count; end

#detach(*args) ⇒ Object



43
# File 'lib/micro/observers/set.rb', line 43

def detach(*args); @subscribers.detach(args) and self; end

#include?(observer) ⇒ Boolean Also known as: included?

Returns:

  • (Boolean)


37
38
39
# File 'lib/micro/observers/set.rb', line 37

def include?(observer)
  @subscribers.include?(observer)
end

#inspectObject



70
71
72
73
74
# File 'lib/micro/observers/set.rb', line 70

def inspect
  subs = @subscribers.to_inspect

  '#<%s @subject=%s @subject_changed=%p @subscribers=%p>' % [self.class, @subject, @subject_changed, subs]
end

#none?Boolean

Returns:

  • (Boolean)


18
# File 'lib/micro/observers/set.rb', line 18

def none?; @subscribers.none?; end

#notify(*events, data: nil) ⇒ Object



52
53
54
# File 'lib/micro/observers/set.rb', line 52

def notify(*events, data: nil)
  broadcast_if_subject_changed(Event::Names.fetch(events), data)
end

#notify!(*events, data: nil) ⇒ Object



56
57
58
# File 'lib/micro/observers/set.rb', line 56

def notify!(*events, data: nil)
  broadcast(Event::Names.fetch(events), data)
end

#off(*args) ⇒ Object



48
49
50
# File 'lib/micro/observers/set.rb', line 48

def off(*args)
  @subscribers.off(args) and self
end

#on(options = Utils::EMPTY_HASH) ⇒ Object



45
# File 'lib/micro/observers/set.rb', line 45

def on(options = Utils::EMPTY_HASH); @subscribers.on(options) and self; end

#once(options = Utils::EMPTY_HASH) ⇒ Object



46
# File 'lib/micro/observers/set.rb', line 46

def once(options = Utils::EMPTY_HASH); @subscribers.once(options) and self; end

#some?Boolean

Returns:

  • (Boolean)


19
# File 'lib/micro/observers/set.rb', line 19

def some?; !none?; end

#subject_changed(state) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
# File 'lib/micro/observers/set.rb', line 27

def subject_changed(state)
  return @subject_changed = state if state == true || state == false

  raise ArgumentError, INVALID_BOOLEAN_MSG
end

#subject_changed!Object



33
34
35
# File 'lib/micro/observers/set.rb', line 33

def subject_changed!
  subject_changed(true)
end

#subject_changed?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/micro/observers/set.rb', line 21

def subject_changed?
  @subject_changed
end