From 94edfbc8c7d62d700dfb59334a0ed3beedd49493 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Mon, 5 Aug 2024 17:20:00 +0800 Subject: add macros generating macros feature. --- spec/inputs/macro.yue | 33 +++++++++++++++++++++++++++++++++ spec/inputs/macro_export.yue | 18 ++++++++++++++++++ spec/outputs/codes_from_doc.lua | 2 ++ spec/outputs/codes_from_doc_zh.lua | 2 ++ spec/outputs/macro.lua | 11 ++++++++++- 5 files changed, 65 insertions(+), 1 deletion(-) (limited to 'spec') diff --git a/spec/inputs/macro.yue b/spec/inputs/macro.yue index ae14f53..a2e1046 100644 --- a/spec/inputs/macro.yue +++ b/spec/inputs/macro.yue @@ -5,6 +5,39 @@ import "macro_export" as { import "macro_todo" as $ +macro WindowFlag = $enum( + NoNav + NoDecoration + NoTitleBar + NoResize + NoMove + NoScrollbar + NoScrollWithMouse + NoCollapse + AlwaysAutoResize + NoSavedSettings + NoInputs + MenuBar + HorizontalScrollbar + NoFocusOnAppearing + NoBringToFrontOnFocus + AlwaysVerticalScrollbar + AlwaysHorizontalScrollbar + NoNavInputs + NoNavFocus + UnsavedDocument +) + +print $WindowFlag AlwaysAutoResize +print $WindowFlag( + NoNav + NoDecoration + NoTitleBar + NoResize + NoMove + NoScrollbar +) + $asserts item == nil $myconfig false diff --git a/spec/inputs/macro_export.yue b/spec/inputs/macro_export.yue index eec5848..cc7d459 100644 --- a/spec/inputs/macro_export.yue +++ b/spec/inputs/macro_export.yue @@ -44,6 +44,24 @@ do _dst_.#{field} = _src_.#{field} "}" +export macro enum = (...) -> + items = {...} + items = [item\gsub('"', '') for item in *items] + itemSet = {item, true for item in *items} + (...) -> + count = select "#", ... + if 1 < count + result = "[" + for i = 1, count + item = select i, ... + error "got \"#{item}\", expecting one of #{table.concat items, ', '}" unless itemSet[item] + result ..= "\"#{item}\"," + result .. "]" + else + item = select 1, ... + error "got \"#{item}\", expecting one of #{table.concat items, ', '}" unless itemSet[item] + "\"#{item}\"" + $ -> global debugMode = true global debugMacro = true diff --git a/spec/outputs/codes_from_doc.lua b/spec/outputs/codes_from_doc.lua index 6f61569..4073056 100644 --- a/spec/outputs/codes_from_doc.lua +++ b/spec/outputs/codes_from_doc.lua @@ -71,6 +71,7 @@ if cond then end print("yuescript") print(3) +print("Valid enum type:", "Static") if tb ~= nil then tb:func() end @@ -2068,6 +2069,7 @@ if cond then end print("yuescript") print(3) +print("Valid enum type:", "Static") if tb ~= nil then tb:func() end diff --git a/spec/outputs/codes_from_doc_zh.lua b/spec/outputs/codes_from_doc_zh.lua index aa53926..f251450 100644 --- a/spec/outputs/codes_from_doc_zh.lua +++ b/spec/outputs/codes_from_doc_zh.lua @@ -71,6 +71,7 @@ if cond then end print("yuescript") print(3) +print("有效的枚举类型:", "Static") if tb ~= nil then tb:func() end @@ -2062,6 +2063,7 @@ if cond then end print("yuescript") print(3) +print("有效的枚举类型:", "Static") if tb ~= nil then tb:func() end diff --git a/spec/outputs/macro.lua b/spec/outputs/macro.lua index 2ee3e0a..953c260 100644 --- a/spec/outputs/macro.lua +++ b/spec/outputs/macro.lua @@ -1,3 +1,12 @@ +print("AlwaysAutoResize") +print({ + "NoNav", + "NoDecoration", + "NoTitleBar", + "NoResize", + "NoMove", + "NoScrollbar" +}) do assert(item == nil) end @@ -285,7 +294,7 @@ print((setmetatable({ return 998 end })) -print("current line: " .. tostring(268)) +print("current line: " .. tostring(301)) do -- TODO end -- cgit v1.2.3-55-g6feb