aboutsummaryrefslogtreecommitdiff
path: root/spec/inputs/macro_export.yue
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2023-07-28 11:53:04 +0800
committerLi Jin <dragon-fly@qq.com>2023-07-28 11:53:04 +0800
commit5497775534d20ba06ab9c13bc4db1c5bee877513 (patch)
treebe68d03cf0928efca4a579125e4ba15ef3ab9325 /spec/inputs/macro_export.yue
parentf415df9617d251abd802257d9750618ccc71ca93 (diff)
downloadyuescript-5497775534d20ba06ab9c13bc4db1c5bee877513.tar.gz
yuescript-5497775534d20ba06ab9c13bc4db1c5bee877513.tar.bz2
yuescript-5497775534d20ba06ab9c13bc4db1c5bee877513.zip
fix xpcall usages in different Lua version.
Diffstat (limited to 'spec/inputs/macro_export.yue')
-rw-r--r--spec/inputs/macro_export.yue50
1 files changed, 50 insertions, 0 deletions
diff --git a/spec/inputs/macro_export.yue b/spec/inputs/macro_export.yue
new file mode 100644
index 0000000..eec5848
--- /dev/null
+++ b/spec/inputs/macro_export.yue
@@ -0,0 +1,50 @@
1import "macro_todo" as $
2
3import "macro_todo" as {$, :$todo}
4
5export macro config = (debugging = true)->
6 global debugMode = debugging == "true"
7 global debugMacro = true
8 ""
9
10export macro showMacro = (name, res)->
11 if debugMacro then "
12do
13 txt = #{res}
14 print '[macro ' .. #{name} .. ']'
15 print txt
16 txt
17"
18 else
19 res
20
21export macro asserts = (cond)->
22 if debugMode
23 $showMacro "assert", "assert #{cond}"
24 else
25 ""
26
27export macro assert = (cond)->
28 if debugMode
29 $showMacro "assert", "assert #{cond}"
30 else
31 "#{cond}"
32
33export macro copy = (src, dst, ...)->
34 assert(
35 src != "_src_" and src != "_dst_" and dst != "_src_" and dst != "_dst_"
36 "copy targets can not be _src_ or _dst_"
37 )
38 "
39do
40 local _src_, _dst_
41 with _dst_ = #{dst}
42 with _src_ = #{src}
43#{table.concat for field in *{...} do "
44 _dst_.#{field} = _src_.#{field}
45"}"
46
47$ ->
48 global debugMode = true
49 global debugMacro = true
50