class IceNine::Freezer::Hash

A freezer class for handling Hash objects

Public Class Methods

guarded_deep_freeze(hash, recursion_guard) click to toggle source

Deep Freeze a Hash

@example

hash = IceNine::Freezer::Hash.deep_freeze('a' => '1', 'b' => '2')
hash.keys.select(&:frozen?)    # => ['a', 'b']
hash.values.select(&:frozen?)  # => ['1', '2']

@param [Hash] hash @param [RecursionGuard] recursion_guard

@return [Hash]

Calls superclass method
# File lib/ice_nine/freezer/hash.rb, line 19
def self.guarded_deep_freeze(hash, recursion_guard)
  super
  default = hash.default_proc || hash.default
  Freezer.guarded_deep_freeze(default, recursion_guard)
  freeze_key_value_pairs(hash, recursion_guard)
end

Private Class Methods

freeze_key_value_pairs(hash, recursion_guard) click to toggle source

Handle freezing the key/value pairs

@param [Hash] hash @param [RecursionGuard] recursion_guard

@return [undefined]

@api private

# File lib/ice_nine/freezer/hash.rb, line 34
def self.freeze_key_value_pairs(hash, recursion_guard)
  hash.each do |key, value|
    Freezer.guarded_deep_freeze(key, recursion_guard)
    Freezer.guarded_deep_freeze(value, recursion_guard)
  end
end