module URI::QueryHash

Extends a hash with query string rendering/semi-indifferent access

Public Class Methods

[](value) click to toggle source

Creates a new hash populated with the given objects.

# File lib/uri/query_hash.rb, line 17
def self.[](value)
  Hash[value].tap do |hash|
    hash.extend(QueryHash)
  end
end

Public Instance Methods

[](key) click to toggle source
Calls superclass method
# File lib/uri/query_hash.rb, line 5
def [](key)
  item = super key
  item = super(key.to_s) if item.nil? || item.empty?
  item.class == Array && item.empty? ? nil : item
end
to_s() click to toggle source
# File lib/uri/query_hash.rb, line 11
def to_s
  keys.map { |key| render_value(key, self[key]) }.join("&")
end

Private Instance Methods

render_value(key, value) click to toggle source
# File lib/uri/query_hash.rb, line 25
def render_value(key, value)
  case value
  when nil   then key
  when Array then value.map { |el| render_value(key, el) }.join("&")
  else URI.encode_www_form_component(key) << "=" << URI.encode_www_form_component(value)
  end
end