# File lib/jpmobile/util.rb, line 21 def deep_convert(obj, &proc) case obj when Hash new_obj = {} obj.each_pair do |key, value| new_obj[deep_convert(key.dup, &proc)] = deep_convert(value, &proc) end new_obj when Array new_obj = obj.map do |value| deep_convert(value, &proc) end when Symbol new_obj = proc.call(obj.to_s).to_sym when NilClass, TrueClass, FalseClass, Tempfile, StringIO new_obj = obj else obj = obj.to_param if obj.respond_to?(:to_param) new_obj = proc.call(obj) end new_obj end