Class: EvilEvents::Core::Events::Subscriber Private
- Inherits:
-
Object
- Object
- EvilEvents::Core::Events::Subscriber
- Defined in:
- lib/evil_events/core/events/subscriber.rb,
lib/evil_events/core/events/subscriber/mixin.rb more...
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Constant Summary collapse
- Mixin =
EvilEvents::Shared::ClonableModuleBuilder.build do # @param event_types [Array<String, Class{EvilEvents::Core::Events::AbstractEvent}, Regexp>] # @option delegator [String, Symbol, NilClass] # @raise [EvilEvents::ArgumentError] # @return [void] # # @since 0.2.0 def subscribe_to(*event_types, delegator: nil) raise EvilEvents::ArgumentError unless event_types.all? do |event_type| event_type.is_a?(Class) || event_type.is_a?(String) || event_type.is_a?(Regexp) || event_type.is_a?(Proc) end event_system = EvilEvents::Core::Bootstrap[:event_system] event_types.each do |event_type| case event_type when Class then event_system.observe(event_type, self, delegator) when String then event_system.raw_observe(event_type, self, delegator) when Regexp then event_system.observe_list(event_type, self, delegator) when Proc then event_system.conditional_observe(event_type, self, delegator) end end end # @param event_scopes [Array<String>] # @option delegator [String,Symbol,NilClass] # @raise [EvilEvents::ArgumentError] # @return [void] # # @api public # @since 0.4.0 def subscribe_to_scope(*event_scopes, delegator: nil) raise EvilEvents::ArgumentError unless event_scopes.all? do |event_scope| event_scope.is_a?(String) end event_system = EvilEvents::Core::Bootstrap[:event_system] event_scopes.each do |event_scope| event_system.scoped_observe(event_scope, self, delegator) end end end
Instance Attribute Summary collapse
- #delegator_resolver ⇒ EvilEvents::Shared::DelegatorResolver readonly private
Instance Method Summary collapse
- #default_resolver ⇒ EvilEvents::Shared::DelegatorResolver private private
- #delegator ⇒ String, Symbol private
-
#initialize(subscriber, delegator_resolver = default_resolver) ⇒ Subscriber
constructor
private
A new instance of Subscriber.
-
#notify(event) ⇒ Object
private
Void.
- #source_object ⇒ Object private
Constructor Details
permalink #initialize(subscriber, delegator_resolver = default_resolver) ⇒ Subscriber
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Subscriber.
16 17 18 19 |
# File 'lib/evil_events/core/events/subscriber.rb', line 16 def initialize(subscriber, delegator_resolver = default_resolver) @subscriber = subscriber @delegator_resolver = delegator_resolver end |
Instance Attribute Details
permalink #delegator_resolver ⇒ EvilEvents::Shared::DelegatorResolver (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
10 11 12 |
# File 'lib/evil_events/core/events/subscriber.rb', line 10 def delegator_resolver @delegator_resolver end |
Instance Method Details
permalink #default_resolver ⇒ EvilEvents::Shared::DelegatorResolver (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
48 49 50 51 |
# File 'lib/evil_events/core/events/subscriber.rb', line 48 def default_resolver delegation = -> { EvilEvents::Core::Bootstrap[:config].settings.subscriber.default_delegator } EvilEvents::Shared::DelegatorResolver.new(delegation) end |
permalink #delegator ⇒ String, Symbol
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
39 40 41 |
# File 'lib/evil_events/core/events/subscriber.rb', line 39 def delegator @delegator ||= delegator_resolver.delegator end |
permalink #notify(event) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns void.
25 26 27 |
# File 'lib/evil_events/core/events/subscriber.rb', line 25 def notify(event) source_object.public_send(delegator, event) end |
permalink #source_object ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
32 33 34 |
# File 'lib/evil_events/core/events/subscriber.rb', line 32 def source_object @subscriber end |