From 5eecbd6ef771a54b455d96f4033212062d7c3f8f Mon Sep 17 00:00:00 2001 From: SoniEx2 Date: Wed, 29 May 2024 23:00:53 -0300 Subject: Implement cratera bootstrap --- src/cratera.cratera.d/lib.cratera | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/cratera.cratera.d/lib.cratera (limited to 'src/cratera.cratera.d') 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 . +--]] + +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 + -- cgit 1.4.1