diff --git a/data-cursor.go b/data-cursor.go index 26d2705..e4e9027 100644 --- a/data-cursor.go +++ b/data-cursor.go @@ -55,15 +55,16 @@ func mapToString(m map[string]Functor) string { func (dc *dataCursor) String() string { return "$()" -/* var sb strings.Builder - sb.WriteString(fmt.Sprintf(`$( - index: %d, - ds: %s, - ctx: `, dc.index, mapToString(dc.ds))) - CtxToBuilder(&sb, dc.ctx, 1) - sb.WriteByte(')') - return sb.String() -*/ + /* + var sb strings.Builder + sb.WriteString(fmt.Sprintf(`$( + index: %d, + ds: %s, + ctx: `, dc.index, mapToString(dc.ds))) + CtxToBuilder(&sb, dc.ctx, 1) + sb.WriteByte(')') + return sb.String() + */ } func (dc *dataCursor) HasOperation(name string) (exists bool) { @@ -75,9 +76,9 @@ func (dc *dataCursor) HasOperation(name string) (exists bool) { func (dc *dataCursor) CallOperation(name string, args []any) (value any, err error) { if functor, ok := dc.ds[name]; ok && isFunctor(functor) { if functor == dc.cleanFunc { - return nil, dc.Clean() + return dc.Clean() } else if functor == dc.resetFunc { - return nil, dc.Reset() + return dc.Reset() } else { ctx := cloneContext(dc.ctx) value, err = functor.Invoke(ctx, name, []any{}) @@ -90,7 +91,7 @@ func (dc *dataCursor) CallOperation(name string, args []any) (value any, err err return } -func (dc *dataCursor) Reset() (err error) { +func (dc *dataCursor) Reset() (success bool, err error) { if dc.resetFunc != nil { if dc.resource != nil { ctx := cloneContext(dc.ctx) @@ -104,10 +105,11 @@ func (dc *dataCursor) Reset() (err error) { } else { err = errNoOperation(resetName) } + success = err == nil return } -func (dc *dataCursor) Clean() (err error) { +func (dc *dataCursor) Clean() (success bool, err error) { if dc.cleanFunc != nil { if dc.resource != nil { ctx := cloneContext(dc.ctx) @@ -120,6 +122,7 @@ func (dc *dataCursor) Clean() (err error) { } else { err = errors.New("no 'clean' function defined in the data-source") } + success = err == nil return }