From 3cbf95d38b6f8bd17b4312371ed07e6847ff0f5c Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Thu, 21 May 2020 01:05:02 +0200 Subject: New option 'item-filter' --- internal/feed/filter/filter.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 internal/feed/filter/filter.go (limited to 'internal/feed/filter/filter.go') diff --git a/internal/feed/filter/filter.go b/internal/feed/filter/filter.go new file mode 100644 index 0000000..8ff8a97 --- /dev/null +++ b/internal/feed/filter/filter.go @@ -0,0 +1,27 @@ +package filter + +import ( + "github.com/antonmedv/expr" + "github.com/antonmedv/expr/vm" + "github.com/mmcdole/gofeed" +) + +type Filter struct { + prog *vm.Program +} + +func (f *Filter) Run(item *gofeed.Item) (bool, error) { + if res, err := expr.Run(f.prog, item); err != nil { + return false, err + } else { + return res.(bool), nil + } +} + +func New(s string) (*Filter, error) { + prog, err := expr.Compile(s, expr.AsBool(), expr.Env(gofeed.Item{})) + if err != nil { + return nil, err + } + return &Filter{prog}, nil +} -- cgit v1.2.3-70-g09d2