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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20e65a3bddc28ca3121413e665f084f096c7b266304d9c486bc2d7c9b618ab8a
4
- data.tar.gz: 455304b5999249cd475f5df8a44e0d855333ccf208f41d9cd98c7cfe1bba3cac
3
+ metadata.gz: 9b67e1c24feb02de944be44aacb6bba935d9dc1dfac6c53de2ba95dcffbd93ee
4
+ data.tar.gz: aead6fb10e5ada014fed52383f031d140363cbf4f7ef9b21f5ee7c9e9f54c792
5
5
  SHA512:
6
- metadata.gz: 9fe33fb9bc6bcb060f32329e28774abb6a7b546e178e531d045043889db64c403afd00171351e733df33cc812e84763c9aaf47f89c82dc6cd37264ab8ba8fd04
7
- data.tar.gz: af195ddbdacb7e811f8c30d45d389d4b9472df7d06966009740e8cf4400676add7d80cda18db166795fafe27ae82277ed1930a2c72053bf427f4fefe424c37bc
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
- arg = with.is_a?(Proc) ? with.call(@subject) : (arg || subject)
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 data[0].call(data[1]) if strategy == :callable && observer == with
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
- if strategy == :observer && observer.respond_to?(with)
81
- handler = observer.method(with)
81
+ def call_callable(data)
82
+ callable, arg = data[0], data[1]
82
83
 
83
- return handler.call(@subject) if handler.arity == 1
84
+ callable_arg = arg.is_a?(Proc) ? arg.call(@subject) : (arg || @subject)
84
85
 
85
- handler.call(@subject, data)
86
- end
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
@@ -1,5 +1,5 @@
1
1
  module Micro
2
2
  module Observers
3
- VERSION = '0.7.0'
3
+ VERSION = '0.8.0'
4
4
  end
5
5
  end
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.7.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-26 00:00:00.000000000 Z
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: