From 6bb03cc46887bdd8094776f88885895c11280066 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 17 Nov 2021 16:03:07 -0700 Subject: [PATCH] indexOf macro --- kiss/src/kiss/Macros.hx | 13 +++++++++++++ kiss/src/test/cases/BasicTestCase.kiss | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 6cefd6c7..578fd86f 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -1076,6 +1076,19 @@ class Macros { ].concat(body))]); }; + function indexOfMacro(last:Bool, wholeExp:ReaderExp, exps:Array, k:KissState) { + var funcName = if (last) "lastIndexOf" else "indexOf"; + wholeExp.checkNumArgs(2, 3, '($funcName )'); + var b = wholeExp.expBuilder(); + return b.callSymbol("case", [ + b.callField(funcName, exps.shift(), exps), + b.callSymbol("-1", [b.symbol("haxe.ds.Option.None")]), + b.callSymbol("other", [b.callSymbol("haxe.ds.Option.Some", [b.symbol("other")])]) + ]); + } + macros["indexOf"] = indexOfMacro.bind(false); + macros["lastIndexOf"] = indexOfMacro.bind(true); + return macros; } diff --git a/kiss/src/test/cases/BasicTestCase.kiss b/kiss/src/test/cases/BasicTestCase.kiss index 7c0e7642..a7cf264f 100644 --- a/kiss/src/test/cases/BasicTestCase.kiss +++ b/kiss/src/test/cases/BasicTestCase.kiss @@ -399,8 +399,8 @@ (Assert.equals "you" (dictGet myMap "hey")) (Assert.equals "me" (dictGet myMap "found")) (doFor =>key value myMap - (Assert.isTrue (<= 0 (.indexOf ["hey" "found"] key))) - (Assert.isTrue (<= 0 (.indexOf ["you" "me"] value)))) + (assertLet [(Some _) (indexOf ["hey" "found"] key)] 0) + (assertLet [(Some _) (indexOf ["you" "me"] value)] 0)) // Map destructuring: (let [[=>"hey" v1 =>"found" v2] myMap]