From df68450ad8f58f23f9a92edd2433ec1b515df56f Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 28 Jun 2022 04:38:31 +0000 Subject: [PATCH] setMin, setMax --- kiss/src/kiss/Helpers.hx | 1 + kiss/src/kiss/Macros.hx | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/kiss/src/kiss/Helpers.hx b/kiss/src/kiss/Helpers.hx index d590c40a..e9b195a9 100644 --- a/kiss/src/kiss/Helpers.hx +++ b/kiss/src/kiss/Helpers.hx @@ -633,6 +633,7 @@ class Helpers { field: field, keyValue: (key:ReaderExp, value:ReaderExp) -> KeyValueExp(key, value).withPosOf(posRef), begin: (exps:Array) -> callSymbol("begin", exps), + set: (v:ReaderExp, value:ReaderExp) -> callSymbol("set", [v, value]), let: let, objectWith: objectWith, throwKissError: (reason:String) -> { diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 383f2b64..694d2300 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -960,6 +960,22 @@ class Macros { b.begin(k.collectedBlocks[blockName]); }; + // These are implemented as variadic functions, so checkNumArgs() is never actually called, + // but the docs might be useful + k.doc("min", 2, null, "(min )"); + k.doc("max", 2, null, "(max )"); + + k.doc("setMin", 2, null, "(setMin )"); + k.doc("setMax", 2, null, "(setMax )"); + function setCompMacro(compType:String) { + return (wholeExp:ReaderExp, exps:Array, k:KissState) -> { + var b = wholeExp.expBuilder(); + b.set(exps[0], b.callSymbol(compType, exps)); + } + } + macros["setMin"] = setCompMacro("min"); + macros["setMax"] = setCompMacro("max"); + k.doc("clamp", 2, 3, "(clamp )"); macros["clamp"] = (wholeExp:ReaderExp, exps:Array, k:KissState) -> { var b = wholeExp.expBuilder();