Module:utilities/require when needed

From Linguifex
< Module:utilities
Revision as of 10:03, 7 August 2024 by Sware (talk | contribs) (Created page with "local loaded = package.loaded local require = require local setmetatable = setmetatable return function(text, key) local module = loaded[text] if module then return key and module[key] or module end local mt = {} function mt:__index(k) module = module or key and require(text)[key] or require(text) return module[k] end function mt:__call(...) module = module or key and require(text)[key] or require(text) return module(...) end return setmetat...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Documentation for this module may be created at Module:utilities/require when needed/doc

local loaded = package.loaded
local require = require
local setmetatable = setmetatable

return function(text, key)
	local module = loaded[text]
	
	if module then
		return key and module[key] or module
	end
	
	local mt = {}
	
	function mt:__index(k)
		module = module or key and require(text)[key] or require(text)
		return module[k]
	end
	
	function mt:__call(...)
		module = module or key and require(text)[key] or require(text)
		return module(...)
	end
	
	return setmetatable({}, mt)
end