class IceNine::Freezer::Hash

A freezer class for handling Hash objects

Public Class Methods

deep_freeze(hash, recursion_guard = RecursionGuard.new) 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]

@api public

Calls superclass method IceNine::CoreExt::Object#deep_freeze
# File lib/ice_nine/freezer/hash.rb, line 21
def self.deep_freeze(hash, recursion_guard = RecursionGuard.new)
  IceNine.deep_freeze(hash.default_proc || hash.default, recursion_guard)
  hash.each do |key, value|
    IceNine.deep_freeze(key, recursion_guard)
    IceNine.deep_freeze(value, recursion_guard)
  end
  super
end