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 | 
