aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2024-08-10 08:44:30 +0800
committerLi Jin <dragon-fly@qq.com>2024-08-10 08:44:30 +0800
commit0731d4fce42ba2f13c4d8f8ecba1680f79d48065 (patch)
treef23792407d639d2e1e7b0e340c33d16550959e4b
parent8c9408bde7735065447891999042369ff64c95af (diff)
downloadyuescript-0731d4fce42ba2f13c4d8f8ecba1680f79d48065.tar.gz
yuescript-0731d4fce42ba2f13c4d8f8ecba1680f79d48065.tar.bz2
yuescript-0731d4fce42ba2f13c4d8f8ecba1680f79d48065.zip
add a reusable macro env.
-rw-r--r--src/yuescript/yue_compiler.cpp2
-rw-r--r--src/yuescript/yuescript.h6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp
index 9e778d7..8ec131f 100644
--- a/src/yuescript/yue_compiler.cpp
+++ b/src/yuescript/yue_compiler.cpp
@@ -5117,7 +5117,7 @@ private:
5117 newArgs.emplace_back(_parser.toString(argsDef->varArg)); 5117 newArgs.emplace_back(_parser.toString(argsDef->varArg));
5118 } 5118 }
5119 } 5119 }
5120 std::string macroCodes = "_ENV=yue:require('yue'),<index>:_G,<newindex>:(k,v)=>_G[k]=v\n("s + join(newArgs, ","sv) + ")->"s + _parser.toString(macroLit->body); 5120 std::string macroCodes = "_ENV=require('yue').macro_env\n("s + join(newArgs, ","sv) + ")->"s + _parser.toString(macroLit->body);
5121 auto chunkName = "=(macro "s + macroName + ')'; 5121 auto chunkName = "=(macro "s + macroName + ')';
5122 pushCurrentModule(); // cur 5122 pushCurrentModule(); // cur
5123 int top = lua_gettop(L) - 1; 5123 int top = lua_gettop(L) - 1;
diff --git a/src/yuescript/yuescript.h b/src/yuescript/yuescript.h
index 97ebdef..f6d12dc 100644
--- a/src/yuescript/yuescript.h
+++ b/src/yuescript/yuescript.h
@@ -225,4 +225,10 @@ yue.pcall = yue_call
225yue.require = yue_require 225yue.require = yue_require
226yue.p = p 226yue.p = p
227yue.traceback = yue_traceback 227yue.traceback = yue_traceback
228yue.macro_env = setmetatable({yue = yue}, {
229 __index = _G,
230 __newindex = function(_, k, v)
231 _G[k] = v
232 end
233})
228)yuescript_codes"; 234)yuescript_codes";