Sha256: bee205d0b717d8ef3a400ab5a5885fac2c4e3f971630fda5a40312ca9958670e

Contents?: true

Size: 900 Bytes

Versions: 1

Compression:

Stored size: 900 Bytes

Contents

# encoding: utf-8

module IceNine
  class Freezer

    # A freezer class for handling Hash objects
    class Hash < Object

      # 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
      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

    end # class Hash
  end # class Freezer
end # module IceNine

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ice_nine-0.10.0 lib/ice_nine/freezer/hash.rb