Hello Mjmouse,
I've tested your approach and like it. Going to use it too.
Thanks for the feedback!
--
Below is my two test scripts. We are testing line numbers
using debug.traceback(). In both cases line numbers are relevant.
But with direct code insertion you have syntax highlighting and
less code lines.
( -- test_direct.lua
_G.package.preload['modules.a.Represent'] =
function(...)
return
function(self)
print(debug.traceback())
print(self.Data)
end
end
_G.package.preload['modules.a'] =
function(...)
local Represent = require('modules.a.Represent')
return
{
Represent = Represent,
Data = '[Test representation.]',
}
end
_G.package.preload.test =
function(...)
local ModuleA = require('modules.a')
ModuleA:Represent()
end
require('test')
)
( -- test_wrapped.lua
local Modules = {
['modules.a'] = [[
local Represent = require('modules.a.Represent')
return
{
Represent = Represent,
Data = '[Test representation.]',
}
]],
['modules.a.Represent'] = [[
return
function(self)
print(debug.traceback())
print(self.Data)
end
]],
test = [[
local ModuleA = require('modules.a')
ModuleA:Represent()
]],
}
do
local add_module =
function(module_name, module_code_str)
local compiled_code = assert(load(module_code_str, module_name, 't'))
_G.package.preload[module_name] =
function(...)
return compiled_code(...)
end
end
for module_name, module_code_str in pairs(Modules) do
add_module(module_name, module_code_str)
end
end
require('test')
)
-- Martin