local require = require
|
|
local string = string
|
|
local table = table
|
|
|
|
function import(moduleName, currentModuleName)
|
|
local currentModuleNameParts
|
|
local moduleFullName = moduleName
|
|
local offset = 1
|
|
|
|
while true do
|
|
if string.byte(moduleName, offset) ~= 46 then -- .
|
|
moduleFullName = string.sub(moduleName, offset)
|
|
if currentModuleNameParts and #currentModuleNameParts > 0 then
|
|
moduleFullName = table.concat(currentModuleNameParts, ".") .. "." .. moduleFullName
|
|
end
|
|
break
|
|
end
|
|
offset = offset + 1
|
|
|
|
if not currentModuleNameParts then
|
|
if not currentModuleName then
|
|
local n,v = debug.getlocal(3, 1)
|
|
currentModuleName = v
|
|
end
|
|
|
|
currentModuleNameParts = string.split(currentModuleName, ".")
|
|
end
|
|
table.remove(currentModuleNameParts, #currentModuleNameParts)
|
|
end
|
|
|
|
return require(moduleFullName)
|
|
end
|
|
|
|
--重新require一个lua文件,替代系统文件。
|
|
function reimport(name)
|
|
local package = package
|
|
package.loaded[name] = nil
|
|
package.preload[name] = nil
|
|
return require(name)
|
|
end
|
|
|