module URI::QueryParams
Constants
- UNSAFE
RFC 3986 unsafe characters (including ' ')
- VERSION
uri-query_params version
Public Class Methods
dump(query_params)
click to toggle source
Dumps the URI
query params.
@param [Hash{String => String}] query_params
The query params.
@return [String]
The dumped URI query string.
@example Dumping Strings
QueryParams.dump('x' => '1', 'y' => '2') # => "x=1&x=2"
@example Dumping non-Strings
QueryParams.dump(:x => 1, :y => true, :z => false) # => "x=1&x=active&z="
@example Dumping Arrays
QueryParams.dump(:x => ['a','b','c']) # => "x=a%20b%20c"
@since 0.5.0
@api semipublic
# File lib/uri/query_params/query_params.rb, line 118 def self.dump(query_params) query = [] # explicitly re-order the Hash on Ruby 1.8.x query_params.rehash if RUBY_VERSION < '1.9' query_params.each do |name,value| value = escape(value) query << "#{name}=#{value}" end return query.join('&') end
escape(value)
click to toggle source
Escapes a URI
query param value.
@param [Array, true, false, nil, to_s] value
The query param value to escape.
@return [String]
The raw escaped query param value.
@since 0.7.1
@api semipublic
# File lib/uri/query_params/query_params.rb, line 80 def self.escape(value) case value when Array URI::DEFAULT_PARSER.escape(value.join(' '),UNSAFE) when true 'active' when false, nil '' else URI::DEFAULT_PARSER.escape(value.to_s,UNSAFE) end end
parse(query_string) { |name,value| ... }
click to toggle source
Parses a URI
query string.
@param [String] query_string
The URI query string.
@yield [name,value]
The given block will be passed each parsed query param.
@yieldparam [String] name
The name of the query param.
@yieldparam [String] value
The value of the query param.
@return [Hash{String => String}]
The parsed query parameters.
@example
QueryParams.parse("x=1&y=2") # => {"x"=>"1", "y"=>"2"}
@example
QueryParams.parse("x=a%20b%20c&y") # => {"x"=>"a b c", "y"=>""}
@note
Version 0.6.0 allows {parse} to yield the query params, in the order they are parsed.
@api semipublic
# File lib/uri/query_params/query_params.rb, line 44 def self.parse(query_string) query_params = {} if query_string query_string.split('&').each do |param| # skip empty params next if param.empty? name, value = param.split('=',2) value = if value URI::DEFAULT_PARSER.unescape(value) else '' end yield(name,value) if block_given? query_params[name] = value end end return query_params end