// EvalPredicate - Evaluate a given expression as a boolean predicate against a set of fields and tags func EvalPredicate(se stateful.Expression, scopePool stateful.ScopePool, now time.Time, fields models.Fields, tags models.Tags) (bool, error) { vars := scopePool.Get() defer scopePool.Put(vars) err := fillScope(vars, scopePool.ReferenceVariables(), now, fields, tags) if err != nil { return false, err } b, err := se.EvalBool(vars) if err != nil { return false, err } return b, nil }