# File lib/xtemplate.rb, line 136 def dup_data(data, oids=[]) if( oids.include?(data.id) ) data else oids.push(data.id) case data when Hash data = data.dup data.each{|key,val| data[key] = dup_data(val,oids)} data when Array data = data.dup data.collect!{|val| dup_data(val,oids) } data # when Numeric, TrueClass, FalseClass # immutable objects # data else begin data.dup rescue TypeError data end end end end