callbacks_attachable 2.0.0 → 2.1.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 +4 -4
- data/mrblib/callback.rb +12 -3
- data/mrblib/callbacks_attachable.rb +35 -14
- data/mrblib/error.rb +3 -0
- data/mrblib/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b8373eec469ec47043effaea07261ecdd3412ed
|
4
|
+
data.tar.gz: 0c5df404017b52496a0649dfc7f615a19ad7ee73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b033254d2951e81ea83199e368035002986d9f79cd6cbd45846d6474d368230dd5ca9bc638a1c13f4adf93da498dbab2e9ac5833295a39089d69bc0e392f7cc7
|
7
|
+
data.tar.gz: f4bc19cc785307178bb9e5a6c8374a51ee6047e998e73607a1d37093fc565e22b121cd5c2645ad142d532ae3e209053b749ccb66a646c4988d24ce76b7844e0d
|
data/mrblib/callback.rb
CHANGED
@@ -6,6 +6,7 @@ module CallbacksAttachable
|
|
6
6
|
@call_condition = opts.fetch(:if, false)
|
7
7
|
@cancel_condition = opts.fetch(:until, false)
|
8
8
|
@callback = callback
|
9
|
+
@canceled = false
|
9
10
|
end
|
10
11
|
|
11
12
|
def call(instance, args)
|
@@ -19,9 +20,17 @@ module CallbacksAttachable
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def cancel
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
if @canceled
|
24
|
+
raise Error, 'already canceled'
|
25
|
+
else
|
26
|
+
@registry.deregister @event, self
|
27
|
+
@on_cancel.call if @on_cancel
|
28
|
+
@canceled = true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def canceled?
|
33
|
+
@canceled
|
25
34
|
end
|
26
35
|
end
|
27
36
|
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
module CallbacksAttachable
|
2
2
|
module RegistryOwnable
|
3
|
+
def extended(object)
|
4
|
+
object.singleton_class.extend RegistryOwnable
|
5
|
+
end
|
6
|
+
|
3
7
|
def on(event, opts = {}, &callback)
|
4
8
|
__callbacks__.register(event, opts, callback)
|
5
9
|
end
|
@@ -9,32 +13,49 @@ module CallbacksAttachable
|
|
9
13
|
end
|
10
14
|
|
11
15
|
def on?(event)
|
12
|
-
__callbacks__.registered? event
|
16
|
+
@__callbacks__ ? (@__callbacks__.registered? event) : false
|
17
|
+
end
|
18
|
+
|
19
|
+
def trigger(event, *args)
|
20
|
+
ObjectSpace.each_object(self).each do |inst|
|
21
|
+
trigger_for_instance(inst, event, args)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def trigger_for_instance(inst, event, args)
|
26
|
+
if superclass.respond_to? :trigger_for_instance
|
27
|
+
superclass.trigger_for_instance(inst, event, args)
|
28
|
+
end
|
29
|
+
@__callbacks__ and @__callbacks__.trigger(inst, event, args)
|
30
|
+
:triggered
|
13
31
|
end
|
14
32
|
|
15
|
-
|
16
|
-
@__callbacks__ ||= CallbackRegistry.new
|
33
|
+
def __callbacks__
|
34
|
+
@__callbacks__ ||= CallbackRegistry.new self
|
17
35
|
end
|
18
36
|
end
|
19
37
|
|
20
|
-
|
38
|
+
def self.extended(object)
|
39
|
+
object.singleton_class.extend RegistryOwnable
|
40
|
+
end
|
21
41
|
|
22
42
|
def self.included(klass)
|
23
|
-
klass.extend
|
43
|
+
klass.extend RegistryOwnable
|
24
44
|
end
|
25
45
|
|
26
|
-
|
27
|
-
|
46
|
+
def on(*args, &callback)
|
47
|
+
singleton_class.on *args, &callback
|
48
|
+
end
|
28
49
|
|
29
|
-
|
30
|
-
|
31
|
-
|
50
|
+
def once_on(event, opts = {}, &callback)
|
51
|
+
on(event, opts.merge(until: proc{ true }), &callback)
|
52
|
+
end
|
53
|
+
|
54
|
+
def on?(event)
|
55
|
+
singleton_class.on? event
|
32
56
|
end
|
33
57
|
|
34
58
|
def trigger(event, *args)
|
35
|
-
|
36
|
-
@class_callbacks.trigger(self, event, args)
|
37
|
-
@__callbacks__ and @__callbacks__.trigger(self, event, args)
|
38
|
-
true
|
59
|
+
singleton_class.trigger_for_instance(self, event, args)
|
39
60
|
end
|
40
61
|
end
|
data/mrblib/error.rb
ADDED
data/mrblib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: callbacks_attachable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Aue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- mrblib/callback.rb
|
73
73
|
- mrblib/callback_registry.rb
|
74
74
|
- mrblib/callbacks_attachable.rb
|
75
|
+
- mrblib/error.rb
|
75
76
|
- mrblib/version.rb
|
76
77
|
homepage: https://github.com/christopheraue/m-ruby-callbacks_attachable
|
77
78
|
licenses:
|