mirror of
				https://github.com/taigrr/yq
				synced 2025-01-18 04:53:17 -08:00 
			
		
		
		
	adding pipe
This commit is contained in:
		
							parent
							
								
									afffb2c3ba
								
							
						
					
					
						commit
						449fb8952c
					
				| @ -357,7 +357,7 @@ func TestDataTreeNavigatorCountMultipleMatchesInside(t *testing.T) { | |||||||
|   b: dally |   b: dally | ||||||
|   c: [3,4,5]`) |   c: [3,4,5]`) | ||||||
| 
 | 
 | ||||||
| 	path, errPath := treeCreator.ParsePath("f(count(a or c))") | 	path, errPath := treeCreator.ParsePath("f | count(a or c)") | ||||||
| 	if errPath != nil { | 	if errPath != nil { | ||||||
| 		t.Error(errPath) | 		t.Error(errPath) | ||||||
| 	} | 	} | ||||||
| @ -384,7 +384,7 @@ func TestDataTreeNavigatorCollectMultipleMatchesInside(t *testing.T) { | |||||||
|   b: dally |   b: dally | ||||||
|   c: [3,4,5]`) |   c: [3,4,5]`) | ||||||
| 
 | 
 | ||||||
| 	path, errPath := treeCreator.ParsePath("f(collect(a or c))") | 	path, errPath := treeCreator.ParsePath("f | collect(a or c)") | ||||||
| 	if errPath != nil { | 	if errPath != nil { | ||||||
| 		t.Error(errPath) | 		t.Error(errPath) | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -30,15 +30,15 @@ type OperationType struct { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var None = &OperationType{Type: "NONE", NumArgs: 0, Precedence: 0} | var None = &OperationType{Type: "NONE", NumArgs: 0, Precedence: 0} | ||||||
| var Traverse = &OperationType{Type: "TRAVERSE", NumArgs: 2, Precedence: 40, Handler: TraverseOperator} | var Traverse = &OperationType{Type: "TRAVERSE", NumArgs: 2, Precedence: 35, Handler: TraverseOperator} | ||||||
| var Or = &OperationType{Type: "OR", NumArgs: 2, Precedence: 10, Handler: UnionOperator} | var Or = &OperationType{Type: "OR", NumArgs: 2, Precedence: 10, Handler: UnionOperator} | ||||||
| var And = &OperationType{Type: "AND", NumArgs: 2, Precedence: 20, Handler: IntersectionOperator} | var And = &OperationType{Type: "AND", NumArgs: 2, Precedence: 20, Handler: IntersectionOperator} | ||||||
| var Equals = &OperationType{Type: "EQUALS", NumArgs: 2, Precedence: 30, Handler: EqualsOperator} | var Equals = &OperationType{Type: "EQUALS", NumArgs: 2, Precedence: 30, Handler: EqualsOperator} | ||||||
| var Assign = &OperationType{Type: "ASSIGN", NumArgs: 2, Precedence: 35, Handler: AssignOperator} | var Assign = &OperationType{Type: "ASSIGN", NumArgs: 2, Precedence: 40, Handler: AssignOperator} | ||||||
| var DeleteChild = &OperationType{Type: "DELETE", NumArgs: 2, Precedence: 30, Handler: DeleteChildOperator} | var DeleteChild = &OperationType{Type: "DELETE", NumArgs: 2, Precedence: 30, Handler: DeleteChildOperator} | ||||||
| 
 | 
 | ||||||
| var Count = &OperationType{Type: "COUNT", NumArgs: 1, Precedence: 35, Handler: CountOperator} | var Count = &OperationType{Type: "COUNT", NumArgs: 1, Precedence: 40, Handler: CountOperator} | ||||||
| var Collect = &OperationType{Type: "COLLECT", NumArgs: 1, Precedence: 35, Handler: CollectOperator} | var Collect = &OperationType{Type: "COLLECT", NumArgs: 1, Precedence: 40, Handler: CollectOperator} | ||||||
| 
 | 
 | ||||||
| // var Exists = &OperationType{Type: "Length", NumArgs: 2, Precedence: 35} | // var Exists = &OperationType{Type: "Length", NumArgs: 2, Precedence: 35} | ||||||
| // filters matches if they have the existing path | // filters matches if they have the existing path | ||||||
|  | |||||||
| @ -25,6 +25,26 @@ func testExpression(expression string) (string, error) { | |||||||
| 	return formatted, nil | 	return formatted, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func TestPostFixTraverseBar(t *testing.T) { | ||||||
|  | 	var infix = "animals | collect(.)" | ||||||
|  | 	var expectedOutput = `PathKey - 'animals' | ||||||
|  | -------- | ||||||
|  | SELF | ||||||
|  | -------- | ||||||
|  | Operation - COLLECT | ||||||
|  | -------- | ||||||
|  | Operation - TRAVERSE | ||||||
|  | -------- | ||||||
|  | ` | ||||||
|  | 
 | ||||||
|  | 	actual, err := testExpression(infix) | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Error(err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	test.AssertResultComplex(t, expectedOutput, actual) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func TestPostFixArrayEquals(t *testing.T) { | func TestPostFixArrayEquals(t *testing.T) { | ||||||
| 	var infix = "animals(.== cat)" | 	var infix = "animals(.== cat)" | ||||||
| 	var expectedOutput = `PathKey - 'animals' | 	var expectedOutput = `PathKey - 'animals' | ||||||
|  | |||||||
| @ -94,8 +94,9 @@ func initLexer() (*lex.Lexer, error) { | |||||||
| 	lexer.Add([]byte("( |\t|\n|\r)+"), skip) | 	lexer.Add([]byte("( |\t|\n|\r)+"), skip) | ||||||
| 
 | 
 | ||||||
| 	lexer.Add([]byte(`"[^ "]+"`), pathToken(true)) | 	lexer.Add([]byte(`"[^ "]+"`), pathToken(true)) | ||||||
| 	lexer.Add([]byte(`[^ \.\[\(\)=]+`), pathToken(false)) | 	lexer.Add([]byte(`[^ \|\.\[\(\)=]+`), pathToken(false)) | ||||||
| 
 | 
 | ||||||
|  | 	lexer.Add([]byte(`\|`), opToken(Traverse, false)) | ||||||
| 	lexer.Add([]byte(`\.`), opToken(Traverse, false)) | 	lexer.Add([]byte(`\.`), opToken(Traverse, false)) | ||||||
| 	err := lexer.Compile() | 	err := lexer.Compile() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user