From ddeb3f7a1e25667694eaf3c8bf639b66d6809cb4 Mon Sep 17 00:00:00 2001 From: Philipp Janda Date: Sat, 11 Apr 2015 17:09:37 +0200 Subject: split compat53 Lua module into separate modules that do/don't modify the global env --- compat53/module.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 compat53/module.lua (limited to 'compat53/module.lua') 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 @@ +local _G, _VERSION, debug, error, require, setfenv, setmetatable = + _G, _VERSION, debug, error, require, setfenv, setmetatable +local lua_version = _VERSION:sub(-3) +local M = require("compat53.base") + +local function findmain() + local i = 3 + local info = debug.getinfo(i, "fS") + while info do + if info.what == "main" then + return info.func + end + i = i + 1 + info = debug.getinfo(i, "fS") + end +end + +local main = findmain() +if not main then + error("must require 'compat53.module' from Lua") +end +local env = setmetatable({}, { + __index = M, + __newindex = _G, +}) +if lua_version == "5.1" then + setfenv(main, env) +elseif lua_version == "5.2" or lua_version == "5.3" then + debug.setupvalue(main, 1, env) +else + error("unsupported Lua version") +end + +-- return false to force reevaluation on next require +return false + +-- vi: set expandtab softtabstop=3 shiftwidth=3 : -- cgit v1.2.3-55-g6feb