Sha256: 90f78c9b19ffbe5346bda9336a92c356945a0ecf50fd3fe9074c2a0eb626cfbc

Contents?: true

Size: 700 Bytes

Versions: 3

Compression:

Stored size: 700 Bytes

Contents

# -*- coding: utf-8 -*-

require 'active_support'

# activesupport-3.1.0以上では
# active_support/core_ext/hash/deep_dupでHash#deep_dupを定義していますが、
# 対象がHashだけなのでArrayをコピーできません。
# Arrayや他のオブジェクトに対応するためにメソッドを上書きします。

if ActiveSupport::VERSION::STRING >= "3.1.0"
  require 'active_support/core_ext/hash/deep_dup'
end

class Hash
  # Returns a deep copy of hash.
  def deep_dup
    duplicate = self.dup
    duplicate.each_pair do |k,v|
      tv = duplicate[k]
      duplicate[k] = tv.respond_to?(:deep_dup) && v.respond_to?(:deep_dup) ? tv.deep_dup : v
    end
    duplicate
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tengine_support-1.2.2 lib/tengine/support/core_ext/hash/deep_dup.rb
tengine_support-1.2.1 lib/tengine/support/core_ext/hash/deep_dup.rb
tengine_support-1.2.0 lib/tengine/support/core_ext/hash/deep_dup.rb