webmcp
annotate framework/env/execute/chunk.lua @ 110:0c4841af07a5
String truncating by counting Unicode codepoints in format.string(...)
(grapheme cluster boundary detection not implemented)
(grapheme cluster boundary detection not implemented)
| author | jbe |
|---|---|
| date | Sun Jan 12 03:57:47 2014 +0100 (2014-01-12) |
| parents | 3d43a5cf17c1 |
| children | 48ee8826efbe |
| rev | line source |
|---|---|
| poelzi@31 | 1 --[[-- |
| jbe@46 | 2 return_value = -- return value of executed chunk |
| jbe@46 | 3 execute.chunk{ |
| poelzi@31 | 4 file_path = file_path, -- path to a lua source or byte-code file |
| poelzi@31 | 5 app = app, -- app name to use or the current will be used |
| poelzi@31 | 6 module = module, -- module where chunk is located |
| jbe@46 | 7 chunk = chunk -- name of chunk (filename without .lua extension) |
| poelzi@32 | 8 id = id, -- id to be returned by param.get_id(...) during execution |
| poelzi@32 | 9 params = params -- parameters to be returned by param.get(...) during execution |
| poelzi@31 | 10 } |
| poelzi@31 | 11 |
| poelzi@31 | 12 This function loads and executes a lua file specified by a given path or constructs |
| jbe@46 | 13 a path to load from the module and chunk name. A chunk name should always begin with an underscore. All return values of the loaded and executed chunk are returned by this function as well. |
| poelzi@31 | 14 |
| poelzi@31 | 15 --]]-- |
| poelzi@31 | 16 |
| jbe@46 | 17 function execute.chunk(args) |
| poelzi@31 | 18 local file_path = args.file_path |
| poelzi@31 | 19 local app = args.app |
| poelzi@31 | 20 local module = args.module |
| poelzi@31 | 21 local chunk = args.chunk |
| poelzi@32 | 22 local id = args.id |
| poelzi@32 | 23 local params = args.params |
| poelzi@31 | 24 |
| poelzi@31 | 25 app = app or request.get_app_name() |
| poelzi@31 | 26 |
| jbe@46 | 27 file_path = file_path or encode.file_path( |
| jbe@46 | 28 request.get_app_basepath(), |
| jbe@46 | 29 'app', app, module, chunk .. '.lua' |
| jbe@46 | 30 ) |
| poelzi@32 | 31 |
| poelzi@31 | 32 local func, load_errmsg = loadfile(file_path) |
| poelzi@31 | 33 if not func then |
| poelzi@31 | 34 error('Could not load file "' .. file_path .. '": ' .. load_errmsg) |
| poelzi@31 | 35 end |
| poelzi@32 | 36 |
| poelzi@32 | 37 if id or params then |
| poelzi@32 | 38 param.exchange(id, params) |
| poelzi@32 | 39 end |
| poelzi@32 | 40 |
| jbe@46 | 41 local result = {func()} |
| poelzi@32 | 42 |
| poelzi@32 | 43 if id or params then |
| poelzi@32 | 44 param.restore() |
| poelzi@32 | 45 end |
| poelzi@32 | 46 |
| jbe@64 | 47 return table.unpack(result) |
| poelzi@31 | 48 end |