From 8ebc505f1be8e103039d220b2d824dd687777f24 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 30 Mar 2022 14:46:09 -0400 Subject: "when" macro for Try. --- stdlib/source/library/lux/control/try.lux | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'stdlib') diff --git a/stdlib/source/library/lux/control/try.lux b/stdlib/source/library/lux/control/try.lux index 4da14bb92..d00d15d28 100644 --- a/stdlib/source/library/lux/control/try.lux +++ b/stdlib/source/library/lux/control/try.lux @@ -150,4 +150,18 @@ (~ else))))]} _ - {#Failure "Wrong syntax for else"})) + {#Failure "Wrong syntax for 'else'"})) + +(macro: .public (when tokens state) + (case tokens + (pattern (.list test then)) + (let [code#encoded ("lux in-module" "library/lux" .code#encoded) + text$ ("lux in-module" "library/lux" .text$)] + {.#Right [state (.list (` (.if (~ test) + (~ then) + {..#Failure (~ (text$ ($_ "lux text concat" + "[" (code#encoded (` .when)) "]" + " " "Invalid condition:")))})))]}) + + _ + {.#Left "Wrong syntax for 'when'"})) -- cgit v1.2.3