Arthur Collé
Arthur Collé

Reputation: 2607

Stringifying query parameters: can we go further?

I wrote this method:

    def stringify_query_params(query_parameters)
      stringified_query_params = ''
      query_parameters.each_with_index do |kv, i|
        k, v = kv
        index = i
        if index == 0
          stringified_query_params += "?#{k}=#{v}"
        else
          stringified_query_params += "&#{k}=#{v}"
        end
      end
      return stringified_query_params
    end

RubyCop is complaining in my running instance of RubyMine saying that I should instead be capturing the output of the conditional branching logic like this.

I was able to make it slightly better, using some methods in the Enumerable module

   def stringify_query_parameters(query_parameters)
      query_parameters.each_with_object([]).with_index do |((k, v), acc), index|
        acc.push((index.positive? ? '&' : '?') + "#{k}=#{v}")
      end.join('')
    end

Can anyone think of a way to make it even terser?

Upvotes: 0

Views: 37

Answers (1)

demir
demir

Reputation: 4709

It can be as follows:

def stringify_query_parameters(query_parameters)
  '?' + query_parameters.map{ |k, v| "#{k}=#{v}" }.join('&')
end

Upvotes: 1

Related Questions