Sha256: a0b9e4c6e8c3ee149dd5a3eef343909b30f0e541394046a3c2d8e5941bb6c3a1
Contents?: true
Size: 1.44 KB
Versions: 5
Compression:
Stored size: 1.44 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({data: 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 def factory(parsed, api_creds, preload: nil) if key = (parsed[:data] || parsed)[:object] discover_class(key, self).new(parsed, api_creds, preload: preload) else new(parsed, api_creds, preload: preload) end end private def discover_class(key, default_klass=module_parent::GenericObject) klass_name = key.to_s.camelize.singularize begin "#{module_name}::#{klass_name}".constantize rescue NameError default_klass end end end delegate :factory, to: :class end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
ncore-3.12.0 | lib/ncore/util.rb |
ncore-3.11.0 | lib/ncore/util.rb |
ncore-3.10.0 | lib/ncore/util.rb |
ncore-3.9.1 | lib/ncore/util.rb |
ncore-3.9.0 | lib/ncore/util.rb |