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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 701e08478d6d96ff9be87ea056510e4dcf4995bc779c726d263dc9ba7d5803be
4
- data.tar.gz: 1d9a10983efabeb4d7ac66c7d6df2f4d4204b947b85836369fdc93e9d91ffc57
3
+ metadata.gz: 3803ec73448522b725c60b2929a3f3fe2fee1e87f102b5a75f8fadbebc2beec9
4
+ data.tar.gz: 9d4e91f3e4026c4fc813b338e8baf2b45164c46681e404e10b5a53c539302a60
5
5
  SHA512:
6
- metadata.gz: 2b1a653fa0e7cc33a70d121620c67141061618dc270cd6793b713b04822fe2ed32f0934c30b30079f190d8c3acfeb7aa90df086a4fe66fd3c09fc1e12adaa231
7
- data.tar.gz: bcb0708e1be9ec611a28b887a3d18b3cba0798a05d4b8c9c3a502694aa3770e9a06f6cc1767d83aaa085900de6bb58d46e557edfc0dc9b80bd7ad68a7ac731af
6
+ metadata.gz: 64bec520fd5246a61892e71ec40609b1e5cdaf00ef4e1cf9c28c5f1e0c27e9a6e561f3d6db2e3b89bb596d8c4d867deb4aac8c18cba97a80085e5d7149f458be
7
+ data.tar.gz: bb87af0e748a370272c760b80236694228596a0d9e702d2636f8854122f72636b5607f28cec56b9bef483f449a79dd0e5d8c67b659586b6742d881a97f044445
@@ -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: event }) : @observer.send(action)
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 last result of the trigger.
31
- def trigger(actionable:, key:)
32
- action, event = parse_actionable(actionable:)
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(actionable: action || event, key:)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Observers
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: observers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi