mediator-rb 0.0.1 → 0.0.2

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: 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