Class: Micro::Observers::Set
- Inherits:
-
Object
- Object
- Micro::Observers::Set
- Defined in:
- lib/micro/observers/set.rb
Constant Summary collapse
- CallableOptions =
-> (arg, block) do arg.is_a?(Symbol) && block ? { event: arg, call: block } : arg end
Class Method Summary collapse
Instance Method Summary collapse
- #attach(*args) ⇒ Object
- #call(*events, data: nil) ⇒ Object
- #call!(*events, data: nil) ⇒ Object
- #count ⇒ Object
- #detach(*args) ⇒ Object
- #include?(observer) ⇒ Boolean (also: #included?)
-
#initialize(subject, subscribers: nil) ⇒ Set
constructor
A new instance of Set.
- #inspect ⇒ Object
- #none? ⇒ Boolean
- #notify(*events, data: nil) ⇒ Object
- #notify!(*events, data: nil) ⇒ Object
- #off(*args) ⇒ Object
- #on(arg = Utils::EMPTY_HASH, &block) ⇒ Object
- #once(arg = Utils::EMPTY_HASH, &block) ⇒ Object
- #some? ⇒ Boolean
- #subject_changed(state) ⇒ Object
- #subject_changed! ⇒ Object
- #subject_changed? ⇒ Boolean
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
69 70 71 |
# File 'lib/micro/observers/set.rb', line 69 def call(*events, data: nil) broadcast_if_subject_changed(Event::Names[events, default: CALL_EVENT], data) end |
#call!(*events, data: nil) ⇒ Object
73 74 75 |
# File 'lib/micro/observers/set.rb', line 73 def call!(*events, data: nil) broadcast(Event::Names[events, default: CALL_EVENT], data) end |
#count ⇒ Object
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?
37 38 39 |
# File 'lib/micro/observers/set.rb', line 37 def include?(observer) @subscribers.include?(observer) end |
#inspect ⇒ Object
77 78 79 80 81 |
# File 'lib/micro/observers/set.rb', line 77 def inspect subs = @subscribers.to_inspect '#<%s @subject=%s @subject_changed=%p @subscribers=%p>' % [self.class, @subject, @subject_changed, subs] end |
#none? ⇒ Boolean
18 |
# File 'lib/micro/observers/set.rb', line 18 def none?; @subscribers.none?; end |
#notify(*events, data: nil) ⇒ Object
59 60 61 |
# File 'lib/micro/observers/set.rb', line 59 def notify(*events, data: nil) broadcast_if_subject_changed(Event::Names.fetch(events), data) end |
#notify!(*events, data: nil) ⇒ Object
63 64 65 |
# File 'lib/micro/observers/set.rb', line 63 def notify!(*events, data: nil) broadcast(Event::Names.fetch(events), data) end |
#off(*args) ⇒ Object
57 |
# File 'lib/micro/observers/set.rb', line 57 def off(*args); @subscribers.off(args) and self; end |
#on(arg = Utils::EMPTY_HASH, &block) ⇒ Object
49 50 51 |
# File 'lib/micro/observers/set.rb', line 49 def on(arg = Utils::EMPTY_HASH, &block) @subscribers.on(CallableOptions[arg, block]) and self end |
#once(arg = Utils::EMPTY_HASH, &block) ⇒ Object
53 54 55 |
# File 'lib/micro/observers/set.rb', line 53 def once(arg = Utils::EMPTY_HASH, &block) @subscribers.once(CallableOptions[arg, block]) and self end |
#some? ⇒ Boolean
19 |
# File 'lib/micro/observers/set.rb', line 19 def some?; !none?; end |
#subject_changed(state) ⇒ Object
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
21 22 23 |
# File 'lib/micro/observers/set.rb', line 21 def subject_changed? @subject_changed end |