1
0
gomponents/gomponents_non_generic_test.go
Markus Wüstenberg f387a71230
Add generic Map implementation (#108)
Instead of waiting for a good time to switch the `Map` implementation,
I've decided to just offer two implementations: one for Go versions
before 1.18, and one for 1.18 and onwards. This is achieved using build
tags in the source files.

This is obviously a breaking change for consumers of this library that
use Go 1.18 and onwards.

See #88
2022-09-22 09:41:06 +02:00

35 lines
784 B
Go

//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, `<ul><li>hat</li><li>partyhat</li><li>turtlehat</li></ul>`, 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: <ul><li>party hat</li><li>super hat</li></ul>
}