Method: Object#deep_copy
- Defined in:
- lib/atome/extensions/atome.rb
#deep_copy(obj) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/atome/extensions/atome.rb', line 115 def deep_copy(obj) # utility for buttons case obj when Hash obj.each_with_object({}) do |(k, v), h| unless k == :code # exception to avoid Proc accumulation h[deep_copy(k)] = deep_copy(v) end end when Array obj.map { |e| deep_copy(e) } else obj.dup rescue obj end end |