summaryrefslogtreecommitdiff
path: root/lib/leap_cli/core_ext/deep_dup.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/leap_cli/core_ext/deep_dup.rb')
-rw-r--r--lib/leap_cli/core_ext/deep_dup.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/leap_cli/core_ext/deep_dup.rb b/lib/leap_cli/core_ext/deep_dup.rb
new file mode 100644
index 0000000..b9cf0d3
--- /dev/null
+++ b/lib/leap_cli/core_ext/deep_dup.rb
@@ -0,0 +1,53 @@
+unless Hash.method_defined?(:deep_dup)
+
+ class Array
+ def deep_dup
+ map { |it| it.deep_dup }
+ end
+ end
+
+ class Hash
+ def deep_dup
+ each_with_object(dup) do |(key, value), hash|
+ hash[key.deep_dup] = value.deep_dup
+ end
+ end
+ end
+
+ class String
+ def deep_dup
+ self.dup
+ end
+ end
+
+ class Integer
+ def deep_dup
+ self
+ end
+ end
+
+ class Float
+ def deep_dup
+ self
+ end
+ end
+
+ class TrueClass
+ def deep_dup
+ self
+ end
+ end
+
+ class FalseClass
+ def deep_dup
+ self
+ end
+ end
+
+ class NilClass
+ def deep_dup
+ self
+ end
+ end
+
+end \ No newline at end of file