Ruby URL query string encoder and parser

Ruby
require 'uri'

def build_query(params)
  URI.encode_www_form(params.flat_map do |key, value|
    values = value.is_a?(Array) ? value : [value]
    values.map { |item| [key.to_s, item.to_s] }
  end)
end

def parse_query(query)
  URI.decode_www_form(query.to_s).each_with_object(Hash.new { |hash, key| hash[key] = [] }) do |(key, value), result|
    result[key] << value
  end
end