webmcp

view framework/env/execute/chunk.lua @ 255:9e4be058959d

New functions request.add_initializer(...) and request.add_variable(...) to allow per-request initialization; Merged request.process() with request.handler(...)
author jbe
date Sat Mar 14 23:39:47 2015 +0100 (2015-03-14)
parents 82cc171e8510
children 4e69ce9a6365
line source
1 --[[--
2 return_value = -- return value of executed chunk
3 execute.chunk{
4 file_path = file_path, -- path to a lua source or byte-code file
5 app = app, -- app name to use or the current will be used
6 module = module, -- module where chunk is located
7 chunk = chunk -- name of chunk (filename without .lua extension)
8 id = id, -- id to be returned by param.get_id(...) during execution
9 params = params -- parameters to be returned by param.get(...) during execution
10 }
12 This function loads and executes a lua file specified by a given path or constructs 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.
14 --]]--
16 local function pack_return_values(...)
17 local storage = {...}
18 storage.n = select("#", ...)
19 return storage
20 end
22 local function unpack_return_values(storage)
23 return table.unpack(storage, 1, storage.n)
24 end
26 function execute.chunk(args)
27 local file_path = args.file_path
28 local app = args.app or WEBMCP_APP_NAME
29 local module = args.module
30 local chunk = args.chunk
31 local id = args.id
32 local params = args.params
34 file_path = file_path or encode.file_path(
35 WEBMCP_BASE_PATH, 'app', app, module, chunk .. '.lua'
36 )
38 local func, load_errmsg = loadfile(file_path, nil, _ENV)
39 if not func then
40 error('Could not load file "' .. file_path .. '": ' .. load_errmsg)
41 end
43 if id or params then
44 param.exchange(id, params)
45 end
47 local result = pack_return_values(func())
49 if id or params then
50 param.restore()
51 end
53 return unpack_return_values(result)
54 end

Impressum / About Us