minor changes
This commit is contained in:
+35
-1
@@ -133,7 +133,7 @@ func (dc *dataCursor) Current() (item any, err error) { // must return io.EOF at
|
||||
return
|
||||
}
|
||||
|
||||
func (dc *dataCursor) Next() (item any, err error) { // must return io.EOF after the last item
|
||||
func (dc *dataCursor) _Next() (item any, err error) { // must return io.EOF after the last item
|
||||
if dc.resource != nil {
|
||||
ctx := cloneContext(dc.ctx)
|
||||
// fmt.Printf("Entering Inner-Ctx [%p]: %s\n", ctx, CtxToString(ctx, 0))
|
||||
@@ -153,6 +153,40 @@ func (dc *dataCursor) Next() (item any, err error) { // must return io.EOF after
|
||||
return
|
||||
}
|
||||
|
||||
const filterName = "filter"
|
||||
func (dc *dataCursor) filter(item any) (filterdItem any, err error) {
|
||||
if filter, ok := dc.ds[filterName]; ok {
|
||||
ctx := cloneContext(dc.ctx)
|
||||
filterdItem, err = filter.Invoke(ctx, filterName, []any{item, dc.index});
|
||||
} else {
|
||||
filterdItem = item
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (dc *dataCursor) Next() (item any, err error) { // must return io.EOF after the last item
|
||||
if dc.resource != nil {
|
||||
ctx := cloneContext(dc.ctx)
|
||||
// fmt.Printf("Entering Inner-Ctx [%p]: %s\n", ctx, CtxToString(ctx, 0))
|
||||
for item == nil && err == nil {
|
||||
if item, err = dc.nextFunc.Invoke(ctx, nextName, []any{dc.resource}); err == nil {
|
||||
if item == nil {
|
||||
err = io.EOF
|
||||
} else {
|
||||
dc.index++
|
||||
item, err = dc.filter(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
// fmt.Printf("Exiting Inner-Ctx [%p]: %s\n", ctx, CtxToString(ctx, 0))
|
||||
exportObjects(dc.ctx, ctx)
|
||||
// fmt.Printf("Outer-Ctx [%p]: %s\n", dc.ctx, CtxToString(dc.ctx, 0))
|
||||
} else {
|
||||
err = errInvalidDataSource()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (dc *dataCursor) Index() int {
|
||||
return dc.index
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user