From 942f9cc0a8ace16bbce3b4386c2da0f187d6eb7b Mon Sep 17 00:00:00 2001 From: ayn2op Date: Fri, 30 Aug 2024 13:24:36 +0530 Subject: [PATCH] refactor: move itertools --- cmd/guilds_tree.go | 2 +- go.mod | 1 - go.sum | 4 ---- pkg/itertools/filter.go | 15 +++++++++++++++ pkg/itertools/map.go | 13 +++++++++++++ 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 pkg/itertools/filter.go create mode 100644 pkg/itertools/map.go diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index 2aa14cb..871dfc2 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -7,7 +7,7 @@ import ( "sort" "strings" - "github.com/ayn2op/go-itertools" + "github.com/ayn2op/discordo/pkg/itertools" "github.com/diamondburned/arikawa/v3/discord" "github.com/diamondburned/arikawa/v3/gateway" "github.com/gdamore/tcell/v2" diff --git a/go.mod b/go.mod index c060196..4153974 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.23.0 require ( github.com/BurntSushi/toml v1.4.0 github.com/atotto/clipboard v0.1.4 - github.com/ayn2op/go-itertools v0.0.0-20240820180307-e12e136d577b github.com/diamondburned/arikawa/v3 v3.4.0 github.com/gdamore/tcell/v2 v2.7.4 github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223 diff --git a/go.sum b/go.sum index 1bf1de3..1a76a6d 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,6 @@ github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4u github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/ayn2op/go-itertools v0.0.0-20240820180307-e12e136d577b h1:TPJYmEtguvPOZLqxxV2c4gm9yyDfjS2mPxFW1YeXNFE= -github.com/ayn2op/go-itertools v0.0.0-20240820180307-e12e136d577b/go.mod h1:uYHKkErkb+ZyQKE4OjqqVpx9/MskFvTem7JhJk/86To= github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -30,8 +28,6 @@ github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rivo/tview v0.0.0-20240807205129-e4c497cc59ed h1:bd91xrd1ECzkEJ4XttUJEiyyGBHQdaOmXVEffJbAm6M= -github.com/rivo/tview v0.0.0-20240807205129-e4c497cc59ed/go.mod h1:02iFIz7K/A9jGCvrizLPvoqr4cEIx7q54RH5Qudkrss= github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223 h1:N+DggyldbUDqFlk0b8JeRjB9zGpmQ8wiKpq+VBbzRso= github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223/go.mod h1:02iFIz7K/A9jGCvrizLPvoqr4cEIx7q54RH5Qudkrss= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/pkg/itertools/filter.go b/pkg/itertools/filter.go new file mode 100644 index 0000000..fa04471 --- /dev/null +++ b/pkg/itertools/filter.go @@ -0,0 +1,15 @@ +package itertools + +import "iter" + +func Filter[I any](in iter.Seq[I], predicate func(I) bool) iter.Seq[I] { + return func(yield func(I) bool) { + for i := range in { + if predicate(i) { + if !yield(i) { + return + } + } + } + } +} diff --git a/pkg/itertools/map.go b/pkg/itertools/map.go new file mode 100644 index 0000000..8a03c2b --- /dev/null +++ b/pkg/itertools/map.go @@ -0,0 +1,13 @@ +package itertools + +import "iter" + +func Map[I, O any](in iter.Seq[I], f func(I) O) iter.Seq[O] { + return func(yield func(O) bool) { + for i := range in { + if !yield(f(i)) { + return + } + } + } +}