webmcp
annotate framework/env/param/get_list.lua @ 403:0cb4bf644f1b
Updated mondelefant.connect{...} documentation
| author | jbe | 
|---|---|
| date | Wed Jan 06 02:43:55 2016 +0100 (2016-01-06) | 
| parents | 209d378c0a3b | 
| children | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 --[[-- | 
| jbe/bsw@0 | 2 values = -- list of values casted to the chosen param_type | 
| jbe/bsw@0 | 3 param.get_list( | 
| jbe/bsw@0 | 4 key, -- name of the parameter without "[]" suffix | 
| jbe@336 | 5 param_type -- desired type of the returned values | 
| jbe/bsw@0 | 6 ) | 
| jbe/bsw@0 | 7 | 
| jbe/bsw@0 | 8 Same as param.get(...), but used for parameters which contain a list of values. For external GET/POST parameters the parameter name gets suffixed with "[]". | 
| jbe/bsw@0 | 9 | 
| jbe/bsw@0 | 10 --]]-- | 
| jbe/bsw@0 | 11 | 
| jbe/bsw@0 | 12 function param.get_list(key, param_type) | 
| jbe/bsw@0 | 13 local param_type = param_type or atom.string | 
| jbe/bsw@0 | 14 if param._exchanged then | 
| jbe/bsw@0 | 15 local values = param._exchanged.params[key] or {} | 
| jbe/bsw@0 | 16 if type(values) ~= "table" then | 
| jbe/bsw@0 | 17 error("Parameter has unexpected type.") | 
| jbe/bsw@0 | 18 end | 
| jbe/bsw@0 | 19 for idx, value in ipairs(values) do | 
| jbe/bsw@0 | 20 if not atom.has_type(value, param_type) then | 
| jbe/bsw@0 | 21 error("Element of parameter list has unexpected type.") | 
| jbe/bsw@0 | 22 end | 
| jbe/bsw@0 | 23 end | 
| jbe/bsw@0 | 24 return values | 
| jbe/bsw@0 | 25 else | 
| jbe@223 | 26 local format_info = request.get_param{ name = key .. "__format" } | 
| jbe/bsw@0 | 27 local parser = param._get_parser(format_info, param_type) | 
| jbe@223 | 28 local raw_values = request.get_param{ name = key .. "[]", multiple = true } | 
| jbe/bsw@0 | 29 local values = {} | 
| jbe/bsw@0 | 30 if raw_values then | 
| jbe/bsw@0 | 31 for idx, value in ipairs(raw_values) do | 
| jbe/bsw@0 | 32 values[idx] = parser(raw_values[idx]) | 
| jbe/bsw@0 | 33 end | 
| jbe/bsw@0 | 34 end | 
| jbe/bsw@0 | 35 return values | 
| jbe/bsw@0 | 36 end | 
| jbe/bsw@0 | 37 end |