state_inspector 1.0.4 → 1.0.5

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
  SHA1:
3
- metadata.gz: 91d767ee5f26bb5a8d1ac2fe4020ce0740e53f56
4
- data.tar.gz: b32d13e6c904410ea7ec8dd58526f3443ec2a372
3
+ metadata.gz: 72700c70c4a6ff8411cc8d3d4188833605c87e62
4
+ data.tar.gz: e10277112555d4e16efaf567058e9c2734c2dc7c
5
5
  SHA512:
6
- metadata.gz: a07daae821a47633196917e6f92370928b508fed1878fe8a7943d93abc0cc19ef49bbc0451ca8a4e245b9006c7787f6584707de1912de0180d714d4f259a3c90
7
- data.tar.gz: f2655063826c0b80f2c4b49cb17f693f5dffd70e41fecf0a631b3a78dd1243ca8288ce31035a8f1b772d205db0196b5bf7d62eeeec6bc8efda0c20435b926801
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[obj]
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[obj]
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
- class_key = key.respond_to?(:class_exec) ? key : key.class
22
- reporters.has_key?(key) || reporters.has_key?(class_key)
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
@@ -1,3 +1,3 @@
1
1
  module StateInspector
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel P. Clark