low_event 0.5.0 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c63adedbf6028a0a6c3e15620d5ea736ba53961d318b22ab44d6bc5d75b853b3
4
- data.tar.gz: 7956e7c903e68097c74d5eb41a706b8948ed0b98dea333748b3caec15786e890
3
+ metadata.gz: 7ce2e06fbf3ed01693a0ea9d8debd51bb06728cede50512fc2900aceea3cd34e
4
+ data.tar.gz: 1ec225183c4d31f9b8fccacff0aefc10ae47f83bbefced301d21e4af5d81ed7b
5
5
  SHA512:
6
- metadata.gz: 9c801ef8056b37fea3559da0c9f2729b3c955bf08fd7b430691ea66504a98061d890754d6d1eff7be2173e4ee1a83913eec151902ca2bce4f64da11b6da8e3a4
7
- data.tar.gz: 7c801efafc85f09105f91fc3961988304b6c3646f01a30d45cceed0236bf5e20750f91d03cae4958d209a90269f254800d21bbfe55170f3bfe03a419ea32334b
6
+ metadata.gz: 5a35fa062bb378c0485cec1ab5713cbadfd93374628630342458d0570008ca43bf9638d1913312257c35a8204e6a8e4ee4964ada8cbbe4717435719e36487b42
7
+ data.tar.gz: 2135cae6a7b1d6fb4709f328aeec00e5d6d6da7b667707eda3e8af8b2fac968d2dc182c382ea9c3a48675a4062d9dc2276361604b9cfc3b0f8e62d57f5f069cf
@@ -18,7 +18,7 @@ module Low
18
18
 
19
19
  def trigger
20
20
  event_tree = branch
21
- key = Observers[@key]
21
+ key = Observers::Keys[@key]
22
22
  key.trigger(event: self) { restore_level(event_tree:) }
23
23
  end
24
24
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'event'
3
+ require_relative '../interfaces/event'
4
4
 
5
5
  module Low
6
6
  module Events
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'protocol/http'
4
- require_relative 'event'
4
+ require_relative '../interfaces/event'
5
5
 
6
6
  module Low
7
7
  module Events
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'event'
3
+ require_relative '../interfaces/event'
4
4
 
5
5
  module Low
6
6
  module Events
@@ -0,0 +1,15 @@
1
+ module Low
2
+ module Events
3
+ module Definable
4
+ def define(key = self)
5
+ yield observers(key)
6
+ end
7
+
8
+ class << self
9
+ def included(klass)
10
+ klass.extend Definable
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'low_type'
3
4
  require 'observers'
5
+ require_relative 'definable'
4
6
  require_relative '../support/value_object'
5
7
 
6
8
  module Low
@@ -11,16 +13,19 @@ module Low
11
13
  # The result of the previous event is made available to the next event. [UNRELEASED]
12
14
  #
13
15
  # Integrations:
14
- # - Observers for observer pattern via an event-centric API
16
+ # - Observers for observer pattern which we wrap in an event-centric API
15
17
  # - EventPool for a tree of events and their child events
16
18
  # - LowState for state machines to trigger multiple actions [UNLRELEASED]
17
19
  class Event
18
20
  include LowType
21
+ include Observers
22
+ include Events::Definable
19
23
  include Support::ValueObject
20
24
 
21
25
  attr_reader :key, :action, :created_at
22
26
  attr_accessor :children
23
27
 
28
+ # The subclass will provide the key, usually "self.class".
24
29
  def initialize(key:, action: nil, children: [])
25
30
  @key = key
26
31
  @action = action
@@ -30,16 +35,25 @@ module Low
30
35
 
31
36
  def trigger
32
37
  event_tree = branch
33
- key = Observers[@key]
38
+ key = Observers::Keys[@key]
34
39
  key.trigger(event: self) { restore_level(event_tree:) }
35
40
  end
36
41
 
37
42
  def take
38
43
  event_tree = branch
39
- key = Observers[@key]
44
+ key = Observers::Keys[@key]
40
45
  key.take(event: self) { restore_level(event_tree:) }
41
46
  end
42
47
 
48
+ class << self
49
+ def trigger(**kwargs) = new(**kwargs).trigger
50
+ def take(**kwargs) = new(**kwargs).take
51
+
52
+ def inherited(child)
53
+ child.include LowType
54
+ end
55
+ end
56
+
43
57
  private
44
58
 
45
59
  def branch
@@ -50,19 +64,5 @@ module Low
50
64
  def restore_level(event_tree:)
51
65
  event_tree.current_event = self if event_tree.respond_to?(:current_event)
52
66
  end
53
-
54
- class << self
55
- def trigger(**kwargs)
56
- new(**kwargs).trigger
57
- end
58
-
59
- def take(**kwargs)
60
- new(**kwargs).take
61
- end
62
-
63
- def inherited(child)
64
- child.include LowType
65
- end
66
- end
67
67
  end
68
68
  end
data/lib/low_event.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'low_type'
4
- require 'observers'
5
3
  require 'providers'
6
4
 
7
- require_relative 'events/event'
8
5
  require_relative 'events/render_event'
9
6
  require_relative 'events/request_event'
10
7
  require_relative 'events/response_event'
11
8
  require_relative 'events/status_event'
12
9
  require_relative 'factories/response_factory' # TODO: Find out who's using this and require it there.
10
+ require_relative 'interfaces/event'
13
11
  require_relative 'pool/event_pool'
14
12
 
15
13
  Providers.define('low.event.pool') do
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Low
4
- EVENT_VERSION = '0.5.0'
4
+ EVENT_VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: low_event
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -72,13 +72,14 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
- - lib/events/event.rb
76
75
  - lib/events/hidden_event.rb
77
76
  - lib/events/render_event.rb
78
77
  - lib/events/request_event.rb
79
78
  - lib/events/response_event.rb
80
79
  - lib/events/status_event.rb
81
80
  - lib/factories/response_factory.rb
81
+ - lib/interfaces/definable.rb
82
+ - lib/interfaces/event.rb
82
83
  - lib/low_event.rb
83
84
  - lib/pool/branch_event.rb
84
85
  - lib/pool/event_pool.rb