all repos — gomponents @ 267d40bbea6036f913c4047a6a2055b3e5d7bb96

HTML components in pure Go

Add Map function (#40) `Map` makes it easier to build lists of elements without having to iterate.

Markus Wüstenberg
commit

267d40bbea6036f913c4047a6a2055b3e5d7bb96

parent

6c8f0c235287edf7252fe239d4c9beb258c6ff01

1 file changed, 17 insertions(+), 0 deletions(-)

changed files
M gomponents.gogomponents.go
@@ -217,3 +217,20 @@ // Render must happen through a parent element created with El or a helper.
func Group(children []Node) Node { return group{children: children} } + +// Map something enumerable to a list of Nodes. +// Example: +// items := []string{"hat", "partyhat"} +// +// lis := g.Map(len(items), func(i int) g.Node { +// return g.El("li", g.Text(items[i])) +// }) +// +// list := g.El("ul", lis...) +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 +}