From 58b995842d9bac40c5b32615d3a7026defe5654f Mon Sep 17 00:00:00 2001 From: 13413j1j13j5315n13 <70957358+13413j1j13j5315n13@users.noreply.github.com> Date: Sun, 31 Mar 2024 02:57:42 +0200 Subject: [PATCH] Return nip.Rule struct from Evaluate function in itemfilter (#14) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Return Rule from –Evaluate in itemfilter * Return Rule as the first argument --- cmd/itemwatcher/internal/watcher.go | 3 ++- pkg/itemfilter/itemfilter.go | 8 ++++---- pkg/itemfilter/itemfilter_test.go | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/itemwatcher/internal/watcher.go b/cmd/itemwatcher/internal/watcher.go index ee37826..dd4cf9d 100644 --- a/cmd/itemwatcher/internal/watcher.go +++ b/cmd/itemwatcher/internal/watcher.go @@ -55,7 +55,8 @@ func (w *Watcher) Start(ctx context.Context) error { d := w.gr.GetData() for _, i := range d.Items.ByLocation(item.LocationGround) { - if !itemfilter.Evaluate(i, w.rules) { + _, match := itemfilter.Evaluate(i, w.rules) + if !match { continue } diff --git a/pkg/itemfilter/itemfilter.go b/pkg/itemfilter/itemfilter.go index ef4eae4..64901b4 100644 --- a/pkg/itemfilter/itemfilter.go +++ b/pkg/itemfilter/itemfilter.go @@ -8,7 +8,7 @@ import ( "github.com/hectorgimenez/d2go/pkg/nip" ) -func Evaluate(i data.Item, rules []nip.Rule) bool { +func Evaluate(i data.Item, rules []nip.Rule) (nip.Rule, bool) { for _, r := range rules { if !evaluateGroups(i, r.Properties, checkProperty) { // Properties not matching, skipping @@ -17,15 +17,15 @@ func Evaluate(i data.Item, rules []nip.Rule) bool { // We can not check stats, item is not identified, but properties matching if !i.Identified { - return true + return nip.Rule{}, true } if evaluateGroups(i, r.Stats, checkStat) { - return true + return r, true } } - return false + return nip.Rule{}, false } func evaluateGroups(i data.Item, groups []nip.Group, evalFunc func(i data.Item, prop nip.Comparable) bool) bool { diff --git a/pkg/itemfilter/itemfilter_test.go b/pkg/itemfilter/itemfilter_test.go index dfb9633..1c6ddfd 100644 --- a/pkg/itemfilter/itemfilter_test.go +++ b/pkg/itemfilter/itemfilter_test.go @@ -37,7 +37,7 @@ func TestEvaluate(t *testing.T) { rule, err := nip.ParseLine(tt.args.nipRule) require.NoError(t, err) - if got := Evaluate(tt.args.i, []nip.Rule{rule}); got != tt.want { + if _, got := Evaluate(tt.args.i, []nip.Rule{rule}); got != tt.want { t.Errorf("Evaluate() = %v, want %v", got, tt.want) } })