Sha256: daa1d2086c0f0fa6f1d17fb0228cad5982f628d4bcc24991f5cf504e30c3d8b6

Contents?: true

Size: 1.34 KB

Versions: 11

Compression:

Stored size: 1.34 KB

Contents

require 'httparty'

# :nocov:
module HTTParty
  # Extension of HTTParty:HashConversions. Changes made to add index to arrays
  # https://github.com/jnunemaker/httparty/blob/master/lib/httparty/hash_conversions.rb#L42,L55
  module HashConversions
    def self.normalize_keys(key, value)
      stack = []
      normalized_keys = []

      if value.respond_to?(:to_ary)
        if value.empty?
          normalized_keys << ["#{key}[]", '']
        else
          normalized_keys = value.to_ary.flat_map.with_index do
            |element, index| normalize_keys("#{key}[#{index}]", element)
          end
        end
      elsif value.respond_to?(:to_hash)
        stack << [key, value.to_hash]
      else
        normalized_keys << [key.to_s, value]
      end

      stack.each do |parent, hash|
        hash.each do |child_key, child_value|
          if child_value.respond_to?(:to_hash)
            stack << ["#{parent}[#{child_key}]", child_value.to_hash]
          elsif child_value.respond_to?(:to_ary)
            child_value.to_ary.each_with_index do |v, index|
              normalized_keys << normalize_keys("#{parent}[#{child_key}][#{index}]", v).flatten
            end
          else
            normalized_keys << normalize_keys("#{parent}[#{child_key}]", child_value).flatten
          end
        end
      end

      normalized_keys
    end
  end
end
# :nocov:

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
razorpay-3.2.2 lib/extensions/httparty/hash_conversions.rb
razorpay-3.2.1 lib/extensions/httparty/hash_conversions.rb
razorpay-3.2.0 lib/extensions/httparty/hash_conversions.rb
razorpay-3.1.0 lib/extensions/httparty/hash_conversions.rb
razorpay-3.0.1 lib/extensions/httparty/hash_conversions.rb
razorruby-3.0.4 lib/extensions/httparty/hash_conversions.rb
razorruby-3.0.1 lib/extensions/httparty/hash_conversions.rb
waeasyapi-1.0.0 lib/extensions/httparty/hash_conversions.rb
razorpay-3.0.0 lib/extensions/httparty/hash_conversions.rb
razorpay-2.4.1 lib/extensions/httparty/hash_conversions.rb
razorpay-2.4.0 lib/extensions/httparty/hash_conversions.rb