webmcp
annotate framework/env/param/get_id.lua @ 375:fb98b17056e5
Proper support for mutable data types (JSON objects/arrays) in table columns
| author | jbe | 
|---|---|
| date | Sat Nov 14 15:44:53 2015 +0100 (2015-11-14) | 
| parents | eeea5b7f31d4 | 
| children | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 --[[-- | 
| jbe/bsw@0 | 2 value = -- value of the id casted to the chosen param_type | 
| jbe/bsw@0 | 3 param.get_id( | 
| jbe/bsw@0 | 4 param_type -- desired type of the returned value | 
| jbe/bsw@0 | 5 ) | 
| jbe/bsw@0 | 6 | 
| jbe/bsw@0 | 7 Same as param.get(...), but operates on a special id parameter. An id is set via a __webmcp_id GET or POST parameter or an 'id' option to execute.view{...} or execute.action{...}. In a normal setup a beauty URL of the form http://www.example.com/example-application/example-module/example-view/<id>.html will cause the id to be set. | 
| jbe/bsw@0 | 8 | 
| jbe/bsw@0 | 9 --]]-- | 
| jbe/bsw@0 | 10 | 
| jbe/bsw@0 | 11 function param.get_id(param_type) | 
| jbe/bsw@0 | 12 local param_type = param_type or atom.integer | 
| jbe/bsw@0 | 13 if param._exchanged then | 
| jbe/bsw@0 | 14 local value = param._exchanged.id | 
| jbe/bsw@0 | 15 if value ~= nil and not atom.has_type(value, param_type) then | 
| jbe/bsw@0 | 16 error("Parameter has unexpected type.") | 
| jbe/bsw@0 | 17 end | 
| jbe/bsw@0 | 18 return value | 
| jbe/bsw@0 | 19 else | 
| jbe@94 | 20 local str = request.get_id_string() | 
| jbe@91 | 21 if str then | 
| jbe@91 | 22 return param._get_parser(nil, param_type)(str) | 
| jbe@91 | 23 else | 
| jbe@91 | 24 return nil | 
| jbe@91 | 25 end | 
| jbe/bsw@0 | 26 end | 
| jbe/bsw@0 | 27 end |