summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/rake-13.3.0/lib/rake/cloneable.rb
blob: eddb77e2f22fa9a38d1036656bb5f1582f42f4b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# frozen_string_literal: true
module Rake
  ##
  # Mixin for creating easily cloned objects.

  module Cloneable # :nodoc:
    # The hook that is invoked by 'clone' and 'dup' methods.
    def initialize_copy(source)
      super
      source.instance_variables.each do |var|
        src_value  = source.instance_variable_get(var)
        value = src_value.clone rescue src_value
        instance_variable_set(var, value)
      end
    end
  end
end