mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-11-04 12:35:33 +00:00 
			
		
		
		
	- The tools directory ideally should not contain source code - Removes double vendoring of packagages - Makes it easer to hook the build into the top-level Makefile Eventually, the plugin should be moved to the infrakit repo. Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package jmespath
 | 
						|
 | 
						|
import "strconv"
 | 
						|
 | 
						|
// JmesPath is the epresentation of a compiled JMES path query. A JmesPath is
 | 
						|
// safe for concurrent use by multiple goroutines.
 | 
						|
type JMESPath struct {
 | 
						|
	ast  ASTNode
 | 
						|
	intr *treeInterpreter
 | 
						|
}
 | 
						|
 | 
						|
// Compile parses a JMESPath expression and returns, if successful, a JMESPath
 | 
						|
// object that can be used to match against data.
 | 
						|
func Compile(expression string) (*JMESPath, error) {
 | 
						|
	parser := NewParser()
 | 
						|
	ast, err := parser.Parse(expression)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	jmespath := &JMESPath{ast: ast, intr: newInterpreter()}
 | 
						|
	return jmespath, nil
 | 
						|
}
 | 
						|
 | 
						|
// MustCompile is like Compile but panics if the expression cannot be parsed.
 | 
						|
// It simplifies safe initialization of global variables holding compiled
 | 
						|
// JMESPaths.
 | 
						|
func MustCompile(expression string) *JMESPath {
 | 
						|
	jmespath, err := Compile(expression)
 | 
						|
	if err != nil {
 | 
						|
		panic(`jmespath: Compile(` + strconv.Quote(expression) + `): ` + err.Error())
 | 
						|
	}
 | 
						|
	return jmespath
 | 
						|
}
 | 
						|
 | 
						|
// Search evaluates a JMESPath expression against input data and returns the result.
 | 
						|
func (jp *JMESPath) Search(data interface{}) (interface{}, error) {
 | 
						|
	return jp.intr.Execute(jp.ast, data)
 | 
						|
}
 | 
						|
 | 
						|
// Search evaluates a JMESPath expression against input data and returns the result.
 | 
						|
func Search(expression string, data interface{}) (interface{}, error) {
 | 
						|
	intr := newInterpreter()
 | 
						|
	parser := NewParser()
 | 
						|
	ast, err := parser.Parse(expression)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return intr.Execute(ast, data)
 | 
						|
}
 |