mediator-rb 0.0.1 → 0.0.2

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: a735c018fbe55728768ccc3b20af3e5ebcdc8a863102d3b51d420ba6ac8159e6
4
- data.tar.gz: 76385e5db8f81b6de8a60f14b72be057d1baaa7ce8a92e64ae4105cd32d512ae
3
+ metadata.gz: 1d9b2101bacad4c7dfe9e5836c7b228071018854868fc64aac8dad8df8027e2a
4
+ data.tar.gz: cd4d1479cf139a6d59bb6899b1aab6ad8c275a2ad729921c42efa779a57cec89
5
5
  SHA512:
6
- metadata.gz: 9ad331142855129465cd5224699b4118c83d1983b69aaced25d92a8e2c764a0a5c059c0923c0b4bfd441ef42b43e3e4dba290948c793e12256e1eda3a8d6dedc
7
- data.tar.gz: f8029e22546562fbfa606c4599462030defa000571d8288f70f2623b1ff71b4381e141d649fac5e06635e82b838968692a5afa72a8a74ef9c593a806b1593718
6
+ metadata.gz: d3ea21362c0c82c6c9a78d0ab7074a525a5bdd7ebac6e6252ad0a331e197f9e14a51c9942d3065728d8fc7a30906176a6cfba744f3961753926a976740251ca3
7
+ data.tar.gz: b1bc207000a3db59a7ec211b9110c004caa3a261733b9073a6722ba90c63e9a6e1fd41cb06e5f9e242912233c33f7f03875dda03ff0ec0507df98351d05218c0
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mediator-rb (0.1.0)
4
+ mediator-rb (0.0.2)
5
5
  concurrent-ruby
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- concurrent-ruby (1.2.0)
10
+ concurrent-ruby (1.2.2)
11
11
  diff-lcs (1.5.0)
12
12
  rake (13.0.6)
13
13
  rspec (3.12.0)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mediator
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.2"
5
5
  end
data/lib/mediator.rb CHANGED
@@ -1,37 +1,22 @@
1
1
  require 'concurrent/map'
2
- require "concurrent/async"
3
2
 
4
3
  module Mediator
5
- UnregisteredHandler = Class.new(StandardError)
6
-
7
- module AsyncHandler
8
- def self.included(base)
9
- base.class_eval do
10
- include Concurrent::Async
11
- end
12
- end
13
- end
14
-
15
- module SyncHandler
16
- def async
17
- self
18
- end
19
- end
20
-
21
- def self.Init
4
+ def self.init
22
5
  Instance.new
23
6
  end
24
7
 
25
8
  class Instance
9
+ MultipleHandlers = Class.new(StandardError)
10
+ UnregisteredHandler = Class.new(StandardError)
11
+
26
12
  def initialize
27
13
  @handlers = Concurrent::Map.new
28
- @listeners = Concurrent::Map.new do |h, k|
29
- h.compute_if_absent(k) { [] }
30
- end
14
+ @listeners = Concurrent::Map.new { |h, k| h.compute_if_absent(k) { [] } }
31
15
  end
32
16
 
33
17
  def handle(klass, handler)
34
- raise MultipleHandlers.new("Multiple handlers not allowed for #{klass}") if handlers[klass]
18
+ raise MultipleHandlers, "Multiple handlers not allowed for #{klass}" if handlers[klass]
19
+
35
20
  handlers[klass] = handler
36
21
  end
37
22
 
@@ -40,12 +25,14 @@ module Mediator
40
25
  end
41
26
 
42
27
  def accept(request)
43
- handler!(request).async.call(request)
28
+ handler!(request).then do |handler|
29
+ handler.call(request)
30
+ end
44
31
  end
45
32
 
46
- def publish(notification)
47
- listeners.fetch(notification.class).each do |listener|
48
- listener.async.call(notification)
33
+ def publish(event)
34
+ listeners!(event).each do |listener|
35
+ listener.call(event)
49
36
  end
50
37
  end
51
38
 
@@ -53,8 +40,12 @@ module Mediator
53
40
 
54
41
  attr_reader :handlers, :listeners
55
42
 
43
+ def listeners!(event)
44
+ listeners.fetch(event.class) { raise UnregisteredHandler, "Missing listener for #{event.class}" }
45
+ end
46
+
56
47
  def handler!(request)
57
- handlers.fetch(request.class) { raise UnregisteredHandler.new("Missing handler for #{request.class}") }
48
+ handlers.fetch(request.class) { raise UnregisteredHandler, "Missing handler for #{request.class}" }
58
49
  end
59
50
  end
60
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediator-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laertis Pappas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-05 00:00:00.000000000 Z
11
+ date: 2023-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby