summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGibheer <gibheer@gmail.com>2013-08-06 14:15:54 +0200
committerGibheer <gibheer@gmail.com>2013-08-06 14:15:54 +0200
commit30215c37d1da0cf611854fcc246fe115d166008b (patch)
tree585d875f9479838b6a699ca5dd6cdbb170a5ce7c /lib
parentd92dea46954b388ec13bc53c6e4f9894f25863c4 (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.rb13
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