Class: Merb::Request
- Inherits:
-
Object
- Object
- Merb::Request
- Defined in:
- lib/merb_cache_more/request.rb
Class Method Summary collapse
-
.params_to_query_string(value, prefix = nil) ⇒ Object
Parameters value<Array, Hash, Dictionary ~to_s>:: The value for the query string.
-
.query_parse(qs, d = '&;', preserve_order = false) ⇒ Object
Parameters qs<String>:: The query string.
Class Method Details
.params_to_query_string(value, prefix = nil) ⇒ Object
Parameters
- value<Array, Hash, Dictionary ~to_s>
-
The value for the query string.
- prefix<~to_s>
-
The prefix to add to the query string keys.
Returns
- String
-
The query string.
Alternatives
If the value is a string, the prefix will be used as the key.
Examples
params_to_query_string(10, "page")
# => "page=10"
params_to_query_string({ :page => 10, :word => "ruby" })
# => "page=10&word=ruby"
params_to_query_string({ :page => 10, :word => "ruby" }, "search")
# => "search[page]=10&search[word]=ruby"
params_to_query_string([ "ice-cream", "cake" ], "shopping_list")
# => "shopping_list[]=ice-cream&shopping_list[]=cake"
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/merb_cache_more/request.rb', line 23 def params_to_query_string(value, prefix = nil) case value when Array value.map { |v| params_to_query_string(v, "#{prefix}[]") } * "&" when Hash, Dictionary value.map { |k, v| params_to_query_string(v, prefix ? "#{prefix}[#{Merb::Request.escape(k)}]" : Merb::Request.escape(k)) } * "&" else "#{prefix}=#{Merb::Request.escape(value)}" end end |
.query_parse(qs, d = '&;', preserve_order = false) ⇒ Object
Parameters
- qs<String>
-
The query string.
- d<String>
-
The query string divider. Defaults to “&”.
- preserve_order<Boolean>
-
Preserve order of args. Defaults to false.
Returns
- Mash
-
The parsed query string (Dictionary if preserve_order is set).
Examples
query_parse("bar=nik&post[body]=heya")
# => { :bar => "nik", :post => { :body => "heya" } }
49 50 51 52 53 54 55 56 |
# File 'lib/merb_cache_more/request.rb', line 49 def query_parse(qs, d = '&;', preserve_order = false) qh = preserve_order ? Dictionary.new : {} (qs||'').split(/[#{d}] */n).inject(qh) { |h,p| key, value = unescape(p).split('=',2) normalize_params(h, key, value) } preserve_order ? qh : qh.to_mash end |