Sha256: fa0ccd1b5faecff3c2bfd117a95bfb0221cf8e07dd67bf4ae450a7c231bfa4d8
Contents?: true
Size: 1.3 KB
Versions: 12
Compression:
Stored size: 1.3 KB
Contents
module NCore module Util extend ActiveSupport::Concern def self.deep_clone(value) case value when Hash cl = value.clone value.each{|k,v| cl[k] = deep_clone(v)} cl when Array cl = value.clone cl.clear value.each{|v| cl << deep_clone(v)} cl when NilClass, Numeric, TrueClass, FalseClass value else value.clone rescue value end end module ClassMethods def interpret_type(val_or_enum, api_creds) case val_or_enum when Hash if key = val_or_enum[:object] discover_class(key).new val_or_enum, api_creds else val_or_enum end when Array val_or_enum.map{|v| interpret_type v, api_creds } else val_or_enum end end private def discover_class(key, default_klass=parent::GenericObject) klass_name = key.to_s.camelize.singularize begin "#{module_name}::#{klass_name}".constantize rescue NameError => e default_klass end end end def inspect "#<#{self.class}:0x#{self.object_id.to_s(16)}> id: #{id.inspect}, attribs: #{@attribs.except(:id).inspect}, metadata: #{metadata.inspect}" end end end
Version data entries
12 entries across 12 versions & 1 rubygems