diff options
Diffstat (limited to 'src/cratera.cratera.d/lib.cratera')
-rw-r--r-- | src/cratera.cratera.d/lib.cratera | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/cratera.cratera.d/lib.cratera b/src/cratera.cratera.d/lib.cratera new file mode 100644 index 0000000..701de31 --- /dev/null +++ b/src/cratera.cratera.d/lib.cratera @@ -0,0 +1,40 @@ +--[[ + Cratera Library + Copyright (C) 2024 Soni L. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +--]] + +local cratera_env = _G +local cratera_loader_base = cratera_env.load + +-- only use setfenv if load doesn't support env argument +local setfenv = (lua.loadstring or lua.load)("return setfenv", nil, nil, {})() + +function cratera_env.load(chunk, chunkname, mode, env) + if env == nil then + env = cratera_env + end + local func, err = cratera_loader_base(chunk, chunkname, mode, env) + if setfenv and func and env then + setfenv(func, env) + end + -- arity adjustments + if func then + return func + else + return func, err + end +end + |