Class: EvilEvents::Core::Events::ManagerRegistry Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/evil_events/core/events/manager_registry.rb,
lib/evil_events/core/events/manager_registry/scoped_event_type_matcher.rb

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.

Since:

  • 0.1.0

Defined Under Namespace

Classes: ScopedEventTypeMatcher

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeManagerRegistry

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 ManagerRegistry.

Since:

  • 0.1.0



19
20
21
# File 'lib/evil_events/core/events/manager_registry.rb', line 19

def initialize
  @managers = Concurrent::Map.new
end

Instance Attribute Details

#managersConcurrent::Map (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.

Returns:

  • (Concurrent::Map)

Since:

  • 0.1.0



16
17
18
# File 'lib/evil_events/core/events/manager_registry.rb', line 16

def managers
  @managers
end

Instance Method Details

#include?(manager) ⇒ Boolean

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.

Parameters:

Returns:

  • (Boolean)

Since:

  • 0.1.0



133
134
135
# File 'lib/evil_events/core/events/manager_registry.rb', line 133

def include?(manager)
  managed_event?(manager.event_class) && manager_of_event(manager.event_class) == manager
end

#managed_event?(event_class) ⇒ Boolean

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.

Parameters:

Returns:

  • (Boolean)

Since:

  • 0.1.0



141
142
143
# File 'lib/evil_events/core/events/manager_registry.rb', line 141

def managed_event?(event_class)
  managers.key?(event_class)
end

#managed_event_type?(event_type) ⇒ Boolean (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.

Parameters:

  • event_type (String)

Returns:

  • (Boolean)

Since:

  • 0.1.0



174
175
176
# File 'lib/evil_events/core/events/manager_registry.rb', line 174

def managed_event_type?(event_type)
  managed_event_types.include?(event_type)
end

#managed_event_typesArray<String> (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.

Returns:

  • (Array<String>)

Since:

  • 0.1.0



166
167
168
# File 'lib/evil_events/core/events/manager_registry.rb', line 166

def managed_event_types
  managed_events.map(&:type)
end

#managed_eventsArray<EvilEvents::Core::Events::AbstractEvent> (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.

Returns:

Since:

  • 0.1.0



159
160
161
# File 'lib/evil_events/core/events/manager_registry.rb', line 159

def managed_events
  managers.keys
end

#managed_events_mapHash

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:

  • (Hash)

Since:

  • 0.2.0



148
149
150
151
152
# File 'lib/evil_events/core/events/manager_registry.rb', line 148

def managed_events_map
  managed_events.each_with_object({}) do |event, accumulator|
    accumulator[event.type] = event
  end
end

#manager_of_event(event_class) ⇒ EvilEvents::Core::Events::Manager

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.



28
29
30
31
# File 'lib/evil_events/core/events/manager_registry.rb', line 28

def manager_of_event(event_class)
  # NOTE: raise exceptions to simplify runtime problems
  managers[event_class] || (raise EvilEvents::NonManagedEventClassError)
end

#manager_of_event_type(event_type) ⇒ EvilEvents::Core::Events::Manager

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.

Parameters:

  • event_type (String)

Returns:

See Also:

Since:

  • 0.1.0



38
39
40
41
42
43
44
# File 'lib/evil_events/core/events/manager_registry.rb', line 38

def manager_of_event_type(event_type)
  event_class = managed_events.find do |managed_event|
    managed_event.type == event_type
  end

  manager_of_event(event_class)
end

#managers_of_event_condition(event_condition) ⇒ Array<EvilEvents::Core::Event::Manager>

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.

Parameters:

  • event_condition (Proc)

Returns:

  • (Array<EvilEvents::Core::Event::Manager>)

Since:

  • 0.2.0



78
79
80
81
82
83
84
# File 'lib/evil_events/core/events/manager_registry.rb', line 78

def managers_of_event_condition(event_condition)
  event_classes = managed_events.select do |managed_event|
    !!event_condition.call(managed_event.type)
  end

  event_classes.map { |event_class| manager_of_event(event_class) }
end

#managers_of_event_pattern(event_pattern) ⇒ Array<EvilEvents::Core::Events::Manager>

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.

Parameters:

  • event_pattern (Regexp)

Returns:

Since:

  • 0.2.0



66
67
68
69
70
71
72
# File 'lib/evil_events/core/events/manager_registry.rb', line 66

def managers_of_event_pattern(event_pattern)
  event_classes = managed_events.select do |managed_event|
    managed_event.type.match(event_pattern)
  end

  event_classes.map { |event_class| manager_of_event(event_class) }
end

#managers_of_scoped_event_type(scoped_event_type) ⇒ Array<EvilEvents::Core::Events::Manager>

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.

Parameters:

  • scoped_event_type (String)

Returns:

Raises:

Since:

  • 0.4.0



52
53
54
55
56
57
58
59
60
# File 'lib/evil_events/core/events/manager_registry.rb', line 52

def managers_of_scoped_event_type(scoped_event_type)
  scope_matcher = ScopedEventTypeMatcher.new(scoped_event_type)

  event_classes = managed_events.select do |managed_event|
    scope_matcher.match?(managed_event.type)
  end

  event_classes.map { |event_class| manager_of_event(event_class) }
end

#potential_manager_duplicate?(manager) ⇒ Boolean (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.

Parameters:

Returns:

  • (Boolean)

Since:

  • 0.1.0



182
183
184
185
# File 'lib/evil_events/core/events/manager_registry.rb', line 182

def potential_manager_duplicate?(manager)
  return false unless managed_event?(manager.event_class)
  manager_of_event(manager.event_class).event_type == manager.event_type
end

#register(manager) ⇒ 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.



92
93
94
95
96
97
98
99
100
101
102
# File 'lib/evil_events/core/events/manager_registry.rb', line 92

def register(manager)
  unless manager.is_a?(EvilEvents::Core::Events::Manager)
    raise EvilEvents::IncorrectManagerObjectError
  end

  if potential_manager_duplicate?(manager) || !managed_event_type?(manager.event_type)
    managers[manager.event_class] = manager
  else
    raise EvilEvents::AlreadyManagedEventClassError
  end
end

#register_with(event_class) ⇒ 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.

Parameters:

Returns:

  • void

See Also:

Since:

  • 0.1.0



109
110
111
# File 'lib/evil_events/core/events/manager_registry.rb', line 109

def register_with(event_class)
  register(ManagerFactory.create(event_class))
end

#unregister(manager) ⇒ 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.

Parameters:

Returns:

  • void

Since:

  • 0.1.0



117
118
119
# File 'lib/evil_events/core/events/manager_registry.rb', line 117

def unregister(manager)
  managers.delete_pair(manager.event_class, manager)
end

#unregister_with(event_class) ⇒ 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.

Parameters:

Returns:

  • void

Since:

  • 0.1.0



125
126
127
# File 'lib/evil_events/core/events/manager_registry.rb', line 125

def unregister_with(event_class)
  managers.delete(event_class)
end