# 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