ribbon-plugins 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ribbon/plugins/around_stack.rb +14 -1
- data/lib/ribbon/plugins/version.rb +1 -1
- data/lib/ribbon/plugins.rb +3 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf4947ad31a06c8efa7a9327d44bee7dfdec5d14
|
4
|
+
data.tar.gz: 9bb844a020b92fb3eb2b9139fdaba188655018b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea53501e2018f3c80b96072654a1a3129ff3f75404b7de9687a37ae9483ef31180d47a40fe8763ccb8ede31cc3c148b308e3323f305e756e107b3b57fa8f0a6
|
7
|
+
data.tar.gz: ad3eec6fedac66772257671af6013e56eee18672aebab3f3496fd32ef734eac3cb43c8b87a43cb68ca17be5559d8bb58c0bf7183e21540fdc3d20eb846f4f2ee
|
@@ -24,6 +24,11 @@ class Ribbon::Plugins
|
|
24
24
|
|
25
25
|
outer_most = call_stack.pop
|
26
26
|
outer_most.call(call_stack, *args)
|
27
|
+
|
28
|
+
# This shouldn't happen unless the AroundStack isn't functioning properly.
|
29
|
+
raise Errors::Error, "Block passed was not called!" unless inner_most.called?
|
30
|
+
|
31
|
+
inner_most.retval
|
27
32
|
end
|
28
33
|
|
29
34
|
class AroundWrapper
|
@@ -49,14 +54,22 @@ class Ribbon::Plugins
|
|
49
54
|
|
50
55
|
class WrappedBlock
|
51
56
|
attr_reader :block
|
57
|
+
attr_reader :retval
|
52
58
|
|
53
59
|
def initialize(&block)
|
54
60
|
@block = block
|
55
61
|
end
|
56
62
|
|
63
|
+
def called?
|
64
|
+
!!@_called
|
65
|
+
end
|
66
|
+
|
57
67
|
def call(call_stack, *args)
|
58
68
|
raise Errors::Error, 'receiving non-empty call stack' unless call_stack.empty?
|
59
|
-
block.call(*args)
|
69
|
+
block.call(*args).tap { |retval|
|
70
|
+
@retval = retval
|
71
|
+
@_called = true
|
72
|
+
}
|
60
73
|
end
|
61
74
|
end
|
62
75
|
end # AroundStack
|
data/lib/ribbon/plugins.rb
CHANGED