Sha256: 6b0a902443ff435d3ef5423a7f4aa4a99abb9a5e3f92eacd73732e2c98551c77
Contents?: true
Size: 1.27 KB
Versions: 21
Compression:
Stored size: 1.27 KB
Contents
module KirguduBase module Models module CloneableElements def self.clone(source_element) cloned_element = nil if source_element if [String, Boolean, Symbol, Integer, Float, Rational].include?(source_element.class) cloned_element = source_element elsif source_element.is_a?(Hash) source_element.each_pair elsif source_element.is_a?(Array) elsif source_element.class.respond_to?(:get_mergeable_attributes) source_element.class.get_mergeable_attributes.each do |cloneable_attribute| cloned_element = source_element.new value = source_element.send("#{cloneable_attribute}") if value if [String, Boolean, Symbol, Integer, Float, Rational].include?(value.class) cloned_element.send("#{cloneable_attribute}=", value) elsif value.is_a?(Hash) value_hash = {} value.each_pair do |value_key, value_data| value_hash[value_key] = ::KirguduBase::Models::CloneableElements.clone(value_data) end elsif value.is_a?(Array) value_array = [] value.each do |value_data| value_array << ::KirguduBase::Models::CloneableElements.clone(value_data) end end end end end end cloned_element end end end end
Version data entries
21 entries across 21 versions & 1 rubygems