mirror of
				https://github.com/taigrr/yq
				synced 2025-01-18 04:53:17 -08:00 
			
		
		
		
	Dont use pointer for multiply prefs (avoid nil)
This commit is contained in:
		
							parent
							
								
									0fb62d3ae1
								
							
						
					
					
						commit
						8980846632
					
				| @ -98,7 +98,7 @@ func multiplyWithPrefs() lex.Action { | |||||||
| 		if strings.Contains(options, "?") { | 		if strings.Contains(options, "?") { | ||||||
| 			prefs.TraversePrefs = traversePreferences{DontAutoCreate: true} | 			prefs.TraversePrefs = traversePreferences{DontAutoCreate: true} | ||||||
| 		} | 		} | ||||||
| 		op := &Operation{OperationType: multiplyOpType, Value: multiplyOpType.Type, StringValue: options, Preferences: &prefs} | 		op := &Operation{OperationType: multiplyOpType, Value: multiplyOpType.Type, StringValue: options, Preferences: prefs} | ||||||
| 		return &token{TokenType: operationToken, Operation: op}, nil | 		return &token{TokenType: operationToken, Operation: op}, nil | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @ -296,7 +296,6 @@ func initLexer() (*lex.Lexer, error) { | |||||||
| 	lexer.Add([]byte(`\]`), literalToken(closeCollect, true)) | 	lexer.Add([]byte(`\]`), literalToken(closeCollect, true)) | ||||||
| 	lexer.Add([]byte(`\{`), literalToken(openCollectObject, false)) | 	lexer.Add([]byte(`\{`), literalToken(openCollectObject, false)) | ||||||
| 	lexer.Add([]byte(`\}`), literalToken(closeCollectObject, true)) | 	lexer.Add([]byte(`\}`), literalToken(closeCollectObject, true)) | ||||||
| 	lexer.Add([]byte(`\*`), opTokenWithPrefs(multiplyOpType, nil, &multiplyPreferences{AppendArrays: false})) |  | ||||||
| 	lexer.Add([]byte(`\*[\+|\?]*`), multiplyWithPrefs()) | 	lexer.Add([]byte(`\*[\+|\?]*`), multiplyWithPrefs()) | ||||||
| 	lexer.Add([]byte(`\+`), opToken(addOpType)) | 	lexer.Add([]byte(`\+`), opToken(addOpType)) | ||||||
| 	lexer.Add([]byte(`\+=`), opToken(addAssignOpType)) | 	lexer.Add([]byte(`\+=`), opToken(addAssignOpType)) | ||||||
|  | |||||||
| @ -87,7 +87,7 @@ func collect(d *dataTreeNavigator, aggregate *list.List, remainingMatches *list. | |||||||
| 
 | 
 | ||||||
| 			newCandidate.Path = nil | 			newCandidate.Path = nil | ||||||
| 
 | 
 | ||||||
| 			newCandidate, err = multiply(&multiplyPreferences{AppendArrays: false})(d, newCandidate, splatCandidate) | 			newCandidate, err = multiply(multiplyPreferences{AppendArrays: false})(d, newCandidate, splatCandidate) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return nil, err | 				return nil, err | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -50,10 +50,10 @@ type multiplyPreferences struct { | |||||||
| 
 | 
 | ||||||
| func multiplyOperator(d *dataTreeNavigator, matchingNodes *list.List, expressionNode *ExpressionNode) (*list.List, error) { | func multiplyOperator(d *dataTreeNavigator, matchingNodes *list.List, expressionNode *ExpressionNode) (*list.List, error) { | ||||||
| 	log.Debugf("-- MultiplyOperator") | 	log.Debugf("-- MultiplyOperator") | ||||||
| 	return crossFunction(d, matchingNodes, expressionNode, multiply(expressionNode.Operation.Preferences.(*multiplyPreferences))) | 	return crossFunction(d, matchingNodes, expressionNode, multiply(expressionNode.Operation.Preferences.(multiplyPreferences))) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func multiply(preferences *multiplyPreferences) func(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { | func multiply(preferences multiplyPreferences) func(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { | ||||||
| 	return func(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { | 	return func(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error) { | ||||||
| 		lhs.Node = unwrapDoc(lhs.Node) | 		lhs.Node = unwrapDoc(lhs.Node) | ||||||
| 		rhs.Node = unwrapDoc(rhs.Node) | 		rhs.Node = unwrapDoc(rhs.Node) | ||||||
| @ -64,7 +64,7 @@ func multiply(preferences *multiplyPreferences) func(d *dataTreeNavigator, lhs * | |||||||
| 			(lhs.Node.Kind == yaml.SequenceNode && rhs.Node.Kind == yaml.SequenceNode) { | 			(lhs.Node.Kind == yaml.SequenceNode && rhs.Node.Kind == yaml.SequenceNode) { | ||||||
| 
 | 
 | ||||||
| 			var newBlank = lhs.CreateChild(nil, &yaml.Node{}) | 			var newBlank = lhs.CreateChild(nil, &yaml.Node{}) | ||||||
| 			var newThing, err = mergeObjects(d, newBlank, lhs, &multiplyPreferences{}) | 			var newThing, err = mergeObjects(d, newBlank, lhs, multiplyPreferences{}) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return nil, err | 				return nil, err | ||||||
| 			} | 			} | ||||||
| @ -75,7 +75,7 @@ func multiply(preferences *multiplyPreferences) func(d *dataTreeNavigator, lhs * | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func mergeObjects(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode, preferences *multiplyPreferences) (*CandidateNode, error) { | func mergeObjects(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode, preferences multiplyPreferences) (*CandidateNode, error) { | ||||||
| 	shouldAppendArrays := preferences.AppendArrays | 	shouldAppendArrays := preferences.AppendArrays | ||||||
| 	var results = list.New() | 	var results = list.New() | ||||||
| 
 | 
 | ||||||
| @ -101,7 +101,7 @@ func mergeObjects(d *dataTreeNavigator, lhs *CandidateNode, rhs *CandidateNode, | |||||||
| 	return lhs, nil | 	return lhs, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func applyAssignment(d *dataTreeNavigator, pathIndexToStartFrom int, lhs *CandidateNode, rhs *CandidateNode, preferences *multiplyPreferences) error { | func applyAssignment(d *dataTreeNavigator, pathIndexToStartFrom int, lhs *CandidateNode, rhs *CandidateNode, preferences multiplyPreferences) error { | ||||||
| 	shouldAppendArrays := preferences.AppendArrays | 	shouldAppendArrays := preferences.AppendArrays | ||||||
| 	log.Debugf("merge - applyAssignment lhs %v, rhs: %v", NodeToString(lhs), NodeToString(rhs)) | 	log.Debugf("merge - applyAssignment lhs %v, rhs: %v", NodeToString(lhs), NodeToString(rhs)) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user