From 54f45e4f19981f7b9d49077f8612cc32b0087337 Mon Sep 17 00:00:00 2001 From: Andrew Chubatiuk Date: Sat, 18 Nov 2023 19:34:43 +0200 Subject: [PATCH] made evaluate method exported --- bexpr.go | 2 +- evaluate.go | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bexpr.go b/bexpr.go index c89dc67..58483d4 100644 --- a/bexpr.go +++ b/bexpr.go @@ -60,5 +60,5 @@ func (eval *Evaluator) Evaluate(datum interface{}) (bool, error) { opts = append(opts, WithUnknownValue(*eval.unknownVal)) } - return evaluate(eval.ast, datum, opts...) + return Evaluate(eval.ast, datum, opts...) } diff --git a/evaluate.go b/evaluate.go index 47165a6..ef8c4f2 100644 --- a/evaluate.go +++ b/evaluate.go @@ -437,7 +437,7 @@ func evaluateCollectionExpression(expression *grammar.CollectionExpression, datu } } - result, err := evaluate(expression.Inner, datum, innerOpt...) + result, err := Evaluate(expression.Inner, datum, innerOpt...) if err != nil { return false, err } @@ -453,31 +453,31 @@ func evaluateCollectionExpression(expression *grammar.CollectionExpression, datu } } -func evaluate(ast grammar.Expression, datum interface{}, opt ...Option) (bool, error) { +func Evaluate(ast grammar.Expression, datum interface{}, opt ...Option) (bool, error) { switch node := ast.(type) { case *grammar.UnaryExpression: switch node.Operator { case grammar.UnaryOpNot: - result, err := evaluate(node.Operand, datum, opt...) + result, err := Evaluate(node.Operand, datum, opt...) return !result, err } case *grammar.BinaryExpression: switch node.Operator { case grammar.BinaryOpAnd: - result, err := evaluate(node.Left, datum, opt...) + result, err := Evaluate(node.Left, datum, opt...) if err != nil || !result { return result, err } - return evaluate(node.Right, datum, opt...) + return Evaluate(node.Right, datum, opt...) case grammar.BinaryOpOr: - result, err := evaluate(node.Left, datum, opt...) + result, err := Evaluate(node.Left, datum, opt...) if err != nil || result { return result, err } - return evaluate(node.Right, datum, opt...) + return Evaluate(node.Right, datum, opt...) } case *grammar.MatchExpression: return evaluateMatchExpression(node, datum, opt...)