From dd9aa5d52dc8e1aa1ce0c0f1e2708846c5f1b8c8 Mon Sep 17 00:00:00 2001 From: Celestino Amoroso Date: Fri, 31 Jul 2026 07:27:59 +0200 Subject: [PATCH] builtin-iterator.go: added supporto to automatic variables $_ (iterator index) and $__ (iterator item) --- builtin-iterator.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/builtin-iterator.go b/builtin-iterator.go index 5495453..f475fa0 100644 --- a/builtin-iterator.go +++ b/builtin-iterator.go @@ -92,13 +92,23 @@ func runFunc(ctx kern.ExprContext, name string, args map[string]any) (result any // params = map[string]any{kern.ParamIndex: it.Index(), kern.ParamItem: item} params[kern.ParamIndex] = it.Index() params[kern.ParamItem] = item + + localCtx.UnsafeSetVar("_", it.Index()) + localCtx.UnsafeSetVar("__", item) + + abort := false if _, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil { - break + abort = true } else if abortAny, exists := localCtx.GetVar(iterVarAbort); exists { if abort, ok := boolean.ToBool(abortAny); ok && abort { - break + abort = true } } + localCtx.DeleteVar("__") + localCtx.DeleteVar("_") + if abort { + break + } } }