builtin-iterator.go/run(): removed default operator (print item)
This commit is contained in:
parent
b6952444ab
commit
0677180456
@ -23,9 +23,11 @@ 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 {
|
||||||
err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator]))
|
if op, ok = args[iterParamOperator].(Functor); !ok || op == nil {
|
||||||
return
|
err = fmt.Errorf("paramter %q must be a function, passed %v [%s]", iterParamOperator, args[iterParamOperator], TypeName(args[iterParamOperator]))
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var vars *DictType
|
var vars *DictType
|
||||||
@ -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,24 +62,27 @@ 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 v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil {
|
if op != nil {
|
||||||
break
|
params = map[string]any{ParamIndex: it.Index(), ParamItem: item}
|
||||||
} else {
|
if v, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil {
|
||||||
var success bool
|
|
||||||
if success, ok = ToBool(v); !success || !ok {
|
|
||||||
break
|
break
|
||||||
|
} else {
|
||||||
|
var success bool
|
||||||
|
if success, ok = ToBool(v); !success || !ok {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -86,6 +91,9 @@ func runFunc(ctx ExprContext, name string, args map[string]any) (result any, err
|
|||||||
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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user