webmcp
annotate framework/env/execute/chunk.lua @ 67:937bbe05098c
Bugfix regarding compatibility with Lua 5.2:
return _M at end of mondelefant.lua
return _M at end of mondelefant.lua
author | jbe |
---|---|
date | Tue Apr 17 15:39:27 2012 +0200 (2012-04-17) |
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 |