class CircularObjectContainer
Public Class Methods
new(obj)
click to toggle source
# File lib/blockify.rb, line 299 def initialize(obj) @id = obj.object_id if obj.respond_to? :each_pair @obj = obj.class.new # create a blank slate obj.each_pair do |key,val| if val.respond_to? :each @obj[key] = val.class.new # go no further else tval = val.dup rescue val @obj[key] = tval end end self.instance_eval do # yes we want a singleton method here! def each_pair(&block) @obj.each_pair &block end def each(&block) @obj.each &block end def [](key) @obj[key] end end elsif obj.respond_to? :each @obj = obj.class.new # create a blank slate obj.each do |val| if val.respond_to? :each @obj.push val.class.new else tval = val.dup rescue val @obj.push tval end end self.instance_eval do # yes we want a singleton method here! def each(&block) @obj.each &block end def [](idx) @obj[idx] end end else @obj = obj.dup rescue obj end @obj.freeze self.freeze self end
Public Instance Methods
[](key)
click to toggle source
# File lib/blockify.rb, line 318 def [](key) @obj[key] end
blockify_elements(&block)
click to toggle source
# File lib/blockify.rb, line 362 def blockify_elements(&block) @obj.dup.blockify_elements(&block) end
circular?(path = [], stack = {}, rtn = [false])
click to toggle source
# File lib/blockify.rb, line 359 def circular? (path = [], stack = {}, rtn = [false]) return rtn.first end
dup()
click to toggle source
# File lib/blockify.rb, line 353 def dup # get the innards and discard container @obj.dup rescue @obj end
each(&block)
click to toggle source
# File lib/blockify.rb, line 315 def each(&block) @obj.each &block end
each_pair(&block)
click to toggle source
# File lib/blockify.rb, line 312 def each_pair(&block) @obj.each_pair &block end
find_element_path(path=[],done=[false], &block)
click to toggle source
# File lib/blockify.rb, line 365 def find_element_path(path=[],done=[false], &block) @obj.dup.find_element_path(path,done, &block) end
find_element_paths(path=[],paths=[], &block)
click to toggle source
# File lib/blockify.rb, line 368 def find_element_paths(path=[],paths=[], &block) @obj.dup.find_element_paths(path,paths, &block) end
id()
click to toggle source
# File lib/blockify.rb, line 347 def id # get the original object_id @id end
scan_elements(&block)
click to toggle source
# File lib/blockify.rb, line 371 def scan_elements(&block) @obj.dup.scan_elements(&block) end
taboo?()
click to toggle source
# File lib/blockify.rb, line 356 def taboo? true end
type()
click to toggle source
# File lib/blockify.rb, line 350 def type @obj.class end