webmcp
annotate framework/env/param/get_list.lua @ 2:72860d232f32
Version 1.0.2
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
Fixed bug with explicit garbage collection (requests > 256kB caused an error)
Views prefixed with an underscore can't be called externally
ui.paginate now displays the last page, if the selected page number is too high.
author | jbe/bsw |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 9fdfb27f8e67 |
children | 32ec28229bb5 |
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/bsw@0 | 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/bsw@0 | 26 local format_info = cgi.params[key .. "__format"] |
jbe/bsw@0 | 27 local parser = param._get_parser(format_info, param_type) |
jbe/bsw@0 | 28 local raw_values = cgi.params[key .. "[]"] |
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 |