builtin-iterator.go: added supporto to automatic variables $_ (iterator index) and $__ (iterator item)
This commit is contained in:
+12
-2
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user