class Lurch::QueryBuilder

Public Class Methods

new(params) click to toggle source
# File lib/lurch/query_builder.rb, line 3
def initialize(params)
  @params = Hash(params)
end

Public Instance Methods

encode() click to toggle source
# File lib/lurch/query_builder.rb, line 7
def encode
  encode_value(@params)
end

Private Instance Methods

append_key(root_key, key) click to toggle source
# File lib/lurch/query_builder.rb, line 22
def append_key(root_key, key)
  root_key.nil? ? key : "#{root_key}[#{key}]"
end
encode_value(value, key = nil) click to toggle source
# File lib/lurch/query_builder.rb, line 13
def encode_value(value, key = nil)
  case value
  when Hash  then value.map { |k, v| encode_value(v, append_key(key, k)) }.reject(&:empty?).join("&")
  when Array then value.map { |v| encode_value(v, "#{key}[]") }.reject(&:empty?).join("&")
  else
    value.to_s.empty? ? "" : "#{key}=#{CGI.escape(value.to_s)}"
  end
end