func (b *JoinedCondition) Evaluate(f *File) (bool, error) {
	l, err := b.LeftCond.Evaluate(f)
	if err != nil {
		return false, err
	}
	r, err := b.RightCond.Evaluate(f)
	if err != nil {
		return false, err
	}

	switch b.Op {
	case And:
		return l && r, nil
	case Or:
		return l || r, nil
	case Xor:
		return (l || r) && !(l && r), nil
	default:
		return false, fmt.Errorf("unknown operator: %s", b.Op)
	}
}
// Evaluate evaluates the condition.
Evaluate evaluates the condition.
// Evaluate evaluates the condition .
func (b *JoinedCondition) Evaluate(f *File) (bool, error) {
	l, err := b.LeftCond.Evaluate(f)
	if err != nil {
		return false, err
	}
	r, err := b.RightCond.Evaluate(f)
	if err != nil {
		return false, err
	}
	switch b.Op {
	case And:
		return l && r, nil
	case Or:
		return l || r, nil
	case Xor:
		return (l || r) && !(l && r), nil
	default:
		return false, fmt.Errorf("unknown operator: %s", b.Op)
	}
}
func ( b * JoinedCondition ) Evaluate ( f * File ) ( bool , error ) { l , err := b . LeftCond . Evaluate ( f ) if err != nil { return false , err } r , err := b . RightCond . Evaluate ( f ) if err != nil { return false , err } switch b . Op { case And : return l && r , nil case Or : return l || r , nil case Xor : return ( l || r ) && ! ( l && r ) , nil default : return false , fmt . Errorf ( " " , b . Op ) } }
Evaluate evaluates the condition.
Evaluate evaluates the condition .