watercoldyi
6/8/2018 - 6:54 AM

import.lua

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