observers 0.3.0 → 0.3.1
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/observer.rb +4 -1
- data/lib/observables.rb +4 -17
- data/lib/observers.rb +1 -3
- 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: 3803ec73448522b725c60b2929a3f3fe2fee1e87f102b5a75f8fadbebc2beec9
|
|
4
|
+
data.tar.gz: 9d4e91f3e4026c4fc813b338e8baf2b45164c46681e404e10b5a53c539302a60
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64bec520fd5246a61892e71ec40609b1e5cdaf00ef4e1cf9c28c5f1e0c27e9a6e561f3d6db2e3b89bb596d8c4d867deb4aac8c18cba97a80085e5d7149f458be
|
|
7
|
+
data.tar.gz: bb87af0e748a370272c760b80236694228596a0d9e702d2636f8854122f72636b5607f28cec56b9bef483f449a79dd0e5d8c67b659586b6742d881a97f044445
|
data/lib/models/observer.rb
CHANGED
|
@@ -12,9 +12,12 @@ module Observers
|
|
|
12
12
|
|
|
13
13
|
def trigger(action:, event:)
|
|
14
14
|
action = @action if @action
|
|
15
|
-
event ? @observer.send(action, **{ event:
|
|
15
|
+
event ? @observer.send(action, **{ event: }) : @observer.send(action)
|
|
16
16
|
rescue ArgumentError
|
|
17
17
|
type = @observer.instance_of?(Class) ? @observer : @observer.class
|
|
18
|
+
|
|
19
|
+
raise ArgumentError, "#{type}##{action} has an 'event:' keyword argument but no event was sent" if event.nil?
|
|
20
|
+
|
|
18
21
|
raise ArgumentError, "#{event.class} sent to #{type}##{action} but it has no 'event:' keyword argument"
|
|
19
22
|
end
|
|
20
23
|
end
|
data/lib/observables.rb
CHANGED
|
@@ -27,9 +27,10 @@ module Observers
|
|
|
27
27
|
observable.add_observer(observer:)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
# @return: The
|
|
31
|
-
def trigger(
|
|
32
|
-
action
|
|
30
|
+
# @return: The result of the last trigger with a non-nil value.
|
|
31
|
+
def trigger(key:, action:, event:)
|
|
32
|
+
action = event.action if event && action.nil?
|
|
33
|
+
action = :handle if action.nil?
|
|
33
34
|
|
|
34
35
|
observable = observables[key]
|
|
35
36
|
raise MissingObservableError, "Observable key '#{key}' not found" if observable.nil?
|
|
@@ -43,20 +44,6 @@ module Observers
|
|
|
43
44
|
|
|
44
45
|
last_result
|
|
45
46
|
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
def parse_actionable(actionable:)
|
|
50
|
-
action = actionable
|
|
51
|
-
event = nil
|
|
52
|
-
|
|
53
|
-
if actionable.class.ancestors.any? { |ancestor| ancestor.to_s == 'Low::Event' }
|
|
54
|
-
event = actionable
|
|
55
|
-
action = event.action
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
[action, event]
|
|
59
|
-
end
|
|
60
47
|
end
|
|
61
48
|
end
|
|
62
49
|
end
|
data/lib/observers.rb
CHANGED
|
@@ -24,10 +24,8 @@ module Observers
|
|
|
24
24
|
|
|
25
25
|
# Returns the last observer with a non-nil return value.
|
|
26
26
|
def trigger(key = self, action: nil, event: nil)
|
|
27
|
-
raise ArgumentError, 'Action or event required' if action.nil? && event.nil?
|
|
28
|
-
|
|
29
27
|
# TODO: Parsing logic can be simplified/removed now that action and event args are separated.
|
|
30
|
-
Observables.trigger(
|
|
28
|
+
Observables.trigger(key:, action:, event:)
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
# TODO: Provide a "pipe/port/take" method that uses ractors to be concurrent... if supplied with immutable Data?
|
data/lib/version.rb
CHANGED