Sha256: 8dffa94ff6b420393d5ad2702963e706fa7d614dac5501406525e2a585774848

Contents?: true

Size: 546 Bytes

Versions: 5

Compression:

Stored size: 546 Bytes

Contents

# frozen_string_literal: true

module Chamber
module Refinements
module DeepDup
refine ::Array do
  def deep_dup
    map { |i| i.respond_to?(:deep_dup) ? i.deep_dup : i.dup }
  end
end

refine ::Object do
  def deep_dup
    dup
  end
end

refine ::Hash do
  def deep_dup
    dup.tap do |hash|
      each_pair do |key, value|
        if key.frozen? && key.is_a?(::String)
          hash[key] = value.deep_dup
        else
          hash.delete(key)
          hash[key.deep_dup] = value.deep_dup
        end
      end
    end
  end
end
end
end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
chamber-3.1.1 lib/chamber/refinements/deep_dup.rb
chamber-3.1.0 lib/chamber/refinements/deep_dup.rb
chamber-3.0.1 lib/chamber/refinements/deep_dup.rb
chamber-3.0.0 lib/chamber/refinements/deep_dup.rb
chamber-3.0.0rc2 lib/chamber/refinements/deep_dup.rb