diff options
author | Gibheer <gibheer@gmail.com> | 2013-08-06 14:15:54 +0200 |
---|---|---|
committer | Gibheer <gibheer@gmail.com> | 2013-08-06 14:15:54 +0200 |
commit | 30215c37d1da0cf611854fcc246fe115d166008b (patch) | |
tree | 585d875f9479838b6a699ca5dd6cdbb170a5ce7c /lib | |
parent | d92dea46954b388ec13bc53c6e4f9894f25863c4 (diff) |
make it possible to push lists as paramters
This makes it possible to push lists as paramters by naming the
variables with `[]` at the end, for example `foo[]`.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/zero/request/parameter.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/zero/request/parameter.rb b/lib/zero/request/parameter.rb index ac67401..c8d324c 100644 --- a/lib/zero/request/parameter.rb +++ b/lib/zero/request/parameter.rb @@ -21,6 +21,8 @@ module Zero 'application/x-www-form-urlencoded', 'multipart/form-data' ].to_set + # match keys for list attribute + REGEX_MATCH_LIST = /\[\]$/ # get the query parameters attr_reader :query @@ -95,7 +97,16 @@ module Zero # @param query [String] the query string # @return [Hash] the key/valuie pairs def parse_string(query) - Hash[URI.decode_www_form(query)] + result = {} + URI.decode_www_form(query).each do |p| + if p.first.match(REGEX_MATCH_LIST) + result[p.first] ||= [] + result[p.first] << p.last + else + result[p.first] = p.last + end + end + result end end end |