mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-30 21:23:00 +00:00 
			
		
		
		
	| @@ -31,22 +31,37 @@ local function preload(package) | |||||||
|     end |     end | ||||||
| end | end | ||||||
|  |  | ||||||
| local function from_file(package, env, dir) | local function from_file(package, env) | ||||||
|     return function(name) |     return function(name) | ||||||
|         local fname = string.gsub(name, "%.", "/") |         local sPath, sError = package.searchpath(name, package.path) | ||||||
|  |         if not sPath then | ||||||
|  |             return nil, sError | ||||||
|  |         end | ||||||
|  |         local fnFile, sError = loadfile(sPath, nil, env) | ||||||
|  |         if fnFile then | ||||||
|  |             return fnFile, sPath | ||||||
|  |         else | ||||||
|  |             return nil, sError | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | local function make_searchpath(dir) | ||||||
|  |     return function(name, path, sep, rep) | ||||||
|  |         expect(1, name, "string") | ||||||
|  |         expect(2, path, "string") | ||||||
|  |         sep = expect(3, sep, "string", "nil") or "." | ||||||
|  |         rep = expect(4, rep, "string", "nil") or "/" | ||||||
|  |  | ||||||
|  |         local fname = string.gsub(name, sep:gsub("%.", "%%%."), rep) | ||||||
|         local sError = "" |         local sError = "" | ||||||
|         for pattern in string.gmatch(package.path, "[^;]+") do |         for pattern in string.gmatch(path, "[^;]+") do | ||||||
|             local sPath = string.gsub(pattern, "%?", fname) |             local sPath = string.gsub(pattern, "%?", fname) | ||||||
|             if sPath:sub(1, 1) ~= "/" then |             if sPath:sub(1, 1) ~= "/" then | ||||||
|                 sPath = fs.combine(dir, sPath) |                 sPath = fs.combine(dir, sPath) | ||||||
|             end |             end | ||||||
|             if fs.exists(sPath) and not fs.isDir(sPath) then |             if fs.exists(sPath) and not fs.isDir(sPath) then | ||||||
|                 local fnFile, sError = loadfile(sPath, nil, env) |                 return sPath | ||||||
|                 if fnFile then |  | ||||||
|                     return fnFile, sPath |  | ||||||
|                 else |  | ||||||
|                     return nil, sError |  | ||||||
|                 end |  | ||||||
|             else |             else | ||||||
|                 if #sError > 0 then |                 if #sError > 0 then | ||||||
|                     sError = sError .. "\n  " |                     sError = sError .. "\n  " | ||||||
| @@ -118,7 +133,8 @@ local function make_package(env, dir) | |||||||
|     end |     end | ||||||
|     package.config = "/\n;\n?\n!\n-" |     package.config = "/\n;\n?\n!\n-" | ||||||
|     package.preload = {} |     package.preload = {} | ||||||
|     package.loaders = { preload(package), from_file(package, env, dir) } |     package.loaders = { preload(package), from_file(package, env) } | ||||||
|  |     package.searchpath = make_searchpath(dir) | ||||||
|  |  | ||||||
|     return make_require(package), package |     return make_require(package), package | ||||||
| end | end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonathan Coates
					Jonathan Coates