webmcp

annotate framework/env/param/get_list.lua @ 336:209d378c0a3b

Detect interval handlers with duplicate name; Added documentation for listen{...}
author jbe
date Tue Mar 24 18:26:27 2015 +0100 (2015-03-24)
parents 32ec28229bb5
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

Impressum / About Us