jbe/bsw@0: --[[-- jbe/bsw@0: values = -- list of values casted to the chosen param_type jbe/bsw@0: param.get_list( jbe/bsw@0: key, -- name of the parameter without "[]" suffix jbe@336: param_type -- desired type of the returned values jbe/bsw@0: ) jbe/bsw@0: jbe/bsw@0: 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: jbe/bsw@0: --]]-- jbe/bsw@0: jbe/bsw@0: function param.get_list(key, param_type) jbe/bsw@0: local param_type = param_type or atom.string jbe/bsw@0: if param._exchanged then jbe/bsw@0: local values = param._exchanged.params[key] or {} jbe/bsw@0: if type(values) ~= "table" then jbe/bsw@0: error("Parameter has unexpected type.") jbe/bsw@0: end jbe/bsw@0: for idx, value in ipairs(values) do jbe/bsw@0: if not atom.has_type(value, param_type) then jbe/bsw@0: error("Element of parameter list has unexpected type.") jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: return values jbe/bsw@0: else jbe@223: local format_info = request.get_param{ name = key .. "__format" } jbe/bsw@0: local parser = param._get_parser(format_info, param_type) jbe@223: local raw_values = request.get_param{ name = key .. "[]", multiple = true } jbe/bsw@0: local values = {} jbe/bsw@0: if raw_values then jbe/bsw@0: for idx, value in ipairs(raw_values) do jbe/bsw@0: values[idx] = parser(raw_values[idx]) jbe/bsw@0: end jbe/bsw@0: end jbe/bsw@0: return values jbe/bsw@0: end jbe/bsw@0: end