+++ /dev/null
-package filter
-
-import "fmt"
-
-type expr interface {
- String() string
-}
-
-type binaryExpr struct {
- op *binaryOp
- l, r expr
-}
-
-func (e binaryExpr) String() string {
- return e.l.String() + " " + e.op.name + " " + e.r.String()
-}
-
-type attrExpr struct {
- attr string
-}
-
-func (e attrExpr) String() string {
- return e.attr
-}
-
-type selectorExpr struct {
- ident string
- objExpr expr
-}
-
-func (e selectorExpr) String() string {
- return e.objExpr.String() + "." + e.ident
-}
-
-type parenExpr struct {
- inner expr
-}
-
-func (e parenExpr) String() string {
- return "(" + e.inner.String() + ")"
-}
-
-type valueExpr struct {
- typ token
- value string
-}
-
-func (e valueExpr) String() string {
- return e.value
-}
-
-type envExpr struct {
- ident string
- expr expr
-}
-
-func (e envExpr) String() string {
- return e.ident + "(" + e.expr.String() + ")"
-}
-
-type placeholderExpr struct {
- num int
-}
-
-func (e placeholderExpr) String() string {
- return fmt.Sprintf("$%d", e.num)
-}
-
-// Type defines the value types in filter expressions.
-type Type int
-
-//defines the value types in filter expressions.
-const (
- Any Type = iota
- Bool
- String
- Integer
- Object
-)
-
-func (t Type) String() string {
- switch t {
- case Any:
- return "any"
- case Bool:
- return "bool"
- case String:
- return "string"
- case Integer:
- return "integer"
- case Object:
- return "object"
- }
- panic("unknown type")
-}