evil_events 0.1.0rc1 → 0.1.0rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/CHANGELOG.md +2 -0
- data/README.md +4 -2
- data/evil_events.gemspec +9 -7
- data/lib/evil_events/boot_point.rb +4 -8
- data/lib/evil_events/config.rb +7 -0
- data/lib/evil_events/core/activity_logging.rb +2 -2
- data/lib/evil_events/core/broadcasting/adapters/memory_async.rb +13 -8
- data/lib/evil_events/core/broadcasting/adapters/memory_sync.rb +11 -9
- data/lib/evil_events/core/broadcasting/adapters.rb +2 -2
- data/lib/evil_events/core/broadcasting/dispatcher/{dispatchable.rb → mixin.rb} +1 -1
- data/lib/evil_events/core/broadcasting/dispatcher.rb +1 -1
- data/lib/evil_events/core/broadcasting/emitter.rb +10 -2
- data/lib/evil_events/core/broadcasting.rb +1 -1
- data/lib/evil_events/core/events/abstract_event.rb +4 -1
- data/lib/evil_events/core/events/event_class_factory.rb +8 -12
- data/lib/evil_events/core/events/event_extensions/adapter_customizable.rb +2 -2
- data/lib/evil_events/core/events/event_extensions/emittable.rb +12 -0
- data/lib/evil_events/core/events/event_extensions/manageable.rb +1 -1
- data/lib/evil_events/core/events/event_extensions/observable.rb +3 -3
- data/lib/evil_events/core/events/event_extensions/payloadable.rb +1 -1
- data/lib/evil_events/core/events/event_extensions/serializable.rb +2 -0
- data/lib/evil_events/core/events/manager_factory.rb +10 -0
- data/lib/evil_events/core/events/serializers/hash.rb +1 -1
- data/lib/evil_events/core/events/serializers/json.rb +1 -1
- data/lib/evil_events/core/events/subscriber/mixin.rb +2 -2
- data/lib/evil_events/core/events/subscriber.rb +11 -1
- data/lib/evil_events/core/events.rb +1 -0
- data/lib/evil_events/core.rb +1 -0
- data/lib/evil_events/shared/combined_context.rb +2 -0
- data/lib/evil_events/shared/logger.rb +1 -1
- data/lib/evil_events/shared.rb +6 -5
- data/lib/evil_events/system/broadcaster.rb +42 -0
- data/lib/evil_events/system/event_builder.rb +30 -0
- data/lib/evil_events/system/event_manager.rb +95 -0
- data/lib/evil_events/system/mock.rb +7 -3
- data/lib/evil_events/system/mocking.rb +33 -0
- data/lib/evil_events/system.rb +34 -125
- data/lib/evil_events/version.rb +1 -1
- data/lib/evil_events.rb +5 -5
- metadata +37 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a6c5ea4454784cde26a98119cba57b5d593b38a
|
4
|
+
data.tar.gz: f6966cb8fa6f63a8a81185ebb7ed27135325972b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5318459757e376efd82ab5a05bead86551b44b18948348523123777fe42a237f8d069e7fa79a19e4cb78a034c85b1be45d758e53a8dc7b261362f86cbfeb6c3f
|
7
|
+
data.tar.gz: 384d7919a39d38a2998cc2663c14ec6ff453c6012668eae704321d4a1a1bfae413f44c585d263a295b091fa4d948c4cf0dc43b536ea74419ea8332d5674f8a73
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
# EvilEvents - powerful event system for ruby applications
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/evil_events)
|
4
|
+
[](https://travis-ci.org/ergosploit/evil_events)
|
5
|
+
[](https://coveralls.io/github/ergosploit/evil_events?branch=master)
|
4
6
|
|
5
|
-
|
7
|
+
NOTE: Work in progress!
|
6
8
|
|
7
|
-
###
|
9
|
+
### ROADMAP
|
8
10
|
- Full test coverage (0.1.0)
|
9
11
|
- Basic documentation (README) (0.1.0)
|
10
12
|
- FULL documentation (0.2.1)
|
data/evil_events.gemspec
CHANGED
@@ -32,11 +32,13 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency 'dry-container', '0.6.0'
|
33
33
|
spec.add_dependency 'concurrent-ruby', '1.0.5'
|
34
34
|
|
35
|
-
spec.add_development_dependency '
|
36
|
-
spec.add_development_dependency '
|
37
|
-
spec.add_development_dependency '
|
38
|
-
spec.add_development_dependency '
|
39
|
-
spec.add_development_dependency '
|
40
|
-
spec.add_development_dependency '
|
41
|
-
spec.add_development_dependency '
|
35
|
+
spec.add_development_dependency 'coveralls', '0.7.2'
|
36
|
+
spec.add_development_dependency 'pry', '0.11.1'
|
37
|
+
spec.add_development_dependency 'simplecov', '0.15.1'
|
38
|
+
spec.add_development_dependency 'simplecov-json', '0.2'
|
39
|
+
spec.add_development_dependency 'rubocop', '0.50.0'
|
40
|
+
spec.add_development_dependency 'bundler', '1.15.4'
|
41
|
+
spec.add_development_dependency 'rake', '12.1.0'
|
42
|
+
spec.add_development_dependency 'rspec', '3.6.0'
|
43
|
+
spec.add_development_dependency 'rubocop-rspec', '1.18.0'
|
42
44
|
end
|
@@ -3,15 +3,11 @@
|
|
3
3
|
module EvilEvents
|
4
4
|
# @api private
|
5
5
|
# @since 0.1.0
|
6
|
-
|
7
|
-
# @api private
|
6
|
+
class BootPoint
|
8
7
|
# @since 0.1.0
|
9
|
-
|
10
|
-
# @since 0.1.0
|
11
|
-
extend Shared::DependencyContainer::Mixin
|
8
|
+
extend Shared::DependencyContainer::Mixin
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
10
|
+
register(:event_system, memoize: true) { EvilEvents::System.new }
|
11
|
+
register(:config) { EvilEvents::Config }
|
16
12
|
end
|
17
13
|
end
|
data/lib/evil_events/config.rb
CHANGED
@@ -9,7 +9,7 @@ module EvilEvents::Core
|
|
9
9
|
# @return void
|
10
10
|
#
|
11
11
|
# @since 0.1.0
|
12
|
-
def log_activity(activity
|
12
|
+
def log_activity(activity: nil, message: nil)
|
13
13
|
progname = "[EvilEvents:#{activity}]"
|
14
14
|
activity_logger.add(activity_logger.level, message, progname)
|
15
15
|
end
|
@@ -18,7 +18,7 @@ module EvilEvents::Core
|
|
18
18
|
#
|
19
19
|
# @since 0.1.0
|
20
20
|
def activity_logger
|
21
|
-
EvilEvents::BootPoint
|
21
|
+
EvilEvents::BootPoint[:config].logger
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -4,16 +4,21 @@ module EvilEvents::Core::Broadcasting
|
|
4
4
|
class Adapters
|
5
5
|
# @api public
|
6
6
|
# @since 0.1.0
|
7
|
-
|
7
|
+
module MemoryAsync
|
8
8
|
# @since 0.1.0
|
9
|
-
|
9
|
+
AsyncTask = ::Thread
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
class << self
|
12
|
+
# @since 0.1.0
|
13
|
+
include Dispatcher::Mixin
|
14
|
+
|
15
|
+
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
16
|
+
# @return void
|
17
|
+
#
|
18
|
+
# @since 0.1.0
|
19
|
+
def call(event)
|
20
|
+
AsyncTask.new { dispatch(event) }
|
21
|
+
end
|
17
22
|
end
|
18
23
|
end
|
19
24
|
end
|
@@ -4,16 +4,18 @@ module EvilEvents::Core::Broadcasting
|
|
4
4
|
class Adapters
|
5
5
|
# @api public
|
6
6
|
# @since 0.1.0
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
module MemorySync
|
8
|
+
class << self
|
9
|
+
# @since 0.1.0
|
10
|
+
include Dispatcher::Mixin
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
13
|
+
# @return void
|
14
|
+
#
|
15
|
+
# @since 0.1.0
|
16
|
+
def call(event)
|
17
|
+
dispatch(event)
|
18
|
+
end
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -5,7 +5,7 @@ module EvilEvents::Core::Broadcasting
|
|
5
5
|
class Adapters
|
6
6
|
extend EvilEvents::Shared::DependencyContainer::Mixin
|
7
7
|
|
8
|
-
register
|
9
|
-
register
|
8
|
+
register(:memory_sync) { Adapters::MemorySync }
|
9
|
+
register(:memory_async) { Adapters::MemoryAsync }
|
10
10
|
end
|
11
11
|
end
|
@@ -10,7 +10,7 @@ module EvilEvents::Core::Broadcasting
|
|
10
10
|
#
|
11
11
|
# @since 0.1.0
|
12
12
|
def dispatch(event) # Broadcast
|
13
|
-
EvilEvents::BootPoint
|
13
|
+
EvilEvents::BootPoint[:event_system].manager_of_event(event).notify(event)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -7,11 +7,18 @@ module EvilEvents::Core::Broadcasting
|
|
7
7
|
# @since 0.1.0
|
8
8
|
include EvilEvents::Core::ActivityLogging
|
9
9
|
|
10
|
+
# @since 0.1.0
|
11
|
+
EmitterError = Class.new(StandardError)
|
12
|
+
# @since 0.1.0
|
13
|
+
IncorrectEventError = Class.new(EmitterError)
|
14
|
+
|
10
15
|
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
16
|
+
# @raise [IncorrectEventError]
|
11
17
|
# @return void
|
12
18
|
#
|
13
19
|
# @since 0.1.0
|
14
20
|
def emit(event)
|
21
|
+
raise IncorrectEventError unless event.is_a?(EvilEvents::Core::Events::AbstractEvent)
|
15
22
|
log_emitter_activity(event)
|
16
23
|
event.adapter.call(event)
|
17
24
|
end
|
@@ -22,7 +29,7 @@ module EvilEvents::Core::Broadcasting
|
|
22
29
|
#
|
23
30
|
# @since 0.1.0
|
24
31
|
def raw_emit(event_type, **event_attributes)
|
25
|
-
event_object = EvilEvents::BootPoint
|
32
|
+
event_object = EvilEvents::BootPoint[:event_system].resolve_event_object(
|
26
33
|
event_type,
|
27
34
|
**event_attributes
|
28
35
|
)
|
@@ -39,7 +46,8 @@ module EvilEvents::Core::Broadcasting
|
|
39
46
|
def log_emitter_activity(event)
|
40
47
|
activity = "EventEmitted(#{event.adapter_name})"
|
41
48
|
message = "Type: #{event.type} :: Payload: #{event.payload}"
|
42
|
-
|
49
|
+
|
50
|
+
log_activity(activity: activity, message: message)
|
43
51
|
end
|
44
52
|
end
|
45
53
|
end
|
@@ -4,7 +4,7 @@ module EvilEvents::Core
|
|
4
4
|
# @since 0.1.0
|
5
5
|
module Broadcasting
|
6
6
|
require_relative 'broadcasting/dispatcher'
|
7
|
-
require_relative 'broadcasting/dispatcher/
|
7
|
+
require_relative 'broadcasting/dispatcher/mixin'
|
8
8
|
require_relative 'broadcasting/adapters'
|
9
9
|
require_relative 'broadcasting/adapters/memory_sync'
|
10
10
|
require_relative 'broadcasting/adapters/memory_async'
|
@@ -18,12 +18,15 @@ module EvilEvents::Core::Events
|
|
18
18
|
# @since 0.1.0
|
19
19
|
include EventExtensions::Serializable
|
20
20
|
# @since 0.1.0
|
21
|
+
include EventExtensions::Emittable
|
22
|
+
# @since 0.1.0
|
21
23
|
extend EvilEvents::Shared::CombinedContextMixin
|
22
24
|
|
23
25
|
# @param payload_attributes [Hash]
|
24
26
|
#
|
25
27
|
# @since 0.1.0
|
26
28
|
def initialize(**payload_attributes)
|
29
|
+
@uuid = SecureRandom.uuid # TODO: cover with a spec (uuid belongs to metadata)
|
27
30
|
@payload = payload_class.new(**payload_attributes)
|
28
31
|
end
|
29
32
|
|
@@ -38,7 +41,7 @@ module EvilEvents::Core::Events
|
|
38
41
|
#
|
39
42
|
# @since 0.1.0
|
40
43
|
def emit
|
41
|
-
EvilEvents::BootPoint
|
44
|
+
EvilEvents::BootPoint[:event_system].emit(self)
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
@@ -7,7 +7,7 @@ module EvilEvents::Core::Events
|
|
7
7
|
class << self
|
8
8
|
# @param event_type [String]
|
9
9
|
# @raise [EvilEvents::Core::Events::ManagerRegistry::AlreadyManagedEventClassError]
|
10
|
-
# @return [AbstractEvent]
|
10
|
+
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
11
11
|
#
|
12
12
|
# @since 0.1.0
|
13
13
|
def create_abstract(event_type)
|
@@ -16,15 +16,11 @@ module EvilEvents::Core::Events
|
|
16
16
|
|
17
17
|
class << klass
|
18
18
|
def inherited(child_class)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
raise
|
25
|
-
end
|
26
|
-
|
27
|
-
super
|
19
|
+
child_class.type(type)
|
20
|
+
child_class.manage!
|
21
|
+
rescue EvilEvents::Core::Events::ManagerRegistry::AlreadyManagedEventClassError
|
22
|
+
EvilEvents::BootPoint[:event_system].unregister_event_class(child_class)
|
23
|
+
raise
|
28
24
|
end
|
29
25
|
end
|
30
26
|
end
|
@@ -34,7 +30,7 @@ module EvilEvents::Core::Events
|
|
34
30
|
# @param event_class_definitions [Proc]
|
35
31
|
# @yield [AbstractEvent]
|
36
32
|
# @raise [EvilEvents::Core::Events::ManagerRegistry::AlreadyManagedEventClassError]
|
37
|
-
# @return [AbstractEvent]
|
33
|
+
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
38
34
|
#
|
39
35
|
# @since 0.1.0
|
40
36
|
def create(event_type, &event_class_definitions)
|
@@ -44,7 +40,7 @@ module EvilEvents::Core::Events
|
|
44
40
|
klass.manage!
|
45
41
|
klass.evaluate(&event_class_definitions) if block_given?
|
46
42
|
rescue EvilEvents::Core::Events::ManagerRegistry::AlreadyManagedEventClassError
|
47
|
-
EvilEvents::BootPoint
|
43
|
+
EvilEvents::BootPoint[:event_system].unregister_event_class(klass)
|
48
44
|
raise
|
49
45
|
end
|
50
46
|
end
|
@@ -35,14 +35,14 @@ module EvilEvents::Core::Events::EventExtensions
|
|
35
35
|
# @since 0.1.0
|
36
36
|
def adapter(identifier = nil)
|
37
37
|
@adapter_identifier = identifier if identifier
|
38
|
-
EvilEvents::BootPoint
|
38
|
+
EvilEvents::BootPoint[:event_system].resolve_adapter(adapter_name)
|
39
39
|
end
|
40
40
|
|
41
41
|
# @return [Symbol, String]
|
42
42
|
#
|
43
43
|
# @since 0.1.0
|
44
44
|
def adapter_name
|
45
|
-
@adapter_identifier || EvilEvents::BootPoint
|
45
|
+
@adapter_identifier || EvilEvents::BootPoint[:config].adapter.default
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -27,7 +27,7 @@ module EvilEvents::Core::Events::EventExtensions
|
|
27
27
|
#
|
28
28
|
# @since 0.1.0
|
29
29
|
def observe(raw_subscriber, delegator: nil)
|
30
|
-
EvilEvents::BootPoint
|
30
|
+
EvilEvents::BootPoint[:event_system].observe(self, raw_subscriber, delegator)
|
31
31
|
end
|
32
32
|
|
33
33
|
# @param delegator [Symbol, String, NilClass]
|
@@ -35,14 +35,14 @@ module EvilEvents::Core::Events::EventExtensions
|
|
35
35
|
# @since 0.1.0
|
36
36
|
def default_delegator(delegator = nil)
|
37
37
|
@default_delegator = delegator if delegator
|
38
|
-
@default_delegator || EvilEvents::BootPoint
|
38
|
+
@default_delegator || EvilEvents::BootPoint[:config].subscriber.default_delegator
|
39
39
|
end
|
40
40
|
|
41
41
|
# @return [Array]
|
42
42
|
#
|
43
43
|
# @since 0.1.0
|
44
44
|
def observers
|
45
|
-
EvilEvents::BootPoint
|
45
|
+
EvilEvents::BootPoint[:event_system].observers(self)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -10,6 +10,7 @@ module EvilEvents::Core::Events::EventExtensions
|
|
10
10
|
def serialize_to_hash
|
11
11
|
EvilEvents::Core::Events::Serializers[:hash].serialize(self)
|
12
12
|
end
|
13
|
+
alias_method :dump_to_hash, :serialize_to_hash
|
13
14
|
|
14
15
|
# @return [String]
|
15
16
|
#
|
@@ -17,5 +18,6 @@ module EvilEvents::Core::Events::EventExtensions
|
|
17
18
|
def serialize_to_json
|
18
19
|
EvilEvents::Core::Events::Serializers[:json].serialize(self)
|
19
20
|
end
|
21
|
+
alias_method :dump_to_json, :serialize_to_json
|
20
22
|
end
|
21
23
|
end
|
@@ -4,12 +4,22 @@ module EvilEvents::Core::Events
|
|
4
4
|
# @api private
|
5
5
|
# @since 0.1.0
|
6
6
|
module ManagerFactory
|
7
|
+
# @since 0.1.0
|
8
|
+
ManagerFactoryError = Class.new(StandardError)
|
9
|
+
# @sicne 0.1.0
|
10
|
+
IncorrectEventClassError = Class.new(ManagerFactoryError)
|
11
|
+
|
7
12
|
class << self
|
8
13
|
# @param event_class [Class{EvilEvents::Core::Events::AbstractEvent}]
|
14
|
+
# @raise [IncorrectEventClassError]
|
9
15
|
# @return [EvilEvents::Core::Events::Manager]
|
10
16
|
#
|
11
17
|
# @since 0.1.0
|
12
18
|
def create(event_class)
|
19
|
+
unless event_class.is_a?(Class) && event_class < EvilEvents::Core::Events::AbstractEvent
|
20
|
+
raise IncorrectEventClassError
|
21
|
+
end
|
22
|
+
|
13
23
|
Manager.new(event_class)
|
14
24
|
end
|
15
25
|
end
|
@@ -29,7 +29,7 @@ class EvilEvents::Core::Events::Serializers
|
|
29
29
|
raise DeserializationError unless event_type && event_payload
|
30
30
|
raise DeserializationError unless event_payload.is_a?(::Hash)
|
31
31
|
|
32
|
-
EvilEvents::BootPoint
|
32
|
+
EvilEvents::BootPoint[:event_system].resolve_event_object(
|
33
33
|
event_type, symbolized_event_payload(event_payload)
|
34
34
|
)
|
35
35
|
end
|
@@ -34,7 +34,7 @@ class EvilEvents::Core::Events::Serializers
|
|
34
34
|
raise DeserializationError
|
35
35
|
end
|
36
36
|
|
37
|
-
EvilEvents::BootPoint
|
37
|
+
EvilEvents::BootPoint[:event_system].resolve_event_object(event_type, event_payload)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -17,9 +17,9 @@ class EvilEvents::Core::Events::Subscriber
|
|
17
17
|
def subscribe_to(event_type, delegator: nil)
|
18
18
|
case event_type
|
19
19
|
when Class
|
20
|
-
EvilEvents::BootPoint
|
20
|
+
EvilEvents::BootPoint[:event_system].observe(event_type, self, delegator)
|
21
21
|
when String
|
22
|
-
EvilEvents::BootPoint
|
22
|
+
EvilEvents::BootPoint[:event_system].raw_observe(event_type, self, delegator)
|
23
23
|
else
|
24
24
|
raise IncompatibleEventAttrTypeError
|
25
25
|
end
|
@@ -13,7 +13,7 @@ module EvilEvents::Core::Events
|
|
13
13
|
# @param delegator_resolver [EvilEvents::Shared::DelegatorResolver]
|
14
14
|
#
|
15
15
|
# @since 0.1.0
|
16
|
-
def initialize(subscriber, delegator_resolver)
|
16
|
+
def initialize(subscriber, delegator_resolver = default_resolver)
|
17
17
|
@subscriber = subscriber
|
18
18
|
@delegator_resolver = delegator_resolver
|
19
19
|
end
|
@@ -39,5 +39,15 @@ module EvilEvents::Core::Events
|
|
39
39
|
def delegator
|
40
40
|
@delegator ||= delegator_resolver.delegator
|
41
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
# @return [EvilEvents::Shared::DelegatorResolver]
|
46
|
+
#
|
47
|
+
# @since 0.1.0
|
48
|
+
def default_resolver
|
49
|
+
delegation = -> { EvilEvents::BootPoint[:config].subscriber.default_delegator }
|
50
|
+
EvilEvents::Shared::DelegatorResolver.new(delegation)
|
51
|
+
end
|
42
52
|
end
|
43
53
|
end
|
@@ -13,6 +13,7 @@ module EvilEvents::Core
|
|
13
13
|
require_relative 'events/event_extensions/adapter_customizable'
|
14
14
|
require_relative 'events/event_extensions/observable'
|
15
15
|
require_relative 'events/event_extensions/serializable'
|
16
|
+
require_relative 'events/event_extensions/emittable'
|
16
17
|
require_relative 'events/abstract_event'
|
17
18
|
require_relative 'events/manager'
|
18
19
|
require_relative 'events/manager/subscriber_list'
|
data/lib/evil_events/core.rb
CHANGED
@@ -81,6 +81,8 @@ module EvilEvents
|
|
81
81
|
__outer_context__.public_send(method_name, *arguments, &block)
|
82
82
|
when __required_context__.respond_to?(method_name)
|
83
83
|
__required_context__.public_send(method_name, *arguments, &block)
|
84
|
+
when ::Kernel.respond_to?(method_name)
|
85
|
+
::Kernel.public_send(method_name, *arguments, &block)
|
84
86
|
else
|
85
87
|
super
|
86
88
|
end
|
data/lib/evil_events/shared.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module EvilEvents
|
4
|
+
# @api public
|
4
5
|
# @since 0.1.0
|
5
6
|
module Shared
|
6
|
-
require_relative 'shared/
|
7
|
+
require_relative 'shared/types'
|
7
8
|
require_relative 'shared/logger'
|
8
|
-
require_relative 'shared/configurable'
|
9
|
-
require_relative 'shared/dependency_container'
|
10
9
|
require_relative 'shared/structure'
|
11
|
-
require_relative 'shared/
|
10
|
+
require_relative 'shared/configurable'
|
12
11
|
require_relative 'shared/combined_context'
|
13
|
-
require_relative 'shared/combined_context_mixin'
|
14
12
|
require_relative 'shared/delegator_resolver'
|
13
|
+
require_relative 'shared/dependency_container'
|
14
|
+
require_relative 'shared/mockable_class_builder'
|
15
|
+
require_relative 'shared/combined_context_mixin'
|
15
16
|
end
|
16
17
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class EvilEvents::System
|
4
|
+
# @api private
|
5
|
+
# @since 0.1.0
|
6
|
+
class Broadcaster
|
7
|
+
# @return [EvilEvents::Core::Broadcasting::Emitter]
|
8
|
+
#
|
9
|
+
# @since 0.1.0
|
10
|
+
attr_reader :event_emitter
|
11
|
+
|
12
|
+
# @since 0.1.0
|
13
|
+
def initialize
|
14
|
+
@event_emitter = EvilEvents::Core::Broadcasting::Emitter.new
|
15
|
+
end
|
16
|
+
|
17
|
+
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
18
|
+
# @return void
|
19
|
+
#
|
20
|
+
# @since 0.1.0
|
21
|
+
def emit(event)
|
22
|
+
event_emitter.emit(event)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @param event_type [String]
|
26
|
+
# @param event_attributes [Hash]
|
27
|
+
# @return void
|
28
|
+
#
|
29
|
+
# @since 0.1.0
|
30
|
+
def raw_emit(event_type, **event_attributes)
|
31
|
+
event_emitter.raw_emit(event_type, **event_attributes)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @param adapter_name [Symbol, String]
|
35
|
+
# @return [EvilEvents::Core::Broadcasting::Dispatcher::Dispatchable]
|
36
|
+
#
|
37
|
+
# @since 0.1.0
|
38
|
+
def resolve_adapter(adapter_name)
|
39
|
+
EvilEvents::Core::Broadcasting::Adapters.resolve(adapter_name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class EvilEvents::System
|
4
|
+
# @api private
|
5
|
+
# @since 0.1.0
|
6
|
+
module EventBuilder
|
7
|
+
class << self
|
8
|
+
# @param event_type [String]
|
9
|
+
# @param event_class_definitions [Proc]
|
10
|
+
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
11
|
+
#
|
12
|
+
# @since 0.1.0
|
13
|
+
def define_event_class(event_type, &event_class_definitions)
|
14
|
+
EvilEvents::Core::Events::EventClassFactory.create(
|
15
|
+
event_type, &event_class_definitions
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param event_type [String]
|
20
|
+
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
21
|
+
#
|
22
|
+
# @since 0.1.0
|
23
|
+
def define_abstract_event_class(event_type)
|
24
|
+
EvilEvents::Core::Events::EventClassFactory.create_abstract(
|
25
|
+
event_type
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class EvilEvents::System
|
4
|
+
# @api private
|
5
|
+
# @since 0.1.0
|
6
|
+
class EventManager
|
7
|
+
# @return [EvilEvents::Core::Events::ManagerRegistry]
|
8
|
+
#
|
9
|
+
# @since 0.1.0
|
10
|
+
attr_reader :manager_registry
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@manager_registry = EvilEvents::Core::Events::ManagerRegistry.new
|
14
|
+
end
|
15
|
+
|
16
|
+
# @param event_class [Class{Evilevents::Core::Events::AbstractEvent}]
|
17
|
+
# @param raw_subscriber [Object]
|
18
|
+
# @param delegator [String, Symbol, NilClass]
|
19
|
+
# @return void
|
20
|
+
#
|
21
|
+
# @since 0.1.0
|
22
|
+
def observe(event_class, raw_subscriber, delegator)
|
23
|
+
manager_registry.manager_of_event(event_class)
|
24
|
+
.observe(raw_subscriber, delegator)
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param event_type [String, Symbol]
|
28
|
+
# @param raw_subscriber [Object]
|
29
|
+
# @param delegator [String, Symbol, NilClass]
|
30
|
+
# @return void
|
31
|
+
#
|
32
|
+
# @since 0.1.0
|
33
|
+
def raw_observe(event_type, raw_subscriber, delegator)
|
34
|
+
manager_registry.manager_of_event_type(event_type)
|
35
|
+
.observe(raw_subscriber, delegator)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @param event_class [Class{EvilEvents::Core::Events::AbstractEvent}]
|
39
|
+
# @return [Array<EvilEvents::Core::Events::Subscriber>]
|
40
|
+
#
|
41
|
+
# @since 0.1.0
|
42
|
+
def observers(event_class)
|
43
|
+
manager_registry.manager_of_event(event_class).subscribers
|
44
|
+
end
|
45
|
+
|
46
|
+
# @param event_class [Class{EvilEvents::Core::Events::AbstractEvent}]
|
47
|
+
# @return void
|
48
|
+
#
|
49
|
+
# @since 0.1.0
|
50
|
+
def register_event_class(event_class)
|
51
|
+
manager_registry.register_with(event_class)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @param event_class [Class{EvilEvents::Core::events::AbstractEvent}]
|
55
|
+
# @return void
|
56
|
+
#
|
57
|
+
# @since 0.1.0
|
58
|
+
def unregister_event_class(event_class)
|
59
|
+
manager_registry.unregister_with(event_class)
|
60
|
+
end
|
61
|
+
|
62
|
+
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
63
|
+
# @return [EvilEvents::Core::Events::Manager]
|
64
|
+
#
|
65
|
+
# @since 0.1.0
|
66
|
+
def manager_of_event(event)
|
67
|
+
manager_registry.manager_of_event(event.class)
|
68
|
+
end
|
69
|
+
|
70
|
+
# @param event_type [String]
|
71
|
+
# @return [EvilEvents::Core::Events::Manager]
|
72
|
+
#
|
73
|
+
# @since 0.1.0
|
74
|
+
def manager_of_event_type(event_type)
|
75
|
+
manager_registry.manager_of_event_type(event_type)
|
76
|
+
end
|
77
|
+
|
78
|
+
# @param event_type [String]
|
79
|
+
# @param event_attributes [Hash]
|
80
|
+
# @return [EvilEvents::Core::Events::AbstractEvent]
|
81
|
+
#
|
82
|
+
# @since 0.1.0
|
83
|
+
def resolve_event_object(event_type, **event_attributes)
|
84
|
+
manager_of_event_type(event_type).event_class.new(**event_attributes)
|
85
|
+
end
|
86
|
+
|
87
|
+
# @param event_class [EvilEvents::Core::Events::AbstractEvent]
|
88
|
+
# @return [Boolean]
|
89
|
+
#
|
90
|
+
# @since 0.1.0
|
91
|
+
def managed_event?(event_class)
|
92
|
+
manager_registry.managed_event?(event_class)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -9,11 +9,11 @@ class EvilEvents::System
|
|
9
9
|
class Mock
|
10
10
|
# @see EvilEvents::System
|
11
11
|
# @since 0.1.0
|
12
|
-
attr_reader :
|
12
|
+
attr_reader :broadcaster
|
13
13
|
|
14
14
|
# @see EvilEvents::System
|
15
15
|
# @since 0.1.0
|
16
|
-
attr_reader :
|
16
|
+
attr_reader :event_manager
|
17
17
|
|
18
18
|
# @see EvilEvents::System
|
19
19
|
# @since 0.1.0
|
@@ -49,7 +49,7 @@ class EvilEvents::System
|
|
49
49
|
|
50
50
|
# @see EvilEvents::System
|
51
51
|
# @since 0.1.0
|
52
|
-
def
|
52
|
+
def manager_of_event(event); end
|
53
53
|
|
54
54
|
# @see EvilEvents::System
|
55
55
|
# @since 0.1.0
|
@@ -66,5 +66,9 @@ class EvilEvents::System
|
|
66
66
|
# @see EvilEvents::System
|
67
67
|
# @since 0.1.0
|
68
68
|
def define_abstract_event_class(event_type); end
|
69
|
+
|
70
|
+
# @see EvilEvents::System
|
71
|
+
# @since 0.1.0
|
72
|
+
def managed_event?(event_class); end
|
69
73
|
end
|
70
74
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class EvilEvents::System
|
4
|
+
# @api private
|
5
|
+
# @since 0.1.0
|
6
|
+
module Mocking
|
7
|
+
class << self
|
8
|
+
# @param base_class [EvilEvents::System]
|
9
|
+
#
|
10
|
+
# @since 0.1.0
|
11
|
+
def included(base_class)
|
12
|
+
base_class.extend(ClassMethods)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# @since 0.1.0
|
17
|
+
module ClassMethods
|
18
|
+
# @return [EvilEvents::System::Mock]
|
19
|
+
#
|
20
|
+
# @since 0.1.0
|
21
|
+
def build_mock
|
22
|
+
Mock.new
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [EvilEvents::System]
|
26
|
+
#
|
27
|
+
# @since 0.1.0
|
28
|
+
def build_stub
|
29
|
+
new
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/evil_events/system.rb
CHANGED
@@ -3,147 +3,56 @@
|
|
3
3
|
# @api private
|
4
4
|
# @since 0.1.0
|
5
5
|
class EvilEvents::System
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
Mock.new
|
12
|
-
end
|
13
|
-
|
14
|
-
# @return [EvilEvents::System]
|
15
|
-
#
|
16
|
-
# @since 0.1.0
|
17
|
-
def build_stub
|
18
|
-
new
|
19
|
-
end
|
20
|
-
end
|
6
|
+
require_relative 'system/mock'
|
7
|
+
require_relative 'system/mocking'
|
8
|
+
require_relative 'system/broadcaster'
|
9
|
+
require_relative 'system/event_builder'
|
10
|
+
require_relative 'system/event_manager'
|
21
11
|
|
22
12
|
# @since 0.1.0
|
23
|
-
|
24
|
-
|
13
|
+
extend Forwardable
|
25
14
|
# @since 0.1.0
|
26
|
-
|
15
|
+
include Mocking
|
27
16
|
|
17
|
+
# @see EvilEvents::System::Broadcaster
|
28
18
|
# @since 0.1.0
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
19
|
+
def_delegators :broadcaster,
|
20
|
+
:emit,
|
21
|
+
:raw_emit,
|
22
|
+
:resolve_adapter
|
33
23
|
|
34
|
-
# @
|
35
|
-
# @param raw_subscriber [Object]
|
36
|
-
# @param delegator [String, Symbol, NilClass]
|
37
|
-
# @return void
|
38
|
-
#
|
24
|
+
# @see EvilEvents::System::EventManager
|
39
25
|
# @since 0.1.0
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
26
|
+
def_delegators :event_manager,
|
27
|
+
:observe,
|
28
|
+
:raw_observe,
|
29
|
+
:observers,
|
30
|
+
:register_event_class,
|
31
|
+
:unregister_event_class,
|
32
|
+
:manager_of_event,
|
33
|
+
:manager_of_event_type,
|
34
|
+
:resolve_event_object,
|
35
|
+
:managed_event?
|
44
36
|
|
45
|
-
# @
|
46
|
-
# @param raw_subscriber [Object]
|
47
|
-
# @param delegator [String, Symbol, NilClass]
|
48
|
-
# @return void
|
49
|
-
#
|
37
|
+
# @see EvilEvents::System::EventBuilder
|
50
38
|
# @since 0.1.0
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
39
|
+
def_delegators 'EvilEvents::System::EventBuilder',
|
40
|
+
:define_event_class,
|
41
|
+
:define_abstract_event_class
|
55
42
|
|
56
|
-
# @
|
57
|
-
# @return [Array<EvilEvents::Core::Events::Subscriber>]
|
43
|
+
# @return [EvilEvents::System::Broadcaster]
|
58
44
|
#
|
59
45
|
# @since 0.1.0
|
60
|
-
|
61
|
-
manager_registry.manager_of_event(event_class).subscribers
|
62
|
-
end
|
46
|
+
attr_reader :broadcaster
|
63
47
|
|
64
|
-
# @
|
65
|
-
# @return void
|
48
|
+
# @return [EvilEvents::System::EventManager]
|
66
49
|
#
|
67
50
|
# @since 0.1.0
|
68
|
-
|
69
|
-
event_emitter.emit(event)
|
70
|
-
end
|
51
|
+
attr_reader :event_manager
|
71
52
|
|
72
|
-
# @param event_type [String]
|
73
|
-
# @param event_attributes [Hash]
|
74
|
-
# @return void
|
75
|
-
#
|
76
53
|
# @since 0.1.0
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
# @param adapter_name [Symbol, String]
|
82
|
-
# @return [EvilEvents::Core::Broadcasting::Dispatcher::Dispatchable]
|
83
|
-
#
|
84
|
-
# @since 0.1.0
|
85
|
-
def resolve_adapter(adapter_name)
|
86
|
-
EvilEvents::Core::Broadcasting::Adapters.resolve(adapter_name)
|
87
|
-
end
|
88
|
-
|
89
|
-
# @param event_class [Class{EvilEvents::Core::Events::AbstractEvent}]
|
90
|
-
# @return void
|
91
|
-
#
|
92
|
-
# @since 0.1.0
|
93
|
-
def register_event_class(event_class)
|
94
|
-
manager_registry.register_with(event_class)
|
95
|
-
end
|
96
|
-
|
97
|
-
# @param event_class [Class{EvilEvents::Core::events::AbstractEvent}]
|
98
|
-
# @return void
|
99
|
-
#
|
100
|
-
# @since 0.1.0
|
101
|
-
def unregister_event_class(event_class)
|
102
|
-
manager_registry.unregister_with(event_class)
|
103
|
-
end
|
104
|
-
|
105
|
-
# @param event [EvilEvents::Core::Events::AbstractEvent]
|
106
|
-
# @return [EvilEvents::Core::Events::Manager]
|
107
|
-
#
|
108
|
-
# @since 0.1.0
|
109
|
-
def manager_of_event(event)
|
110
|
-
manager_registry.manager_of_event(event.class)
|
111
|
-
end
|
112
|
-
|
113
|
-
# @param event_type [String]
|
114
|
-
# @return [EvilEvents::Core::Events::Manager]
|
115
|
-
#
|
116
|
-
# @since 0.1.0
|
117
|
-
def manager_of_event_type(event_type)
|
118
|
-
manager_registry.manager_of_event_type(event_type)
|
119
|
-
end
|
120
|
-
|
121
|
-
# @param event_type [String]
|
122
|
-
# @param event_attributes [Hash]
|
123
|
-
# @return [EvilEvents::Core::Events::AbstractEvent]
|
124
|
-
#
|
125
|
-
# @since 0.1.0
|
126
|
-
def resolve_event_object(event_type, **event_attributes)
|
127
|
-
manager_of_event_type(event_type).event_class.new(**event_attributes)
|
128
|
-
end
|
129
|
-
|
130
|
-
# @param event_class_definitions [Proc]
|
131
|
-
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
132
|
-
#
|
133
|
-
# @since 0.1.0
|
134
|
-
def define_event_class(event_type, &event_class_definitions)
|
135
|
-
EvilEvents::Core::Events::EventClassFactory.create(
|
136
|
-
event_type, &event_class_definitions
|
137
|
-
)
|
138
|
-
end
|
139
|
-
|
140
|
-
# @param event_type [String]
|
141
|
-
# @return [Class{EvilEvents::Core::Events::AbstractEvent}]
|
142
|
-
#
|
143
|
-
# @since 0.1.0
|
144
|
-
def define_abstract_event_class(event_type)
|
145
|
-
EvilEvents::Core::Events::EventClassFactory.create_abstract(
|
146
|
-
event_type
|
147
|
-
)
|
54
|
+
def initialize
|
55
|
+
@broadcaster = Broadcaster.new
|
56
|
+
@event_manager = EventManager.new
|
148
57
|
end
|
149
58
|
end
|
data/lib/evil_events/version.rb
CHANGED
data/lib/evil_events.rb
CHANGED
@@ -4,7 +4,8 @@ require 'dry-configurable'
|
|
4
4
|
require 'dry-container'
|
5
5
|
require 'dry-struct'
|
6
6
|
require 'dry-types'
|
7
|
-
require 'concurrent'
|
7
|
+
require 'concurrent/array'
|
8
|
+
require 'concurrent/map'
|
8
9
|
require 'logger'
|
9
10
|
require 'json'
|
10
11
|
|
@@ -14,7 +15,6 @@ module EvilEvents
|
|
14
15
|
require_relative 'evil_events/shared'
|
15
16
|
require_relative 'evil_events/core'
|
16
17
|
require_relative 'evil_events/system'
|
17
|
-
require_relative 'evil_events/system/mock'
|
18
18
|
require_relative 'evil_events/config'
|
19
19
|
require_relative 'evil_events/boot_point'
|
20
20
|
require_relative 'evil_events/version'
|
@@ -27,7 +27,7 @@ module EvilEvents
|
|
27
27
|
# @api public
|
28
28
|
# @since 0.1.0
|
29
29
|
def [](event_type)
|
30
|
-
EvilEvents::BootPoint
|
30
|
+
EvilEvents::BootPoint[:event_system].define_abstract_event_class(
|
31
31
|
event_type
|
32
32
|
)
|
33
33
|
end
|
@@ -36,7 +36,7 @@ module EvilEvents
|
|
36
36
|
# @api public
|
37
37
|
# @since 0.1.0
|
38
38
|
def define_event(event_type, &event_class_definitions)
|
39
|
-
EvilEvents::BootPoint
|
39
|
+
EvilEvents::BootPoint[:event_system].define_event_class(
|
40
40
|
event_type, &event_class_definitions
|
41
41
|
)
|
42
42
|
end
|
@@ -45,7 +45,7 @@ module EvilEvents
|
|
45
45
|
# @api public
|
46
46
|
# @since 0.1.0
|
47
47
|
def emit(event_type, **event_attributes)
|
48
|
-
EvilEvents::BootPoint
|
48
|
+
EvilEvents::BootPoint[:event_system].raw_emit(
|
49
49
|
event_type, **event_attributes
|
50
50
|
)
|
51
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evil_events
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.0rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rustam Ibragimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-types
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.0.5
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: coveralls
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.7.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.7.2
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pry
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - '='
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: 0.15.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: simplecov-json
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.2'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.2'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: rubocop
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,6 +218,7 @@ files:
|
|
190
218
|
- ".rubocop.yml"
|
191
219
|
- ".travis.yml"
|
192
220
|
- ".yardopts"
|
221
|
+
- CHANGELOG.md
|
193
222
|
- CODE_OF_CONDUCT.md
|
194
223
|
- Gemfile
|
195
224
|
- LICENSE.txt
|
@@ -208,12 +237,13 @@ files:
|
|
208
237
|
- lib/evil_events/core/broadcasting/adapters/memory_async.rb
|
209
238
|
- lib/evil_events/core/broadcasting/adapters/memory_sync.rb
|
210
239
|
- lib/evil_events/core/broadcasting/dispatcher.rb
|
211
|
-
- lib/evil_events/core/broadcasting/dispatcher/
|
240
|
+
- lib/evil_events/core/broadcasting/dispatcher/mixin.rb
|
212
241
|
- lib/evil_events/core/broadcasting/emitter.rb
|
213
242
|
- lib/evil_events/core/events.rb
|
214
243
|
- lib/evil_events/core/events/abstract_event.rb
|
215
244
|
- lib/evil_events/core/events/event_class_factory.rb
|
216
245
|
- lib/evil_events/core/events/event_extensions/adapter_customizable.rb
|
246
|
+
- lib/evil_events/core/events/event_extensions/emittable.rb
|
217
247
|
- lib/evil_events/core/events/event_extensions/manageable.rb
|
218
248
|
- lib/evil_events/core/events/event_extensions/observable.rb
|
219
249
|
- lib/evil_events/core/events/event_extensions/payloadable.rb
|
@@ -240,7 +270,11 @@ files:
|
|
240
270
|
- lib/evil_events/shared/structure.rb
|
241
271
|
- lib/evil_events/shared/types.rb
|
242
272
|
- lib/evil_events/system.rb
|
273
|
+
- lib/evil_events/system/broadcaster.rb
|
274
|
+
- lib/evil_events/system/event_builder.rb
|
275
|
+
- lib/evil_events/system/event_manager.rb
|
243
276
|
- lib/evil_events/system/mock.rb
|
277
|
+
- lib/evil_events/system/mocking.rb
|
244
278
|
- lib/evil_events/version.rb
|
245
279
|
homepage: https://github.com/ergosploit/evil_events
|
246
280
|
licenses:
|