Module: Wfirma::DeepDup

Included in:
Wfirma::Drivers::Fake, Wfirma::Drivers::Fake::Catalogue
Defined in:
lib/wfirma/deep_dup.rb

Overview

Payloads are plain JSON-safe hashes/arrays/scalars, so a simple recursive dup is enough to give responses and stored records an object graph fully independent from the caller's - mirroring the isolation a real HTTP round-trip (serialize/deserialize) would give.

Class Method Summary collapse

Class Method Details

.deep_dup(value) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/wfirma/deep_dup.rb', line 9

def deep_dup(value)
  case value
  when Hash
    value.each_with_object({}) { |(key, val), copy| copy[deep_dup(key)] = deep_dup(val) }
  when Array
    value.map { |item| deep_dup(item) }
  when String
    value.dup
  else
    value
  end
end