u-observers 0.7.0 → 0.8.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 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: