operand-iterator.go: commented out an unused function and replaced self receiver
This commit is contained in:
		
							parent
							
								
									bb9493d0cc
								
							
						
					
					
						commit
						2ed1a1842b
					
				| @ -5,28 +5,27 @@ | ||||
| package expr | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"slices" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| // -------- iterator term
 | ||||
| 
 | ||||
| func newDsIteratorTerm(tk *Token, dsTerm *term, args []*term) *term { | ||||
| 	tk.Sym = SymIterator | ||||
| // func newDsIteratorTerm(tk *Token, dsTerm *term, args []*term) *term {
 | ||||
| // 	tk.Sym = SymIterator
 | ||||
| 
 | ||||
| 	children := make([]*term, 0, 1+len(args)) | ||||
| 	children = append(children, dsTerm) | ||||
| 	children = append(children, args...) | ||||
| 	return &term{ | ||||
| 		tk:       *tk, | ||||
| 		parent:   nil, | ||||
| 		children: children, | ||||
| 		position: posLeaf, | ||||
| 		priority: priValue, | ||||
| 		evalFunc: evalIterator, | ||||
| 	} | ||||
| } | ||||
| // 	children := make([]*term, 0, 1+len(args))
 | ||||
| // 	children = append(children, dsTerm)
 | ||||
| // 	children = append(children, args...)
 | ||||
| // 	return &term{
 | ||||
| // 		tk:       *tk,
 | ||||
| // 		parent:   nil,
 | ||||
| // 		children: children,
 | ||||
| // 		position: posLeaf,
 | ||||
| // 		priority: priValue,
 | ||||
| // 		evalFunc: evalIterator,
 | ||||
| // 	}
 | ||||
| // }
 | ||||
| 
 | ||||
| func newIteratorTerm(tk *Token, args []*term) *term { | ||||
| 	tk.Sym = SymIterator | ||||
| @ -42,9 +41,9 @@ func newIteratorTerm(tk *Token, args []*term) *term { | ||||
| 
 | ||||
| // -------- eval iterator
 | ||||
| 
 | ||||
| func evalTermArray(ctx ExprContext, a []*term) (values []any, err error) { | ||||
| 	values = make([]any, len(a)) | ||||
| 	for i, t := range a { | ||||
| func evalTermArray(ctx ExprContext, terms []*term) (values []any, err error) { | ||||
| 	values = make([]any, len(terms)) | ||||
| 	for i, t := range terms { | ||||
| 		var value any | ||||
| 		if value, err = t.compute(ctx); err == nil { | ||||
| 			values[i] = value | ||||
| @ -55,18 +54,17 @@ func evalTermArray(ctx ExprContext, a []*term) (values []any, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func evalFirstChild(ctx ExprContext, self *term) (value any, err error) { | ||||
| 	if len(self.children) < 1 || self.children[0] == nil { | ||||
| 		err = self.Errorf("missing the data-source parameter") | ||||
| func evalFirstChild(ctx ExprContext, iteratorTerm *term) (value any, err error) { | ||||
| 	if len(iteratorTerm.children) < 1 || iteratorTerm.children[0] == nil { | ||||
| 		err = iteratorTerm.Errorf("missing the data-source parameter") | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	value, err = self.children[0].compute(ctx) | ||||
| 	value, err = iteratorTerm.children[0].compute(ctx) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func getDataSourceDict(ctx ExprContext, self *term, firstChildValue any) (ds map[string]Functor, err error) { | ||||
| 	// if dictAny, ok := firstChildValue.(map[any]any); ok {
 | ||||
| func getDataSourceDict(iteratorTerm *term, firstChildValue any) (ds map[string]Functor, err error) { | ||||
| 	if dictAny, ok := firstChildValue.(*DictType); ok { | ||||
| 		requiredFields := []string{currentName, nextName} | ||||
| 		fieldsMask := 0b11 | ||||
| @ -74,7 +72,6 @@ func getDataSourceDict(ctx ExprContext, self *term, firstChildValue any) (ds map | ||||
| 		ds = make(map[string]Functor) | ||||
| 		for keyAny, item := range *dictAny { | ||||
| 			if key, ok := keyAny.(string); ok { | ||||
| 				//if functor, ok := item.(*funcDefFunctor); ok {
 | ||||
| 				if functor, ok := item.(Functor); ok { | ||||
| 					ds[key] = functor | ||||
| 					if index := slices.Index(requiredFields, key); index >= 0 { | ||||
| @ -91,21 +88,22 @@ func getDataSourceDict(ctx ExprContext, self *term, firstChildValue any) (ds map | ||||
| 					missingFields = append(missingFields, field) | ||||
| 				} | ||||
| 			} | ||||
| 			err = fmt.Errorf("the data-source must provide a non-nil %q operator(s)", strings.Join(missingFields, ", ")) | ||||
| //			err = fmt.Errorf("the data-source must provide a non-nil %q operator(s)", strings.Join(missingFields, ", "))
 | ||||
| 			err = iteratorTerm.children[0].Errorf("the data-source must provide a non-nil %q operator(s)", strings.Join(missingFields, ", ")) | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func evalIterator(ctx ExprContext, self *term) (v any, err error) { | ||||
| func evalIterator(ctx ExprContext, iteratorTerm *term) (v any, err error) { | ||||
| 	var firstChildValue any | ||||
| 	var ds map[string]Functor | ||||
| 
 | ||||
| 	if firstChildValue, err = evalFirstChild(ctx, self); err != nil { | ||||
| 	if firstChildValue, err = evalFirstChild(ctx, iteratorTerm); err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if ds, err = getDataSourceDict(ctx, self, firstChildValue); err != nil { | ||||
| 	if ds, err = getDataSourceDict(iteratorTerm, firstChildValue); err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| @ -113,8 +111,8 @@ func evalIterator(ctx ExprContext, self *term) (v any, err error) { | ||||
| 		dc := newDataCursor(ctx, ds) | ||||
| 		if initFunc, exists := ds[initName]; exists && initFunc != nil { | ||||
| 			var args []any | ||||
| 			if len(self.children) > 1 { | ||||
| 				if args, err = evalTermArray(ctx, self.children[1:]); err != nil { | ||||
| 			if len(iteratorTerm.children) > 1 { | ||||
| 				if args, err = evalTermArray(ctx, iteratorTerm.children[1:]); err != nil { | ||||
| 					return | ||||
| 				} | ||||
| 			} else { | ||||
| @ -128,20 +126,20 @@ func evalIterator(ctx ExprContext, self *term) (v any, err error) { | ||||
| 			exportObjects(dc.ctx, initCtx) | ||||
| 		} | ||||
| 
 | ||||
| 		dc.nextFunc, _ = ds[nextName] | ||||
| 		dc.currentFunc, _ = ds[currentName] | ||||
| 		dc.cleanFunc, _ = ds[cleanName] | ||||
| 		dc.resetFunc, _ = ds[resetName] | ||||
| 		dc.nextFunc = ds[nextName] | ||||
| 		dc.currentFunc = ds[currentName] | ||||
| 		dc.cleanFunc = ds[cleanName] | ||||
| 		dc.resetFunc = ds[resetName] | ||||
| 
 | ||||
| 		v = dc | ||||
| 	} else if list, ok := firstChildValue.(*ListType); ok { | ||||
| 		var args []any | ||||
| 		if args, err = evalSibling(ctx, self.children, nil); err == nil { | ||||
| 		if args, err = evalSibling(ctx, iteratorTerm.children, nil); err == nil { | ||||
| 			v = NewListIterator(list, args) | ||||
| 		} | ||||
| 	} else { | ||||
| 		var list []any | ||||
| 		if list, err = evalSibling(ctx, self.children, firstChildValue); err == nil { | ||||
| 		if list, err = evalSibling(ctx, iteratorTerm.children, firstChildValue); err == nil { | ||||
| 			v = NewArrayIterator(list) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user