aboutsummaryrefslogtreecommitdiff
path: root/compat53/module.lua
diff options
context:
space:
mode:
Diffstat (limited to 'compat53/module.lua')
-rw-r--r--compat53/module.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/compat53/module.lua b/compat53/module.lua
new file mode 100644
index 0000000..f6fd1f7
--- /dev/null
+++ b/compat53/module.lua
@@ -0,0 +1,37 @@
1local _G, _VERSION, debug, error, require, setfenv, setmetatable =
2 _G, _VERSION, debug, error, require, setfenv, setmetatable
3local lua_version = _VERSION:sub(-3)
4local M = require("compat53.base")
5
6local function findmain()
7 local i = 3
8 local info = debug.getinfo(i, "fS")
9 while info do
10 if info.what == "main" then
11 return info.func
12 end
13 i = i + 1
14 info = debug.getinfo(i, "fS")
15 end
16end
17
18local main = findmain()
19if not main then
20 error("must require 'compat53.module' from Lua")
21end
22local env = setmetatable({}, {
23 __index = M,
24 __newindex = _G,
25})
26if lua_version == "5.1" then
27 setfenv(main, env)
28elseif lua_version == "5.2" or lua_version == "5.3" then
29 debug.setupvalue(main, 1, env)
30else
31 error("unsupported Lua version")
32end
33
34-- return false to force reevaluation on next require
35return false
36
37-- vi: set expandtab softtabstop=3 shiftwidth=3 :