class IceNine::Freezer
The default class that handles freezing objects
Constants
- BasicObject
A freezer class for handling Object instances
Public Class Methods
Look up the Freezer descendant by object type
@example
freezer_class = IceNine::Freezer[mod]
@param [Module] mod
@return [Class<Freezer>]
@api public
# File lib/ice_nine/freezer.rb, line 26 def self.[](mod) @freezer_cache[mod] end
Look up a constant in the namespace
@param [String] namespace
@return [Module]
returned if a matching constant is found
@return [nil]
returned if no matching constant is found
@api private
# File lib/ice_nine/freezer.rb, line 85 def self.const_lookup(namespace) const_get(namespace) if const_defined?(namespace, nil) end
Deep freeze an object with a particular Freezer
@see IceNine.deep_freeze
@param [Object] object
@return [Object]
@api public
# File lib/ice_nine/freezer.rb, line 39 def self.deep_freeze(object) guarded_deep_freeze(object, RecursionGuard::ObjectSet.new) end
Deep freeze an object with a particular Freezer
@see IceNine.deep_freeze!
@param [Object] object
@return [Object]
@api public
# File lib/ice_nine/freezer.rb, line 52 def self.deep_freeze!(object) guarded_deep_freeze(object, RecursionGuard::Frozen.new) end
Deep freeze an object with a particular Freezer and RecursionGuard
@param [Object] object @param [RecursionGuard] recursion_guard
@return [Object]
@api private
# File lib/ice_nine/freezer.rb, line 97 def self.guarded_deep_freeze(object, recursion_guard) recursion_guard.guard(object) do Freezer[object.class].guarded_deep_freeze(object, recursion_guard) end end
Private Class Methods
Find a Freezer descendant by name
@param [String] name
@return [Class<Freezer>]
returned if a matching freezer is found
@return [nil]
returned if no matching freezer is found
@api private
# File lib/ice_nine/freezer.rb, line 66 def self.find(name) freezer = name.split('::').reduce(self) do |mod, const| mod.const_lookup(const) or break mod end freezer if freezer < self # only return a descendant freezer end