Module: MudisQL::DeepDup

Defined in:
lib/mudis-ql/deep_dup.rb

Overview

Utility for deep-duplicating nested objects to avoid mutating cached data

Class Method Summary collapse

Class Method Details

.call(obj) ⇒ Object

rubocop:disable Metrics/MethodLength



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/mudis-ql/deep_dup.rb', line 6

def self.call(obj) # rubocop:disable Metrics/MethodLength

  case obj
  when Hash
    obj.transform_values { |v| call(v) }
  when Array
    obj.map { |v| call(v) }
  else
    begin
      obj.dup
    rescue TypeError
      obj
    end
  end
end