Method: FluentdServer::WebHelper#parse_query

Defined in:
lib/fluentd_server/web_helper.rb

#parse_query(qs, d = nil) ⇒ Object

override RackUtil.parse_query

Parameters:

  • qs

    query string

  • d (defaults to: nil)

    delimiter

Returns:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fluentd_server/web_helper.rb', line 12

def parse_query(qs, d=nil)
  params = {}
  (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
    k, v = p.split('=', 2).map { |x| unescape(x) }
    if k.ends_with?('[]')
      k1 = k[0..-3]
      if params[k1] and params[k1].class == Array
        params[k1] << v
      else
        params[k1] = [v]
      end
    elsif k.ends_with?(']') and md = k.match(/^([^\[]+)\[([^\]]+)\]$/)
      k1, k2 = md[1], md[2]
      if params[k1] and params[k1].class == Hash
        params[k1][k2] = v
      else
        params[k1] = { k2 => v }
      end
    else
      params[k] = v
    end
  end
  params
end