Iterators now support generic operation interface based on methods HasOperation() and CallOperation().

Also fixed mul() function that called doAdd() instead of doMul().
This commit is contained in:
2024-04-28 06:45:20 +02:00
parent fc0e1ffaee
commit aa66d07caa
5 changed files with 100 additions and 16 deletions
+6 -1
View File
@@ -27,6 +27,11 @@ func doAdd(ctx ExprContext, name string, it Iterator) (result any, err error) {
if v, err = doAdd(ctx, name, subIter); err != nil {
break
}
if subIter.HasOperation(cleanName) {
if _, err = subIter.CallOperation(cleanName, nil); err != nil {
return
}
}
} else {
if err = checkNumberParamExpected(name, v, it.Index()); err != nil {
break
@@ -77,7 +82,7 @@ func doMul(ctx ExprContext, name string, it Iterator) (result any, err error) {
}
if array, ok := v.([]any); ok {
if v, err = doAdd(ctx, name, NewFlatArrayIterator(array)); err != nil {
if v, err = doMul(ctx, name, NewFlatArrayIterator(array)); err != nil {
break
}
}