File: active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Class Hierarchy

Object ( Builtin-Module )
  Hash    #1

Code

   1  class Hash
   2    def slice(*keep_keys)
   3      h = {}
   4      keep_keys.each { |key| h[key] = fetch(key) }
   5      h
   6    end unless Hash.method_defined?(:slice)
   7 
   8    def except(*less_keys)
   9      slice(*keys - less_keys)
  10    end unless Hash.method_defined?(:except)
  11 
  12    def deep_symbolize_keys
  13      inject({}) { |result, (key, value)|
  14        value = value.deep_symbolize_keys if value.is_a?(Hash)
  15        result[(key.to_sym rescue key) || key] = value
  16        result
  17      }
  18    end unless Hash.method_defined?(:deep_symbolize_keys)
  19 
  20    # deep_merge_hash! by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809
  21    MERGER = proc do |key, v1, v2|
  22      Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : v2
  23    end
  24    
  25    def deep_merge!(data)
  26      merge!(data, &MERGER)
  27    end unless Hash.method_defined?(:deep_merge!)
  28  end
  29