4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'app/helpers/kirgudu_base/models/cloneable_elements.rb', line 4
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
|