mediator-rb 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -1
- data/Gemfile.lock +1 -3
- data/lib/mediator/{version.rb → rb/version.rb} +3 -1
- data/lib/mediator/rb.rb +10 -0
- data/mediator-rb.gemspec +2 -3
- data/sig/mediator/rb.rbs +6 -0
- metadata +5 -20
- data/lib/mediator-rb.rb +0 -1
- data/lib/mediator.rb +0 -51
- data/sig/mediator/.gitignore +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcec518e118433d3ebec5e4a06cc866d7e36c5558511952ec91323d50a228940
|
4
|
+
data.tar.gz: eb6b84d7c8d823b8e6a03591f862a0887dccf839e8af66204e33b91c985623bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee6f5a43a69921f186b9a60c3ccb324b02af3e91a67b98d3d53e6c37e909b03bcbec0942d10e1653f1e0fc0772ebd7834f05fe56887fe63ef84d18d9497a1ced
|
7
|
+
data.tar.gz: beaef57e236c9e37b4bd171629f6afa9129dd340e897b734728d6ebad5fed3b13515a477b0cbb007d923fadb66ba80bdfe834d41108022e2760195e36cf37dd5
|
data/.rspec
CHANGED
data/Gemfile.lock
CHANGED
data/lib/mediator/rb.rb
ADDED
data/mediator-rb.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "lib/mediator/version"
|
3
|
+
require_relative "lib/mediator/rb/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "mediator-rb"
|
7
|
-
spec.version = Mediator::VERSION
|
7
|
+
spec.version = Mediator::Rb::VERSION
|
8
8
|
spec.authors = ["Laertis Pappas"]
|
9
9
|
spec.email = ["laertis.pappas@gmail.com"]
|
10
10
|
|
@@ -30,6 +30,5 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = []
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_dependency "concurrent-ruby"
|
34
33
|
spec.add_development_dependency "rspec"
|
35
34
|
end
|
data/sig/mediator/rb.rbs
ADDED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediator-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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-
|
11
|
+
date: 2023-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: concurrent-ruby
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rspec
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,11 +38,10 @@ files:
|
|
52
38
|
- LICENSE.txt
|
53
39
|
- README.md
|
54
40
|
- Rakefile
|
55
|
-
- lib/mediator
|
56
|
-
- lib/mediator.rb
|
57
|
-
- lib/mediator/version.rb
|
41
|
+
- lib/mediator/rb.rb
|
42
|
+
- lib/mediator/rb/version.rb
|
58
43
|
- mediator-rb.gemspec
|
59
|
-
- sig/mediator
|
44
|
+
- sig/mediator/rb.rbs
|
60
45
|
homepage: https://www.github.com/laertispappas/mediator-rb
|
61
46
|
licenses:
|
62
47
|
- MIT
|
data/lib/mediator-rb.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "mediator"
|
data/lib/mediator.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'concurrent/map'
|
2
|
-
|
3
|
-
module Mediator
|
4
|
-
def self.init
|
5
|
-
Instance.new
|
6
|
-
end
|
7
|
-
|
8
|
-
class Instance
|
9
|
-
MultipleHandlers = Class.new(StandardError)
|
10
|
-
UnregisteredHandler = Class.new(StandardError)
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@handlers = Concurrent::Map.new
|
14
|
-
@listeners = Concurrent::Map.new { |h, k| h.compute_if_absent(k) { [] } }
|
15
|
-
end
|
16
|
-
|
17
|
-
def handle(klass, handler)
|
18
|
-
raise MultipleHandlers, "Multiple handlers not allowed for #{klass}" if handlers[klass]
|
19
|
-
|
20
|
-
handlers[klass] = handler
|
21
|
-
end
|
22
|
-
|
23
|
-
def subscribe(klass, handler)
|
24
|
-
listeners[klass] << handler
|
25
|
-
end
|
26
|
-
|
27
|
-
def accept(request)
|
28
|
-
handler!(request).then do |handler|
|
29
|
-
handler.call(request)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def publish(event)
|
34
|
-
listeners!(event).each do |listener|
|
35
|
-
listener.call(event)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
attr_reader :handlers, :listeners
|
42
|
-
|
43
|
-
def listeners!(event)
|
44
|
-
listeners.fetch(event.class) { raise UnregisteredHandler, "Missing listener for #{event.class}" }
|
45
|
-
end
|
46
|
-
|
47
|
-
def handler!(request)
|
48
|
-
handlers.fetch(request.class) { raise UnregisteredHandler, "Missing handler for #{request.class}" }
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/sig/mediator/.gitignore
DELETED
File without changes
|