본문으로 이동

모듈:utilities/require when needed

위키낱말사전, 말과 글의 누리

이 모듈에 대한 설명문서는 모듈:utilities/require when needed/설명문서에서 만들 수 있습니다

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