Sha256: 30bc9ee3c10c8d222d85775db3e071c5e7f20d6e9ae972d72d6212fbb15cc217

Contents?: true

Size: 830 Bytes

Versions: 1

Compression:

Stored size: 830 Bytes

Contents

module I18n
  module Backend
    module Helpers
      # Return a new hash with all keys and nested keys converted to symbols.
      def deep_symbolize_keys(hash)
        hash.inject({}) { |result, (key, value)|
          value = deep_symbolize_keys(value) if value.is_a?(Hash)
          result[(key.to_sym rescue key) || key] = value
          result
        }
      end

      # deep_merge_hash! by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809
      MERGER = proc do |key, v1, v2|
        # TODO should probably be:
        # raise TypeError.new("can't merge #{v1.inspect} and #{v2.inspect}") unless Hash === v1 && Hash === v2
        Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : (v2 || v1)
      end

      def deep_merge_hash!(hash, data)
        hash.merge!(data, &MERGER)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
i18n-0.4.0.beta lib/i18n/backend/helpers.rb