local function searchpath2(name,path,sep,rep)
sep = sep or '%.'
rep = rep or string.match(package.config,"[^\n]+")
name = string.gsub(name,sep,rep)
local errlist = {}
for v in string.gmatch(path,"[^;]+") do
local fpath = string.gsub(v,"?",name)
local f = io.open(fpath,"r")
if f then
f:close()
return fpath
else
table.insert(errlist,"not file "..fpath)
end
end
return nil,table.concat(errlist,"\n")
end
local loaded = package.loaded
local searchpath = package.searchpath or searchpath2
function import(modname)
if modname then
local prefix = modname:match "(.*%.).*$" or (modname .. ".")
return function(name)
local fullname = prefix .. name
local m = loaded[fullname] or loaded[name]
if m then
return m
end
if searchpath(fullname, package.path) then
return require(fullname)
else
return require(name)
end
end
else
return require
end
end