state_inspector 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/lib/state_inspector/helper.rb +2 -2
- data/lib/state_inspector/reporter.rb +10 -2
- data/lib/state_inspector/version.rb +1 -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: 72700c70c4a6ff8411cc8d3d4188833605c87e62
|
4
|
+
data.tar.gz: e10277112555d4e16efaf567058e9c2734c2dc7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62c55544741697c23ae00f3eeeb2db4e58b857bf2aeddf5d7ad96789ff97195843a980ad28c150593c294c58205276b451a4f503672f51c43251f7899a68463c
|
7
|
+
data.tar.gz: 2989ba2193539f42d838985208ff4f4b9506b3bf1758a0904c0d819e9221402e8a8a163200e09bf6754aed5ab34f910f94d869a9d390f4c022018a6437a99a0b
|
data/README.md
CHANGED
@@ -119,6 +119,15 @@ use `state_inspector.skip_setter_snoops` (before any toggling) or the helper `to
|
|
119
119
|
will cleanly remove its anti-setter hook once done (meaning the next `toggle_informant` will inject the
|
120
120
|
informant code into all setters).
|
121
121
|
|
122
|
+
The helper block also pipes in the current observer for the object you're toggling. So you may access
|
123
|
+
it within the block by pipe assigning it to a variable.
|
124
|
+
|
125
|
+
```ruby
|
126
|
+
toggle_snoop(m) do |observer|
|
127
|
+
observer # Whatever observer happens to be assigned to this object or its class
|
128
|
+
end
|
129
|
+
|
130
|
+
```
|
122
131
|
|
123
132
|
## Observers
|
124
133
|
|
@@ -12,7 +12,7 @@ module StateInspector
|
|
12
12
|
Reporter[obj] = observer
|
13
13
|
end
|
14
14
|
obj.toggle_informant
|
15
|
-
value = yield Reporter
|
15
|
+
value = yield Reporter.get(obj)
|
16
16
|
ensure
|
17
17
|
obj.toggle_informant
|
18
18
|
(old_observer.nil? ? Reporter.drop(obj) : Reporter[obj] = old_observer) if observer
|
@@ -26,7 +26,7 @@ module StateInspector
|
|
26
26
|
Reporter[obj] = observer
|
27
27
|
end
|
28
28
|
obj.toggle_informant
|
29
|
-
value = yield Reporter
|
29
|
+
value = yield Reporter.get(obj)
|
30
30
|
ensure
|
31
31
|
obj.toggle_informant
|
32
32
|
si = obj.respond_to?(:class_exec) ? obj : obj.class
|
@@ -18,8 +18,16 @@ module StateInspector
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def has_observer? key
|
21
|
-
|
22
|
-
|
21
|
+
reporters.has_key?(key) || (reporters.has_key?(key.class) if key.respond_to?(:class_exec))
|
22
|
+
end
|
23
|
+
|
24
|
+
def get key
|
25
|
+
unless key.respond_to?(:class_exec)
|
26
|
+
unless reporters.has_key?(key)
|
27
|
+
return self[key.class]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
self[key]
|
23
31
|
end
|
24
32
|
|
25
33
|
def drop key
|