core-event 0.1.0 → 0.2.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: b0d60d72742e912882a23542ac744eae69448cf94622ccdc3c7229241e0963a6
4
- data.tar.gz: 25d56626e04b153524515122204fd2270dbec0bb7467c259ed66b26726ff6e1e
3
+ metadata.gz: 739c47b481fdec959e56fea3cc8c9237c57f234d2e4c62623dffa73acb82b2da
4
+ data.tar.gz: 1ba1b84dae588284b71b208bf5cf6cb08786b97948f315f3096fdce70353d1e4
5
5
  SHA512:
6
- metadata.gz: 68661f7866444ff3a0255dc96b837d6b7115ce478bf449890d840a461ea000673d7e7b919d78f2e681de79c031db4d6243ab0b6f01f0f5445570b46511aa31c0
7
- data.tar.gz: 6911ce75330056d954ef30ceabf67bd93a6a4dfe82160f0c83a168fa11883c5f375a2e33afcfe1239be3d26d45553fe8a0e9e773eaeb6f31c3dcc1189192263b
6
+ metadata.gz: 562048680c429a521b545e3dff895d449c32f249ccb9e73b4e72ec884d19463f4204b50a17e159a49111b3bfbeb0e9af3c7d38a10edb8aa62c5c311bcc166aba
7
+ data.tar.gz: 9961c12afde7c84f45e81ff7c081c9cdd81b4b2a9b1fc4a7b27f352111885bc2bf64a1e3346b439562d0745f5abd5cf2e03dd3421471c586cc06ffa41e4ce996
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [v0.2.0](https://github.com/metabahn/corerb/releases/tag/2021-11-03)
2
+
3
+ *released on 2021-11-03*
4
+
5
+ * `fix` [#101](https://github.com/metabahn/corerb/pull/101) Prevent unnecessary recompiles of the event pipeline ([bryanp](https://github.com/bryanp))
6
+ * `add` [#100](https://github.com/metabahn/corerb/pull/100) Add a finalizer to the event pipeline ([bryanp](https://github.com/bryanp))
7
+
1
8
  ## [v0.1.0](https://github.com/metabahn/corerb/releases/tag/2021-10-24)
2
9
 
3
10
  *released on 2021-10-24*
@@ -19,6 +19,7 @@ module Core
19
19
  @mutex = Mutex.new
20
20
  @events = []
21
21
  @pipelines = {}
22
+ @compiled = false
22
23
  end
23
24
 
24
25
  def initialize_copy(...)
@@ -81,25 +82,38 @@ module Core
81
82
  # [public] Calls callbacks for the given event with the given arguments.
82
83
  #
83
84
  def performing(object, event, ...)
84
- compile.performing(object, event, ...)
85
+ finalize.performing(object, event, ...)
85
86
  end
86
87
 
87
88
  # [public] Calls before callbacks for the given event with the given arguments.
88
89
  #
89
90
  def starting(object, event, ...)
90
- compile.starting(object, event, ...)
91
+ finalize.starting(object, event, ...)
91
92
  end
92
93
 
93
94
  # [public] Calls after callbacks for the given event with the given arguments.
94
95
  #
95
96
  def finished(object, event, ...)
96
- compile.finished(object, event, ...)
97
+ finalize.finished(object, event, ...)
98
+ end
99
+
100
+ # [public]
101
+ #
102
+ def finalize
103
+ compile
104
+
105
+ self
97
106
  end
98
107
 
99
108
  private def compile
109
+ return if compiled?
110
+
100
111
  instance_eval(Compiler.compile(self), __FILE__, __LINE__ - 1)
112
+ @compiled = true
113
+ end
101
114
 
102
- self
115
+ private def compiled?
116
+ @compiled == true
103
117
  end
104
118
 
105
119
  private def call_callbacks(object, type, event, ...)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Core
4
4
  module Event
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
 
7
7
  def self.version
8
8
  VERSION
data/lib/is/eventable.rb CHANGED
@@ -58,5 +58,15 @@ module Is
58
58
  events.callback(*during, before: before, after: after, method: method, context: context, &block)
59
59
  end
60
60
  end
61
+
62
+ extends :implementation, prepend: true do
63
+ # [public]
64
+ #
65
+ def finalize
66
+ super if defined?(super)
67
+ events.finalize
68
+ self
69
+ end
70
+ end
61
71
  end
62
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: core-event
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Powell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-24 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: core-extension