dry-events 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/LICENSE +1 -1
- data/README.md +5 -4
- data/dry-events.gemspec +15 -14
- data/lib/dry/events/bus.rb +9 -2
- data/lib/dry/events/constants.rb +1 -2
- data/lib/dry/events/event.rb +5 -6
- data/lib/dry/events/filter.rb +1 -1
- data/lib/dry/events/listener.rb +3 -3
- data/lib/dry/events/publisher.rb +13 -12
- data/lib/dry/events/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f63e13681ddc16b48063d8ccbbf9b134fed50d351ac7bef19fe6e31b17d2df8
|
4
|
+
data.tar.gz: e1a22779ae49b59a04bc65ffb9ff1d53d49b066a9f06a4b9b487cea36f4b7c22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d42a5f782d005c813929877e729f607cb1089164607a4a496806c265159b1746bf3aa6554c769bddfde3fd40eb019dad3744eb60b670a58bcf3598dd480041e
|
7
|
+
data.tar.gz: 824f3bc90447b278138a1421988ec8cb6fb92f7851c0c9021f56309e895600233b222e79ffc223a25b46ed2e22a0a47f245653d917ae9ffbc7686f78151fb25c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## unreleased
|
4
|
+
|
5
|
+
|
6
|
+
### Fixed
|
7
|
+
|
8
|
+
- `subscribed?` now detects instance method blocks too (via #15) (@guilherme-andrade)
|
9
|
+
|
10
|
+
|
11
|
+
[Compare v0.3.0...master](https://github.com/dry-rb/dry-events/compare/v0.3.0...master)
|
12
|
+
|
3
13
|
## 0.3.0 2021-04-11
|
4
14
|
|
5
15
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
<!--- this file is synced from dry-rb/template-gem project -->
|
1
2
|
[gem]: https://rubygems.org/gems/dry-events
|
2
3
|
[actions]: https://github.com/dry-rb/dry-events/actions
|
3
4
|
[codacy]: https://www.codacy.com/gh/dry-rb/dry-events
|
@@ -10,19 +11,19 @@
|
|
10
11
|
[![CI Status](https://github.com/dry-rb/dry-events/workflows/ci/badge.svg)][actions]
|
11
12
|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/3170162485134ea3b778c7e20e180b26)][codacy]
|
12
13
|
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/3170162485134ea3b778c7e20e180b26)][codacy]
|
13
|
-
[![Inline docs](http://inch-ci.org/github/dry-rb/dry-events.svg?branch=
|
14
|
+
[![Inline docs](http://inch-ci.org/github/dry-rb/dry-events.svg?branch=main)][inchpages]
|
14
15
|
|
15
16
|
## Links
|
16
17
|
|
17
|
-
* [User documentation](
|
18
|
+
* [User documentation](https://dry-rb.org/gems/dry-events)
|
18
19
|
* [API documentation](http://rubydoc.info/gems/dry-events)
|
19
20
|
|
20
21
|
## Supported Ruby versions
|
21
22
|
|
22
23
|
This library officially supports the following Ruby versions:
|
23
24
|
|
24
|
-
* MRI
|
25
|
-
* jruby
|
25
|
+
* MRI `>= 2.7.0`
|
26
|
+
* jruby `>= 9.3` (postponed until 2.7 is supported)
|
26
27
|
|
27
28
|
## License
|
28
29
|
|
data/dry-events.gemspec
CHANGED
@@ -1,35 +1,36 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# this file is managed by dry-rb/devtools project
|
3
2
|
|
4
|
-
|
3
|
+
# this file is synced from dry-rb/template-gem project
|
4
|
+
|
5
|
+
lib = File.expand_path("lib", __dir__)
|
5
6
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
-
require
|
7
|
+
require "dry/events/version"
|
7
8
|
|
8
9
|
Gem::Specification.new do |spec|
|
9
|
-
spec.name =
|
10
|
+
spec.name = "dry-events"
|
10
11
|
spec.authors = ["Piotr Solnica"]
|
11
12
|
spec.email = ["piotr.solnica+oss@gmail.com"]
|
12
|
-
spec.license =
|
13
|
+
spec.license = "MIT"
|
13
14
|
spec.version = Dry::Events::VERSION.dup
|
14
15
|
|
15
16
|
spec.summary = "Pub/sub system"
|
16
17
|
spec.description = spec.summary
|
17
|
-
spec.homepage =
|
18
|
+
spec.homepage = "https://dry-rb.org/gems/dry-events"
|
18
19
|
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-events.gemspec", "lib/**/*"]
|
19
|
-
spec.bindir =
|
20
|
+
spec.bindir = "bin"
|
20
21
|
spec.executables = []
|
21
|
-
spec.require_paths = [
|
22
|
+
spec.require_paths = ["lib"]
|
22
23
|
|
23
|
-
spec.metadata[
|
24
|
-
spec.metadata[
|
25
|
-
spec.metadata[
|
26
|
-
spec.metadata[
|
24
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
25
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-events/blob/main/CHANGELOG.md"
|
26
|
+
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-events"
|
27
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-events/issues"
|
27
28
|
|
28
|
-
spec.required_ruby_version = ">= 2.
|
29
|
+
spec.required_ruby_version = ">= 2.7.0"
|
29
30
|
|
30
31
|
# to update dependencies edit project.yml
|
31
32
|
spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
|
32
|
-
spec.add_runtime_dependency "dry-core", "~> 0.
|
33
|
+
spec.add_runtime_dependency "dry-core", "~> 0.9", ">= 0.9"
|
33
34
|
|
34
35
|
spec.add_development_dependency "bundler"
|
35
36
|
spec.add_development_dependency "rake"
|
data/lib/dry/events/bus.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dry/events/constants"
|
4
4
|
|
5
5
|
module Dry
|
6
6
|
module Events
|
@@ -76,7 +76,14 @@ module Dry
|
|
76
76
|
|
77
77
|
# @api private
|
78
78
|
def subscribed?(listener)
|
79
|
-
listeners.values.any?
|
79
|
+
listeners.values.any? do |value|
|
80
|
+
value.any? do |block, _|
|
81
|
+
case listener
|
82
|
+
when Proc then block.equal?(listener)
|
83
|
+
when Method then listener.owner == block.owner && listener.name == block.name
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
80
87
|
end
|
81
88
|
|
82
89
|
# @api private
|
data/lib/dry/events/constants.rb
CHANGED
data/lib/dry/events/event.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require 'dry/events/constants'
|
3
|
+
require "dry/events/constants"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Events
|
@@ -14,12 +13,12 @@ module Dry
|
|
14
13
|
InvalidEventNameError = Class.new(StandardError) do
|
15
14
|
# @api private
|
16
15
|
def initialize
|
17
|
-
super(
|
16
|
+
super("please provide a valid event name, it could be either String or Symbol")
|
18
17
|
end
|
19
18
|
end
|
20
19
|
|
21
|
-
DOT =
|
22
|
-
UNDERSCORE =
|
20
|
+
DOT = "."
|
21
|
+
UNDERSCORE = "_"
|
23
22
|
|
24
23
|
# @!attribute [r] id
|
25
24
|
# @return [Symbol, String] The event identifier
|
@@ -29,7 +28,7 @@ module Dry
|
|
29
28
|
def self.new(id, payload = EMPTY_HASH)
|
30
29
|
return super(id, payload) if (id.is_a?(String) || id.is_a?(Symbol)) && !id.empty?
|
31
30
|
|
32
|
-
raise InvalidEventNameError
|
31
|
+
raise InvalidEventNameError
|
33
32
|
end
|
34
33
|
|
35
34
|
# Initialize a new event
|
data/lib/dry/events/filter.rb
CHANGED
data/lib/dry/events/listener.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require 'dry/events/publisher'
|
3
|
+
require "dry/events/publisher"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Events
|
@@ -23,7 +22,7 @@ module Dry
|
|
23
22
|
# end
|
24
23
|
#
|
25
24
|
# @api public
|
26
|
-
class Listener < Module
|
25
|
+
class Listener < ::Module
|
27
26
|
include Dry::Equalizer(:id)
|
28
27
|
|
29
28
|
# @!attribute [r] :id
|
@@ -42,6 +41,7 @@ module Dry
|
|
42
41
|
|
43
42
|
# @api private
|
44
43
|
def initialize(id)
|
44
|
+
super()
|
45
45
|
@id = id
|
46
46
|
|
47
47
|
define_method(:subscribe) do |event_id, query = EMPTY_HASH, &block|
|
data/lib/dry/events/publisher.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
|
5
|
-
require
|
6
|
-
|
7
|
-
require
|
8
|
-
require 'dry/events/event'
|
9
|
-
require 'dry/events/bus'
|
10
|
-
require 'dry/events/filter'
|
3
|
+
require "dry/core"
|
4
|
+
require "dry/events/constants"
|
5
|
+
require "dry/events/event"
|
6
|
+
require "dry/events/bus"
|
7
|
+
require "dry/events/filter"
|
11
8
|
|
12
9
|
module Dry
|
13
10
|
module Events
|
@@ -27,9 +24,12 @@ module Dry
|
|
27
24
|
def initialize(object_or_event_id)
|
28
25
|
case object_or_event_id
|
29
26
|
when String, Symbol
|
30
|
-
super(
|
27
|
+
super(
|
28
|
+
"you are trying to subscribe to an event: `#{object_or_event_id}` "\
|
29
|
+
"that has not been registered"
|
30
|
+
)
|
31
31
|
else
|
32
|
-
super(
|
32
|
+
super("you try use subscriber object that will never be executed")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -74,7 +74,7 @@ module Dry
|
|
74
74
|
# create_user.call(name: "Jane")
|
75
75
|
#
|
76
76
|
# @api public
|
77
|
-
class Publisher < Module
|
77
|
+
class Publisher < ::Module
|
78
78
|
include Dry::Equalizer(:id)
|
79
79
|
|
80
80
|
# Internal publisher registry, which is used to identify them globally
|
@@ -102,13 +102,14 @@ module Dry
|
|
102
102
|
#
|
103
103
|
# @api public
|
104
104
|
def self.[](id)
|
105
|
-
raise PublisherAlreadyRegisteredError
|
105
|
+
raise PublisherAlreadyRegisteredError, id if registry.key?(id)
|
106
106
|
|
107
107
|
new(id)
|
108
108
|
end
|
109
109
|
|
110
110
|
# @api private
|
111
111
|
def initialize(id)
|
112
|
+
super()
|
112
113
|
@id = id
|
113
114
|
end
|
114
115
|
|
data/lib/dry/events/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-events
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -30,20 +30,20 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.9'
|
34
34
|
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '0.
|
36
|
+
version: '0.9'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '0.
|
43
|
+
version: '0.9'
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
46
|
+
version: '0.9'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,7 +111,7 @@ licenses:
|
|
111
111
|
- MIT
|
112
112
|
metadata:
|
113
113
|
allowed_push_host: https://rubygems.org
|
114
|
-
changelog_uri: https://github.com/dry-rb/dry-events/blob/
|
114
|
+
changelog_uri: https://github.com/dry-rb/dry-events/blob/main/CHANGELOG.md
|
115
115
|
source_code_uri: https://github.com/dry-rb/dry-events
|
116
116
|
bug_tracker_uri: https://github.com/dry-rb/dry-events/issues
|
117
117
|
post_install_message:
|
@@ -122,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.
|
125
|
+
version: 2.7.0
|
126
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - ">="
|