observers 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/models/observable.rb +14 -1
- data/lib/observers.rb +4 -1
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eb285238975fddf6f112154a0c2dba9ce47569011afd28b613c6a9ecce4f6611
|
|
4
|
+
data.tar.gz: cd5998f3e1632de38775a2f840ac4215c2bb872bf9436213d99b0b73574a3dd1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 76195d403e724f44bec4bb2b77922efaa608be434ea5462084dd0e88b1d917535f622c66935392bc53cea35b1d05114f024e4ef5498babca6eedca68c1d92517
|
|
7
|
+
data.tar.gz: 5bf9e779194597ea33148459bc92cbef3406070feadfe3d81b94ea95077eca9f697da3b1e7cd8e1f7e648306dc0b28934f68b95fea54031dadaf33092ecfdabc
|
data/lib/models/observable.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Observers
|
|
|
13
13
|
@observers << Observer.new(object:, action:)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
# @returns: The result of the last
|
|
16
|
+
# @returns: The result of the last observer with a non-nil value.
|
|
17
17
|
def trigger(action:, event:)
|
|
18
18
|
action = event.action if event && action.nil?
|
|
19
19
|
action = :handle if action.nil?
|
|
@@ -27,5 +27,18 @@ module Observers
|
|
|
27
27
|
|
|
28
28
|
last_result
|
|
29
29
|
end
|
|
30
|
+
|
|
31
|
+
# @returns: The result of the first observer with a non-nil value.
|
|
32
|
+
def take(action:, event:)
|
|
33
|
+
action = event.action if event && action.nil?
|
|
34
|
+
action = :handle if action.nil?
|
|
35
|
+
|
|
36
|
+
@observers.each do |observer|
|
|
37
|
+
result = observer.trigger(action:, event:)
|
|
38
|
+
return result unless result.nil?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
nil # This is a bad day for the take method, one of the worst.
|
|
42
|
+
end
|
|
30
43
|
end
|
|
31
44
|
end
|
data/lib/observers.rb
CHANGED
|
@@ -24,11 +24,14 @@ module Observers
|
|
|
24
24
|
Observables[key].observe(object: self, action:)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
# Returns the last observer's non-nil return value.
|
|
28
27
|
def trigger(key = self, action: nil, event: nil)
|
|
29
28
|
Observables.fetch(key).trigger(action:, event:)
|
|
30
29
|
end
|
|
31
30
|
|
|
31
|
+
def take(key = self, action: nil, event: nil)
|
|
32
|
+
Observables.fetch(key).take(action:, event:)
|
|
33
|
+
end
|
|
34
|
+
|
|
32
35
|
# TODO: Provide a "pipe/port/take" method that uses ractors to be concurrent... if supplied with immutable Data?
|
|
33
36
|
end
|
|
34
37
|
|
data/lib/version.rb
CHANGED