module HTTP::FormData::Urlencoded::DefaultEncoder

def encode(value, prefix = nil)

Returns:
  • (String) -

Parameters:
  • prefix (String, nil) --
  • value (Hash, Array, String, nil) --

Other tags:
    Api: - public
def encode(value, prefix = nil)
  case value
  when Hash  then encode_hash(value, prefix)
  when Array then encode_array(value, prefix)
  when nil   then prefix.to_s
  else
    raise ArgumentError, "value must be a Hash" if prefix.nil?
    "#{prefix}=#{escape(value)}"
  end
end

def encode_array(value, prefix)

Returns:
  • (String) -

Other tags:
    Api: - private
def encode_array(value, prefix)
  if prefix
    value.map { |v| encode(v, "#{prefix}[]") }.join("&")
  else
    encode_pairs(value)
  end
end

def encode_hash(hash, prefix)

Returns:
  • (String) -

Other tags:
    Api: - private
def encode_hash(hash, prefix)
  hash.map do |k, v|
    encode(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k))
  end.reject(&:empty?).join("&")
end

def encode_pairs(pairs)

Returns:
  • (String) -

Other tags:
    Api: - private
def encode_pairs(pairs)
  pairs.map { |k, v| encode(v, escape(k)) }.reject(&:empty?).join("&")
end

def escape(value)

Returns:
  • (String) -

Other tags:
    Api: - private
def escape(value)
  URI.encode_www_form_component(value)
end