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