renyijiu/alipay_mini

View on GitHub
lib/alipay_mini/utils.rb

Summary

Maintainability
A
35 mins
Test Coverage

module AlipayMini
  module Utils
    def self.stringify_keys(hash)
      if hash.is_a? ::Hash
        return hash.inject({}) do |memo, (k, v)|
          memo.tap { |m| m[k.to_s] = self.stringify_keys(v) }
        end
      end

      hash
    end

    def self.params_to_string(params)
      params.sort.map{ |item| item.join('=') }.join('&')
    end

    def self.deep_compact(hash)
      return hash unless hash.is_a?(::Hash)

      hash.each_with_object({}) do |(k, v), compact_hash|
        if v.is_a?(::Hash)
          compact_hash[k] = deep_compact(v)
        else
          compact_hash[k] = v unless v.nil?
        end
      end
    end
  end
end