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

Version Path
kirgudu_base-0.0.25 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.23 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.22 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.21 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.19 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.18 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.17 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.16 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.15 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.14 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.13 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.12 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.11 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.10 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.9 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.8 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.7 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.6 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.5 app/helpers/kirgudu_base/models/cloneable_elements.rb
kirgudu_base-0.0.4 app/helpers/kirgudu_base/models/cloneable_elements.rb