From c0d7adb1a1b28b6b1de9ccd95d4963a8342ccdbc Mon Sep 17 00:00:00 2001 From: ayyansea Date: Fri, 15 Nov 2024 23:15:00 +0300 Subject: feat: add Filters --- cmd/filter.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 cmd/filter.go (limited to 'cmd/filter.go') diff --git a/cmd/filter.go b/cmd/filter.go new file mode 100644 index 0000000..9d8ccac --- /dev/null +++ b/cmd/filter.go @@ -0,0 +1,49 @@ +package cmd + +import ( + "fmt" +) + +type Filter struct { + name string + action func(string) string + subfilters []Filter +} + +type Greeter interface { + Greet() +} + +type Filterer interface { + Greeter + Filter(string) string +} + +func (f Filter) Greet() { + subfilterCount := len(f.subfilters) + + fmt.Printf("I am a filter and my name is %v\n", f.name) + if subfilterCount > 0 { + fmt.Println("My subfilters are:") + + for _, subfilter := range f.subfilters { + fmt.Printf("- %v\n", subfilter.name) + } + } +} + +func (f Filter) Filter(token string) (modifiedToken string) { + subfilterCount := len(f.subfilters) + modifiedToken = token + + if subfilterCount > 0 { + for _, subfilter := range f.subfilters { + modifiedToken = subfilter.action(modifiedToken) + } + + return modifiedToken + } + + modifiedToken = f.action(token) + return modifiedToken +} -- cgit v1.2.3