u-observers 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/micro/observers/manager.rb +17 -9
- data/lib/micro/observers/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b67e1c24feb02de944be44aacb6bba935d9dc1dfac6c53de2ba95dcffbd93ee
|
4
|
+
data.tar.gz: aead6fb10e5ada014fed52383f031d140363cbf4f7ef9b21f5ee7c9e9f54c792
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a77a575068bdee0f9312e25e5623a4031bb1369dee11df5d039121e84cf7cab418b8b37c3c93ff46265528304b64f80fc1be61ca42e78d9436e9e779c390b2bd
|
7
|
+
data.tar.gz: f90045332776294e6bc3bf6e70c34b0f24f40551f32a4d9be029ecd5fdfcad4b68d33b6f5c81802e9e257dedf9d1e16395bda434ee2dd48f38f9e291099a8a4e
|
@@ -39,9 +39,7 @@ module Micro
|
|
39
39
|
|
40
40
|
return self unless event.is_a?(Symbol) && callable.respond_to?(:call)
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
@list << [:callable, event, [callable, arg]]
|
42
|
+
@list << [:callable, event, [callable, with]]
|
45
43
|
end
|
46
44
|
|
47
45
|
def detach(*args)
|
@@ -75,15 +73,25 @@ module Micro
|
|
75
73
|
end
|
76
74
|
|
77
75
|
def call!(observer, strategy, data, with:)
|
78
|
-
return
|
76
|
+
return call_callable(data) if strategy == :callable && observer == with
|
77
|
+
|
78
|
+
return call_observer(observer, with, data) if strategy == :observer
|
79
|
+
end
|
79
80
|
|
80
|
-
|
81
|
-
|
81
|
+
def call_callable(data)
|
82
|
+
callable, arg = data[0], data[1]
|
82
83
|
|
83
|
-
|
84
|
+
callable_arg = arg.is_a?(Proc) ? arg.call(@subject) : (arg || @subject)
|
84
85
|
|
85
|
-
|
86
|
-
|
86
|
+
callable.call(callable_arg)
|
87
|
+
end
|
88
|
+
|
89
|
+
def call_observer(observer, method_name, data)
|
90
|
+
return unless observer.respond_to?(method_name)
|
91
|
+
|
92
|
+
handler = observer.method(method_name)
|
93
|
+
|
94
|
+
handler.arity == 1 ? handler.call(@subject) : handler.call(@subject, data)
|
87
95
|
end
|
88
96
|
|
89
97
|
private_constant :EqualTo
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u-observers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Simple and powerful implementation of the observer pattern.
|
14
14
|
email:
|