module TTY::Option::DeepDup

Constants

NONDUPLICATABLE

Public Class Methods

deep_dup(object) click to toggle source

Duplicate an object making a deep copy

@param [Object] object

@api public

# File lib/tty/option/deep_dup.rb, line 15
def self.deep_dup(object)
  case object
  when *NONDUPLICATABLE then object
  when Hash   then deep_dup_hash(object)
  when Array  then deep_dup_array(object)
  else object.dup
  end
end
deep_dup_array(object) click to toggle source

A deep copy of array

@param [Array] object

@api private

# File lib/tty/option/deep_dup.rb, line 40
def self.deep_dup_array(object)
  object.each_with_object([]) do |val, new_array|
    new_array << deep_dup(val)
  end
end
deep_dup_hash(object) click to toggle source

A deep copy of hash

@param [Hash] object

@api private

# File lib/tty/option/deep_dup.rb, line 29
def self.deep_dup_hash(object)
  object.each_with_object({}) do |(key, val), new_hash|
    new_hash[deep_dup(key)] = deep_dup(val)
  end
end