wallaby-core 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a09ac87dc23eae2c29466d9b92c72323c8fab161353006fe23d588f17281929
4
- data.tar.gz: 3803dcb490c18109c73bd2b375466dfc00326f4448366d8699028bd6be0c4d33
3
+ metadata.gz: 549512f63ab75eb29715ca2842daba07744482836896ddbf8d58ee873eeda983
4
+ data.tar.gz: 7997ba9973a504145d363673a5ea222013358673601cb0304bdf6d22a74b927e
5
5
  SHA512:
6
- metadata.gz: 53c39759f03f5ecfc69653a6240bb705dcd6a765139db9b62fcc87680cb0524aab5406d9a0250c8f1eb1613e6982763f73d11993e08609d9629e0bb3b028d4b6
7
- data.tar.gz: 3228ddfcacb5d686a8f42fc3ea1b79139f3cdf724503c5d2ae2b10de4722bca44525a3d9c06dfd66abcd2ea719d4a7d28092b0a996b89ef0953a606c00340e26
6
+ metadata.gz: 2eaff56ae4c69091a6de82f5ae4e067b65490aec8b76a54ff602b6714957e4ccf90b6ddec573032868941d5868bccde3c000ee038cb19dfe8d0cfc5fa12cf08e
7
+ data.tar.gz: 55c273983a048eb454248efe777b2abb9fb72e4a969792b3d33483b5b4944740ca1555e98fb41b25c558188420cb5a27fbd9c3aa5094786ee623fc6b81a3522f
@@ -7,7 +7,20 @@ module Wallaby
7
7
  # @param object [Object]
8
8
  # @return [Object] a clone object
9
9
  def self.clone(object)
10
- object.try(:deep_dup) || object && ::Marshal.load(::Marshal.dump(object))
10
+ # NOTE: Neither marshal/deep_dup/dup achieves real and correct deep copy,
11
+ # so here we need a custom solution below:
12
+ case object
13
+ when Hash
14
+ object.each_with_object(object.class.new) { |(key, value), hash| hash[key] = clone(value) }
15
+ when Array
16
+ object.each_with_object(object.class.new) { |value, array| array << clone(value) }
17
+ when Class
18
+ # NOTE: `Class.dup` will turn the duplicate class into anonymous class
19
+ # therefore, we just return the Class itself here
20
+ object
21
+ else
22
+ object.dup
23
+ end
11
24
  end
12
25
 
13
26
  # @param object [Object, nil]
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Wallaby
4
4
  module Core
5
- VERSION = '0.2.3' # :nodoc:
5
+ VERSION = '0.2.4' # :nodoc:
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wallaby-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tian Chen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-02 00:00:00.000000000 Z
11
+ date: 2022-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -241,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  - !ruby/object:Gem::Version
242
242
  version: '0'
243
243
  requirements: []
244
- rubygems_version: 3.0.3
244
+ rubygems_version: 3.1.6
245
245
  signing_key:
246
246
  specification_version: 4
247
247
  summary: The core of Wallaby