From 69b0da41dff1813f3939cf4ea09fbbb2d06b7719 Mon Sep 17 00:00:00 2001 From: Markus Wüstenberg Date: Thu, 19 Sep 2024 19:33:58 +0200 Subject: Drop support for Go 1.16 and Go 1.17 (#203) Fixes #184--- .github/workflows/ci.yml | 7 ------- examples/simple/simple.go | 3 --- examples/tailwindcss/tailwindcss.go | 3 --- gomponents.go | 9 +++++++++ gomponents_generic.go | 13 ------------- gomponents_generic_test.go | 34 ---------------------------------- gomponents_non_generic.go | 13 ------------- gomponents_non_generic_test.go | 34 ---------------------------------- gomponents_test.go | 22 ++++++++++++++++++++++ 9 files changed, 31 insertions(+), 107 deletions(-) delete mode 100644 gomponents_generic.go delete mode 100644 gomponents_generic_test.go delete mode 100644 gomponents_non_generic.go delete mode 100644 gomponents_non_generic_test.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cabd79c..b179ab4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,8 +20,6 @@ jobs: strategy: matrix: go: - - "1.16" - - "1.17" - "1.18" - "1.19" - "1.20" @@ -43,13 +41,8 @@ jobs: run: go build -v ./... - name: Test - if: ${{ matrix.go != '1.16' }} run: go test -v -coverprofile=coverage.txt -shuffle on ./... - - name: Test - if: ${{ matrix.go == '1.16' }} - run: go test -v -coverprofile=coverage.txt ./... - - name: Coverage uses: codecov/codecov-action@v3 diff --git a/examples/simple/simple.go b/examples/simple/simple.go index 0a7138a..20c41fb 100644 --- a/examples/simple/simple.go +++ b/examples/simple/simple.go @@ -1,6 +1,3 @@ -//go:build go1.18 -// +build go1.18 - package main import ( diff --git a/examples/tailwindcss/tailwindcss.go b/examples/tailwindcss/tailwindcss.go index 39a012e..6e92288 100644 --- a/examples/tailwindcss/tailwindcss.go +++ b/examples/tailwindcss/tailwindcss.go @@ -1,6 +1,3 @@ -//go:build go1.18 -// +build go1.18 - package main import ( diff --git a/gomponents.go b/gomponents.go index ffe8483..1a3b4ee 100644 --- a/gomponents.go +++ b/gomponents.go @@ -246,6 +246,15 @@ func Rawf(format string, a ...interface{}) Node { }) } +// Map a slice of anything to a slice of Nodes. +func Map[T any](ts []T, cb func(T) Node) []Node { + var nodes []Node + for _, t := range ts { + nodes = append(nodes, cb(t)) + } + return nodes +} + type group struct { children []Node } diff --git a/gomponents_generic.go b/gomponents_generic.go deleted file mode 100644 index 6e6500b..0000000 --- a/gomponents_generic.go +++ /dev/null @@ -1,13 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -package gomponents - -// Map a slice of anything to a slice of Nodes. -func Map[T any](ts []T, cb func(T) Node) []Node { - var nodes []Node - for _, t := range ts { - nodes = append(nodes, cb(t)) - } - return nodes -} diff --git a/gomponents_generic_test.go b/gomponents_generic_test.go deleted file mode 100644 index 0492ae3..0000000 --- a/gomponents_generic_test.go +++ /dev/null @@ -1,34 +0,0 @@ -//go:build go1.18 -// +build go1.18 - -package gomponents_test - -import ( - "os" - "testing" - - g "github.com/maragudk/gomponents" - "github.com/maragudk/gomponents/internal/assert" -) - -func TestMap(t *testing.T) { - t.Run("maps slices to nodes", func(t *testing.T) { - items := []string{"hat", "partyhat", "turtlehat"} - lis := g.Map(items, func(i string) g.Node { - return g.El("li", g.Text(i)) - }) - - list := g.El("ul", lis...) - - assert.Equal(t, ``, list) - }) -} - -func ExampleMap() { - items := []string{"party hat", "super hat"} - e := g.El("ul", g.Group(g.Map(items, func(i string) g.Node { - return g.El("li", g.Text(i)) - }))) - _ = e.Render(os.Stdout) - // Output: -} diff --git a/gomponents_non_generic.go b/gomponents_non_generic.go deleted file mode 100644 index 56570d0..0000000 --- a/gomponents_non_generic.go +++ /dev/null @@ -1,13 +0,0 @@ -//go:build !go1.18 -// +build !go1.18 - -package gomponents - -// Map something enumerable to a list of Nodes. -func Map(length int, cb func(i int) Node) []Node { - var nodes []Node - for i := 0; i < length; i++ { - nodes = append(nodes, cb(i)) - } - return nodes -} diff --git a/gomponents_non_generic_test.go b/gomponents_non_generic_test.go deleted file mode 100644 index 4186808..0000000 --- a/gomponents_non_generic_test.go +++ /dev/null @@ -1,34 +0,0 @@ -//go:build !go1.18 -// +build !go1.18 - -package gomponents_test - -import ( - "os" - "testing" - - g "github.com/maragudk/gomponents" - "github.com/maragudk/gomponents/internal/assert" -) - -func TestMap(t *testing.T) { - t.Run("maps slices to nodes", func(t *testing.T) { - items := []string{"hat", "partyhat", "turtlehat"} - lis := g.Map(len(items), func(i int) g.Node { - return g.El("li", g.Text(items[i])) - }) - - list := g.El("ul", lis...) - - assert.Equal(t, ``, list) - }) -} - -func ExampleMap() { - items := []string{"party hat", "super hat"} - e := g.El("ul", g.Group(g.Map(len(items), func(i int) g.Node { - return g.El("li", g.Text(items[i])) - }))) - _ = e.Render(os.Stdout) - // Output: -} diff --git a/gomponents_test.go b/gomponents_test.go index f3e81b0..27fb534 100644 --- a/gomponents_test.go +++ b/gomponents_test.go @@ -227,6 +227,28 @@ func ExampleRawf() { // Output: > normal hats. } +func TestMap(t *testing.T) { + t.Run("maps slices to nodes", func(t *testing.T) { + items := []string{"hat", "partyhat", "turtlehat"} + lis := g.Map(items, func(i string) g.Node { + return g.El("li", g.Text(i)) + }) + + list := g.El("ul", lis...) + + assert.Equal(t, ``, list) + }) +} + +func ExampleMap() { + items := []string{"party hat", "super hat"} + e := g.El("ul", g.Group(g.Map(items, func(i string) g.Node { + return g.El("li", g.Text(i)) + }))) + _ = e.Render(os.Stdout) + // Output: +} + func TestGroup(t *testing.T) { t.Run("groups multiple nodes into one", func(t *testing.T) { children := []g.Node{g.El("br", g.Attr("id", "hat")), g.El("hr")} -- cgit 1.4.1