Sha256: bc18b176bbb562976adcc837486f0ce2007d8dac569d4ed50d4bfda98465b3bd
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
require 'state_inspector' require 'state_inspector/observers' module StateInspector module Helper def self.included(base) base.include Observers end def toggle_snoop(obj, observer=nil) if observer old_observer = Reporter.has_observer?(obj) ? Reporter[obj] : nil Reporter[obj] = observer end obj.toggle_informant value = yield Reporter[obj] ensure obj.toggle_informant (old_observer.nil? ? Reporter.drop(obj) : Reporter[obj] = old_observer) if observer value end def toggle_snoop_clean(obj, observer=nil) obj.state_inspector.skip_setter_snoops if observer old_observer = Reporter.has_observer?(obj) ? Reporter[obj] : nil Reporter[obj] = observer end obj.toggle_informant value = yield Reporter[obj] ensure obj.toggle_informant (obj.respond_to?(:class_eval) ? obj : obj.class). remove_instance_variable(:@state_inspector) (old_observer.nil? ? Reporter.drop(obj) : Reporter[obj] = old_observer) if observer value end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
state_inspector-1.0.3 | lib/state_inspector/helper.rb |