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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9092f7b60a8ad71e376a074367328c96be1ca31c278dfee8a7f8e8a6c11d02d
4
- data.tar.gz: fb9e14c0df38ac76a64fd9811367322bccee5465d259a28537de902b292a6c72
3
+ metadata.gz: 9f63e13681ddc16b48063d8ccbbf9b134fed50d351ac7bef19fe6e31b17d2df8
4
+ data.tar.gz: e1a22779ae49b59a04bc65ffb9ff1d53d49b066a9f06a4b9b487cea36f4b7c22
5
5
  SHA512:
6
- metadata.gz: 995a2c14a459edd0e0fcb05f19629829581fce7e14e7edbbb8c9fe2e555769b3cd15a89b55d75826da0d49a70b7a818de802b7f92d496f0012bf675c61d3bcc1
7
- data.tar.gz: db26c95473237a3f783f06ffc71bad0351ab24a4922a544d227c586f9028d49655f300c038f63697d8fbe297e774b77692e52752167b12ae88660f69d6a8d344
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
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2021 dry-rb team
3
+ Copyright (c) 2015-2022 dry-rb team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
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=master)][inchpages]
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](http://dry-rb.org/gems/dry-events)
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 >= `2.5`
25
- * jruby >= `9.2`
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
- lib = File.expand_path('lib', __dir__)
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 'dry/events/version'
7
+ require "dry/events/version"
7
8
 
8
9
  Gem::Specification.new do |spec|
9
- spec.name = 'dry-events'
10
+ spec.name = "dry-events"
10
11
  spec.authors = ["Piotr Solnica"]
11
12
  spec.email = ["piotr.solnica+oss@gmail.com"]
12
- spec.license = 'MIT'
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 = 'https://dry-rb.org/gems/dry-events'
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 = 'bin'
20
+ spec.bindir = "bin"
20
21
  spec.executables = []
21
- spec.require_paths = ['lib']
22
+ spec.require_paths = ["lib"]
22
23
 
23
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
24
- spec.metadata['changelog_uri'] = 'https://github.com/dry-rb/dry-events/blob/master/CHANGELOG.md'
25
- spec.metadata['source_code_uri'] = 'https://github.com/dry-rb/dry-events'
26
- spec.metadata['bug_tracker_uri'] = 'https://github.com/dry-rb/dry-events/issues'
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.5.0"
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.5", ">= 0.5"
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"
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/events/constants'
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? { |value| value.any? { |block, _| block.equal?(listener) } }
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
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent/map'
4
- require 'dry/core/constants'
3
+ require "concurrent/map"
5
4
 
6
5
  module Dry
7
6
  module Events
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/core/equalizer'
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('please provide a valid event name, it could be either String or Symbol')
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 = '.'.freeze
22
- UNDERSCORE = '_'.freeze
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.new
31
+ raise InvalidEventNameError
33
32
  end
34
33
 
35
34
  # Initialize a new event
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
3
+ require "set"
4
4
 
5
5
  module Dry
6
6
  module Events
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry/core/equalizer'
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|
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent/map'
4
-
5
- require 'dry/core/class_attributes'
6
-
7
- require 'dry/events/constants'
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("you are trying to subscribe to an event: `#{object_or_event_id}` that has not been registered")
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('you try use subscriber object that will never be executed')
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.new(id) if registry.key?(id)
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
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Events
5
- VERSION = '0.3.0'
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end
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.3.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: 2021-04-11 00:00:00.000000000 Z
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.5'
33
+ version: '0.9'
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: '0.5'
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.5'
43
+ version: '0.9'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '0.5'
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/master/CHANGELOG.md
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.5.0
125
+ version: 2.7.0
126
126
  required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="