builtin-iterator.go/run(): removed default operator (print item)

This commit is contained in:
Celestino Amoroso 2026-04-23 18:55:03 +02:00
parent b6952444ab
commit 0677180456

View File

@ -23,10 +23,12 @@ func parseRunArgs(localCtx ExprContext, args map[string]any) (it Iterator, op Fu
return return
} }
if op, ok = args[iterParamOperator].(Functor); !ok && args[iterParamOperator] != nil { if args[iterParamOperator] != nil {
if op, ok = args[iterParamOperator].(Functor); !ok || op == nil {
err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator])) err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator]))
return return
} }
}
var vars *DictType var vars *DictType
if vars, ok = args[iterParamVars].(*DictType); !ok && args[iterParamVars] != nil { if vars, ok = args[iterParamVars].(*DictType); !ok && args[iterParamVars] != nil {
@ -51,7 +53,7 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err
var ok bool var ok bool
var op Functor var op Functor
var v any var v any
var usingDefaultOp = false // var usingDefaultOp = false
var params map[string]any var params map[string]any
var item any var item any
@ -60,18 +62,20 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err
if it, op, err = parseRunArgs(localCtx, args); err != nil { if it, op, err = parseRunArgs(localCtx, args); err != nil {
return return
} else if op == nil { // } else if op == nil {
op = NewGolangFunctor(printLnFunc) // op = NewGolangFunctor(printLnFunc)
usingDefaultOp = true // usingDefaultOp = true
} }
for item, err = it.Next(); err == nil; item, err = it.Next() { for item, err = it.Next(); err == nil; item, err = it.Next() {
if usingDefaultOp { // if usingDefaultOp {
params = map[string]any{ParamItem: []any{item}} // params = map[string]any{ParamItem: []any{item}}
} else { // } else {
params = map[string]any{ParamIndex: it.Index(), ParamItem: item} // params = map[string]any{ParamIndex: it.Index(), ParamItem: item}
} // }
if op != nil {
params = map[string]any{ParamIndex: it.Index(), ParamItem: item}
if v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil { if v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil {
break break
} else { } else {
@ -81,11 +85,15 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err
} }
} }
} }
}
if err == io.EOF { if err == io.EOF {
err = nil err = nil
} }
if err == nil { if err == nil {
if op == nil {
ctx.UnsafeSetVar(iterVarStatus, it.Count())
}
result, _ = localCtx.GetVar(iterVarStatus) result, _ = localCtx.GetVar(iterVarStatus)
} }
return return