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